diff --git a/cmd/operator/operator.go b/cmd/operator/operator.go index 0e52e3e58f..1fb1b40401 100644 --- a/cmd/operator/operator.go +++ b/cmd/operator/operator.go @@ -32,6 +32,7 @@ import ( "github.com/libopenstorage/operator/drivers/storage" _ "github.com/libopenstorage/operator/drivers/storage/portworx" "github.com/libopenstorage/operator/pkg/apis" + "github.com/libopenstorage/operator/pkg/controller/portworxdiag" "github.com/libopenstorage/operator/pkg/controller/storagecluster" "github.com/libopenstorage/operator/pkg/controller/storagenode" _ "github.com/libopenstorage/operator/pkg/log" @@ -52,6 +53,7 @@ const ( flagEnableProfiling = "pprof" flagDisableCacheFor = "disable-cache-for" defaultLockObjectName = "openstorage-operator" + flagEnableDiagController = "diag-controller" defaultResyncPeriod = 30 * time.Second defaultMetricsPort = 8999 defaultPprofPort = 6060 @@ -110,6 +112,10 @@ func main() { Name: flagEnableProfiling, Usage: "Enable Portworx Operator profiling using pprof (default: false)", }, + cli.BoolFlag{ + Name: flagEnableDiagController, + Usage: "Enable Portworx Diag Controller (default: false)", + }, cli.StringFlag{ Name: flagDisableCacheFor, Usage: "Comma separated object types to disable from cache to reduce memory usage, for example \"Pod,ConfigMap,Deployment,PersistentVolume\"", @@ -146,6 +152,8 @@ func run(c *cli.Context) { }() } + diagControllerEnabled := c.Bool(flagEnableDiagController) + config, err := rest.InClusterConfig() if err != nil { log.Fatalf("Error getting cluster config: %v", err) @@ -183,6 +191,15 @@ func run(c *cli.Context) { log.Fatalf("Error registering CRD's for StorageNode controller: %v", err) } + var diagController portworxdiag.Controller + if diagControllerEnabled { + diagController = portworxdiag.Controller{Driver: d} + err = diagController.RegisterCRD() + if err != nil { + log.Fatalf("Error registering CRDs for PortworxDiag controller: %v", err) + } + } + // TODO: Don't move createManager above register CRD section. This part will be refactored because of a bug, // similar to https://github.com/kubernetes-sigs/controller-runtime/issues/321 mgr, err := createManager(c, config) @@ -256,6 +273,12 @@ func run(c *cli.Context) { log.Fatalf("Error initializing storage node controller: %v", err) } + if diagControllerEnabled { + if err := diagController.Init(mgr); err != nil { + log.Fatalf("Error initializing portworx diag controller: %v", err) + } + } + if err := storageClusterController.StartWatch(); err != nil { log.Fatalf("Error start watch on storage cluster controller: %v", err) } @@ -264,6 +287,12 @@ func run(c *cli.Context) { log.Fatalf("Error starting watch on storage node controller: %v", err) } + if diagControllerEnabled { + if err := diagController.StartWatch(); err != nil { + log.Fatalf("Error starting watch on portworx diag controller: %v", err) + } + } + if c.BoolT(flagMigration) { log.Info("Migration is enabled") migrationHandler := migration.New(&storageClusterController) diff --git a/deploy/crds/core_v1_storagecluster_crd.yaml b/deploy/crds/core_v1_storagecluster_crd.yaml index c804c178e5..491d1d761c 100644 --- a/deploy/crds/core_v1_storagecluster_crd.yaml +++ b/deploy/crds/core_v1_storagecluster_crd.yaml @@ -154,6 +154,16 @@ spec: their place. Once the new pods are available, it then proceeds onto other StorageCluster pods, thus ensuring that at least 70% of original number of StorageCluster pods are available at all times during the update. + disruption: + type: object + description: >- + The default behavior is non-disruptive upgrades. This setting disables the default + non-disruptive upgrades and reverts to the previous behavior of upgrading nodes in + parallel without worrying about disruption. + properties: + allow: + type: boolean + description: Flag indicates whether updates are non-disruptive or disruptive. deleteStrategy: type: object description: Delete strategy to uninstall and wipe the storage cluster. diff --git a/deploy/crds/portworx.io_portworxdiags.yaml b/deploy/crds/portworx.io_portworxdiags.yaml new file mode 100644 index 0000000000..74d25f7716 --- /dev/null +++ b/deploy/crds/portworx.io_portworxdiags.yaml @@ -0,0 +1,144 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.11.3 + creationTimestamp: null + name: portworxdiags.portworx.io +spec: + group: portworx.io + names: + kind: PortworxDiag + listKind: PortworxDiagList + plural: portworxdiags + shortNames: + - pxdiag + singular: portworxdiag + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Status of the Portworx diag collection. + jsonPath: .status.phase + name: Status + type: string + - description: Age of the diag resource. + jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: PortworxDiag represents a portworx diag + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: PortworxDiagSpec is the spec used to define a portworx diag. + properties: + portworx: + description: Configuration for diags collection of the main Portworx + component. + properties: + generateCore: + description: Generates the core dump as well when collecting the + diags. Could be useful to analyze the current state of the system. + type: boolean + nodes: + description: Nodes for which the diags need to be collected. If + a volume selector is also specified, then both the selectors + will be honored and the selected nodes will be a union of both + selectors. + properties: + all: + description: Select all nodes in the Portworx cluster. If + set to true, other selectors are ignored. + type: boolean + ids: + description: Ids of the nodes to be selected. + items: + type: string + type: array + labels: + additionalProperties: + type: string + description: Labels of the volumes to be selected. + type: object + type: object + volumes: + description: Volumes for which the diags need to be collected. + properties: + ids: + description: Ids of the volumes to be selected. + items: + type: string + type: array + labels: + additionalProperties: + type: string + description: Labels of the volumes to be selected. + type: object + type: object + collectPodLogs: + description: Flag indicating whether we want to collect pod logs too or not. + type: boolean + type: object + type: object + status: + description: PortworxDiagStatus is the status of a portworx diag. + properties: + clusterUuid: + description: UUID of the Portworx cluster. This is useful to find + the uploaded diags. + type: string + message: + description: Optional message used to give the reason for any failure. + type: string + nodes: + description: Status of the diags collection from all the selected + nodes. + items: + description: Status of the diags collection from a single node. + properties: + message: + description: Optional message used to give the reason for any + failure. + type: string + nodeId: + description: ID of the node for which the diag status is reported. + type: string + status: + description: One word status of the diags collection on the + node. + type: string + type: object + type: array + collectPodLogs: + description: Status of the diags collection from all the pods with label 'portworx'. + properties: + message: + description: Optional message used to give the reason for any failure. + type: string + status: + description: One word status of the diags collection on the pod. + type: string + type: object + phase: + description: One word status of the entire diags collection job. + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} diff --git a/drivers/storage/portworx/component/disruption_budget.go b/drivers/storage/portworx/component/disruption_budget.go index a61803e52b..a37906d446 100644 --- a/drivers/storage/portworx/component/disruption_budget.go +++ b/drivers/storage/portworx/component/disruption_budget.go @@ -1,16 +1,20 @@ package component import ( + "context" "fmt" "math" "strconv" + "strings" "github.com/hashicorp/go-version" + "github.com/libopenstorage/openstorage/api" "github.com/sirupsen/logrus" "google.golang.org/grpc" policyv1 "k8s.io/api/policy/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" + utilerrors "k8s.io/apimachinery/pkg/util/errors" "k8s.io/apimachinery/pkg/util/intstr" "k8s.io/client-go/tools/record" "sigs.k8s.io/controller-runtime/pkg/client" @@ -77,9 +81,59 @@ func (c *disruptionBudget) Reconcile(cluster *corev1.StorageCluster) error { if err := c.createKVDBPodDisruptionBudget(cluster, ownerRef); err != nil { return err } - if err := c.createPortworxPodDisruptionBudget(cluster, ownerRef); err != nil { + // Create node PDB only if parallel upgrade is supported + var err error + c.sdkConn, err = pxutil.GetPortworxConn(c.sdkConn, c.k8sClient, cluster.Namespace) + if err != nil { + return err + } + + // Get list of portworx storage nodes + nodeClient := api.NewOpenStorageNodeClient(c.sdkConn) + ctx, err := pxutil.SetupContextWithToken(context.Background(), cluster, c.k8sClient) + if err != nil { return err } + nodeEnumerateResponse, err := nodeClient.EnumerateWithFilters( + ctx, + &api.SdkNodeEnumerateWithFiltersRequest{}, + ) + if err != nil { + return fmt.Errorf("failed to enumerate nodes: %v", err) + } + if len(nodeEnumerateResponse.Nodes) == 0 { + logrus.Warnf("Cannot create/update storage PodDisruptionBudget as there are no storage nodes") + return nil + } + + if pxutil.ClusterSupportsParallelUpgrade(nodeEnumerateResponse.Nodes) { + // Get the list of k8s nodes that are part of the current cluster + k8sNodeList := &v1.NodeList{} + err = c.k8sClient.List(context.TODO(), k8sNodeList) + if err != nil { + return err + } + if err := c.createPortworxNodePodDisruptionBudget(cluster, ownerRef, nodeEnumerateResponse, k8sNodeList); err != nil { + return err + } + if err := c.deleteClusterPodDisruptionBudget(cluster, ownerRef); err != nil { + logrus.Warnf("failed to delete cluster poddisruptionbudget if exists: %v", err) + } + if err := c.deletePortworxNodePodDisruptionBudget(cluster, ownerRef, nodeEnumerateResponse, k8sNodeList); err != nil { + return err + } + if err := c.updateMinAvailableForNodePDB(cluster, ownerRef, nodeEnumerateResponse, k8sNodeList); err != nil { + return err + } + } else { + if err := c.createPortworxPodDisruptionBudget(cluster, ownerRef, nodeEnumerateResponse); err != nil { + return err + } + if err := c.deleteAllNodePodDisruptionBudgets(cluster, ownerRef); err != nil { + logrus.Warnf("failed to delete node poddisruptionbudgets if exist: %v", err) + } + } + return nil } @@ -106,6 +160,7 @@ func (c *disruptionBudget) MarkDeleted() {} func (c *disruptionBudget) createPortworxPodDisruptionBudget( cluster *corev1.StorageCluster, ownerRef *metav1.OwnerReference, + nodeEnumerateResponse *api.SdkNodeEnumerateWithFiltersResponse, ) error { userProvidedMinValue, err := pxutil.MinAvailableForStoragePDB(cluster) if err != nil { @@ -114,12 +169,8 @@ func (c *disruptionBudget) createPortworxPodDisruptionBudget( } var minAvailable int - c.sdkConn, err = pxutil.GetPortworxConn(c.sdkConn, c.k8sClient, cluster.Namespace) - if err != nil { - return err - } - storageNodesCount, err := pxutil.CountStorageNodes(cluster, c.sdkConn, c.k8sClient) + storageNodesCount, err := pxutil.CountStorageNodes(cluster, c.sdkConn, c.k8sClient, nodeEnumerateResponse) if err != nil { c.closeSdkConn() return err @@ -178,6 +229,73 @@ func (c *disruptionBudget) createPortworxPodDisruptionBudget( return err } +func (c *disruptionBudget) createPortworxNodePodDisruptionBudget( + cluster *corev1.StorageCluster, + ownerRef *metav1.OwnerReference, + nodeEnumerateResponse *api.SdkNodeEnumerateWithFiltersResponse, + k8sNodeList *v1.NodeList, +) error { + nodesNeedingPDB, err := pxutil.NodesNeedingPDB(c.k8sClient, nodeEnumerateResponse, k8sNodeList) + if err != nil { + return err + } + errors := []error{} + for _, node := range nodesNeedingPDB { + minAvailable := intstr.FromInt(1) + pdbName := "px-" + node + pdb := &policyv1.PodDisruptionBudget{ + ObjectMeta: metav1.ObjectMeta{ + Name: pdbName, + Namespace: cluster.Namespace, + OwnerReferences: []metav1.OwnerReference{*ownerRef}, + }, + Spec: policyv1.PodDisruptionBudgetSpec{ + MinAvailable: &minAvailable, + Selector: &metav1.LabelSelector{ + MatchLabels: map[string]string{ + constants.LabelKeyClusterName: cluster.Name, + constants.OperatorLabelNodeNameKey: node, + }, + }, + }, + } + err = k8sutil.CreateOrUpdatePodDisruptionBudget(c.k8sClient, pdb, ownerRef) + if err != nil { + logrus.Warnf("Failed to create PDB for node %s: %v", node, err) + errors = append(errors, err) + } + } + return utilerrors.NewAggregate(errors) + +} + +// Delete node pod disruption budget when kubertetes is not part of cluster or portworx does not run on it +func (c *disruptionBudget) deletePortworxNodePodDisruptionBudget( + cluster *corev1.StorageCluster, + ownerRef *metav1.OwnerReference, + nodeEnumerateResponse *api.SdkNodeEnumerateWithFiltersResponse, + k8sNodeList *v1.NodeList, +) error { + nodesToDeletePDB, err := pxutil.NodesToDeletePDB(c.k8sClient, nodeEnumerateResponse, k8sNodeList) + if err != nil { + return err + } + errors := []error{} + + for _, node := range nodesToDeletePDB { + pdbName := "px-" + node + err = k8sutil.DeletePodDisruptionBudget( + c.k8sClient, pdbName, + cluster.Namespace, *ownerRef, + ) + if err != nil { + logrus.Warnf("Failed to delete PDB for node %s: %v", node, err) + errors = append(errors, err) + } + } + return utilerrors.NewAggregate(errors) +} + func (c *disruptionBudget) createKVDBPodDisruptionBudget( cluster *corev1.StorageCluster, ownerRef *metav1.OwnerReference, @@ -186,7 +304,6 @@ func (c *disruptionBudget) createKVDBPodDisruptionBudget( if cluster.Spec.Kvdb != nil && !cluster.Spec.Kvdb.Internal { return nil } - clusterSize := kvdbClusterSize(cluster) minAvailable := intstr.FromInt(clusterSize - 1) pdb := &policyv1.PodDisruptionBudget{ @@ -262,3 +379,129 @@ func RegisterDisruptionBudgetComponent() { func init() { RegisterDisruptionBudgetComponent() } + +func (c *disruptionBudget) updateMinAvailableForNodePDB(cluster *corev1.StorageCluster, + ownerRef *metav1.OwnerReference, + nodeEnumerateResponse *api.SdkNodeEnumerateWithFiltersResponse, + k8sNodeList *v1.NodeList, +) error { + + // GetNodesToUpgrade returns list of nodes that can be upgraded in parallel and the map of px node to k8s node name, number of nodes with PDB 0 + down nodes + // In the case when non disruptive upgrade is disabled, it returns all cordoned nodes which aren't already selected for the upgrade + nodesToUpgrade, cordonedPxNodesMap, numPxNodesDown, err := pxutil.GetNodesToUpgrade(cluster, nodeEnumerateResponse, k8sNodeList, c.k8sClient, c.sdkConn) + if err != nil { + return err + } + // Return if there are no nodes to upgrade + if len(nodesToUpgrade) == 0 { + return nil + } + + // If user has mentioned minimum nodes that need to be running, then honor that value + storageNodesCount, err := pxutil.CountStorageNodes(cluster, c.sdkConn, c.k8sClient, nodeEnumerateResponse) + if err != nil { + c.closeSdkConn() + return err + } + userProvidedMinValue, err := pxutil.MinAvailableForStoragePDB(cluster) + if err != nil { + logrus.Warnf("Invalid value for annotation %s: %v", pxutil.AnnotationStoragePodDisruptionBudget, err) + userProvidedMinValue = -2 + } + + // Calculate the minimum number of nodes that should be available + quorumValue := int(math.Floor(float64(storageNodesCount)/2) + 1) + calculatedMinAvailable := quorumValue + // When non disruptive upgrades is disabled + if cluster.Annotations != nil && cluster.Annotations[pxutil.AnnotationsDisableNonDisruptiveUpgrade] == "true" { + if cluster.Annotations[pxutil.AnnotationStoragePodDisruptionBudget] == "" { + calculatedMinAvailable = storageNodesCount - 1 + } else if userProvidedMinValue < quorumValue || userProvidedMinValue >= storageNodesCount { + calculatedMinAvailable = storageNodesCount - 1 + // Log an error only if this is the first time we encounter an invalid value + if userProvidedMinValue != c.annotatedMinAvailable { + errmsg := fmt.Sprintf("Invalid minAvailable annotation value for storage pod disruption budget. Using default value: %d", calculatedMinAvailable) + c.recorder.Event(cluster, v1.EventTypeWarning, util.InvalidMinAvailable, errmsg) + } + } else if userProvidedMinValue >= quorumValue && userProvidedMinValue < storageNodesCount { + calculatedMinAvailable = userProvidedMinValue + } + } else { + // When non disruptive upgrades is enabled + if userProvidedMinValue >= storageNodesCount && userProvidedMinValue != c.annotatedMinAvailable { + errmsg := fmt.Sprintf("Invalid minAvailable annotation value for storage pod disruption budget. Using default value: %d", calculatedMinAvailable) + c.recorder.Event(cluster, v1.EventTypeWarning, util.InvalidMinAvailable, errmsg) + } else if userProvidedMinValue >= quorumValue && userProvidedMinValue < storageNodesCount { + calculatedMinAvailable = userProvidedMinValue + } + } + c.annotatedMinAvailable = userProvidedMinValue + downNodesCount := numPxNodesDown + // Update minAvailable to 0 for nodes in nodesToUpgrade + for _, node := range nodesToUpgrade { + // Ensure that portworx quorum or valid minAvailable provided by user is always maintained + maxUnavailable := storageNodesCount - calculatedMinAvailable + if downNodesCount >= maxUnavailable { + logrus.Infof("Number of down PX nodes: %d, is equal to or exceeds allowed maximum: %d. Total storage nodes: %d", downNodesCount, maxUnavailable, storageNodesCount) + break + } + k8sNode := cordonedPxNodesMap[node] + pdbName := "px-" + k8sNode + minAvailable := intstr.FromInt(0) + pdb := &policyv1.PodDisruptionBudget{ + ObjectMeta: metav1.ObjectMeta{ + Name: pdbName, + Namespace: cluster.Namespace, + OwnerReferences: []metav1.OwnerReference{*ownerRef}, + }, + Spec: policyv1.PodDisruptionBudgetSpec{ + MinAvailable: &minAvailable, + Selector: &metav1.LabelSelector{ + MatchLabels: map[string]string{ + constants.LabelKeyClusterName: cluster.Name, + constants.OperatorLabelNodeNameKey: k8sNode, + }, + }, + }, + } + err = k8sutil.CreateOrUpdatePodDisruptionBudget(c.k8sClient, pdb, ownerRef) + if err != nil { + logrus.Warnf("Failed to update PDB for node %s: %v", node, err) + } else { + downNodesCount++ + } + } + return nil + +} + +func (c *disruptionBudget) deleteClusterPodDisruptionBudget(cluster *corev1.StorageCluster, ownerRef *metav1.OwnerReference) error { + + err := k8sutil.DeletePodDisruptionBudget(c.k8sClient, StoragePodDisruptionBudgetName, cluster.Namespace, *ownerRef) + if err != nil { + logrus.Warnf("Failed to delete cluster PDB %s: %v", StoragePodDisruptionBudgetName, err) + return err + } + + return nil +} + +func (c *disruptionBudget) deleteAllNodePodDisruptionBudgets(cluster *corev1.StorageCluster, ownerRef *metav1.OwnerReference) error { + errors := []error{} + // Get the list of poddisruptionbudgets + pdbList := &policyv1.PodDisruptionBudgetList{} + err := c.k8sClient.List(context.TODO(), pdbList, client.InNamespace(cluster.Namespace)) + if err != nil { + logrus.Warnf("failed to list poddisruptionbudgets: %v", err) + } + for _, pdb := range pdbList.Items { + if strings.HasPrefix(pdb.Name, "px") && pdb.Name != StoragePodDisruptionBudgetName && pdb.Name != "px-kvdb" { + err := k8sutil.DeletePodDisruptionBudget(c.k8sClient, pdb.Name, cluster.Namespace, *ownerRef) + if err != nil { + logrus.Warnf("Failed to delete node PDB %s: %v", pdb.Name, err) + errors = append(errors, err) + } + } + } + return utilerrors.NewAggregate(errors) +} diff --git a/drivers/storage/portworx/component/portworx_basic.go b/drivers/storage/portworx/component/portworx_basic.go index e7eebcc430..2b12ddaca9 100644 --- a/drivers/storage/portworx/component/portworx_basic.go +++ b/drivers/storage/portworx/component/portworx_basic.go @@ -399,6 +399,11 @@ func (c *portworxBasic) createClusterRole() error { Resources: []string{"*"}, Verbs: []string{"*"}, }, + { + APIGroups: []string{"portworx.io"}, + Resources: []string{"portworxdiags", "portworxdiags/status"}, + Verbs: []string{"get", "list", "watch", "create", "update", "patch", "delete"}, + }, { APIGroups: []string{"security.openshift.io"}, Resources: []string{"securitycontextconstraints"}, diff --git a/drivers/storage/portworx/component/prometheus.go b/drivers/storage/portworx/component/prometheus.go index 7575e9f923..142f252cff 100644 --- a/drivers/storage/portworx/component/prometheus.go +++ b/drivers/storage/portworx/component/prometheus.go @@ -269,6 +269,7 @@ func (c *prometheus) createOperatorClusterRole() error { "alertmanagers", "alertmanagers/finalizers", "alertmanagerconfigs", + "alertmanagers/status", "prometheuses", "prometheuses/status", "prometheuses/finalizers", diff --git a/drivers/storage/portworx/component/security.go b/drivers/storage/portworx/component/security.go index ddf0294423..10cfb9f7b8 100644 --- a/drivers/storage/portworx/component/security.go +++ b/drivers/storage/portworx/component/security.go @@ -534,7 +534,7 @@ func (c *security) updateSystemGuestRole(cluster *corev1.StorageCluster) error { } roleClient := api.NewOpenStorageRoleClient(c.sdkConn) - ctx, err := pxutil.SetupContextWithToken(context.Background(), cluster, c.k8sClient, false) + ctx, err := pxutil.SetupContextWithToken(context.Background(), cluster, c.k8sClient) if err != nil { c.closeSdkConn() return err diff --git a/drivers/storage/portworx/components_test.go b/drivers/storage/portworx/components_test.go index c6db90797b..3d3f4e7092 100644 --- a/drivers/storage/portworx/components_test.go +++ b/drivers/storage/portworx/components_test.go @@ -14,11 +14,10 @@ import ( "testing" "time" - routev1 "github.com/openshift/api/route/v1" - "github.com/golang-jwt/jwt/v4" "github.com/golang/mock/gomock" ocpconfig "github.com/openshift/api/config/v1" + routev1 "github.com/openshift/api/route/v1" ocp_secv1 "github.com/openshift/api/security/v1" apiextensionsops "github.com/portworx/sched-ops/k8s/apiextensions" coreops "github.com/portworx/sched-ops/k8s/core" @@ -13384,7 +13383,7 @@ func TestPodDisruptionBudgetEnabled(t *testing.T) { expectedNodeEnumerateResp := &osdapi.SdkNodeEnumerateWithFiltersResponse{ Nodes: []*osdapi.StorageNode{ - {SchedulerNodeName: "node1"}, + {SchedulerNodeName: "node1", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.1"}}, }, } @@ -13473,8 +13472,8 @@ func TestPodDisruptionBudgetEnabled(t *testing.T) { // TestCase: Do not create storage PDB if total nodes with storage is less than 3 expectedNodeEnumerateResp.Nodes = []*osdapi.StorageNode{ - {Pools: []*osdapi.StoragePool{{ID: 1}}, SchedulerNodeName: "node1"}, - {Pools: []*osdapi.StoragePool{{ID: 2}}, SchedulerNodeName: "node2"}, + {Pools: []*osdapi.StoragePool{{ID: 1}}, SchedulerNodeName: "node1", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.1"}}, + {Pools: []*osdapi.StoragePool{{ID: 2}}, SchedulerNodeName: "node2", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.1"}}, {Pools: []*osdapi.StoragePool{}}, {}, } @@ -13506,11 +13505,11 @@ func TestPodDisruptionBudgetEnabled(t *testing.T) { // Also, ignore the annotation if the value is an invalid integer cluster.Annotations[pxutil.AnnotationStoragePodDisruptionBudget] = "invalid" expectedNodeEnumerateResp.Nodes = []*osdapi.StorageNode{ - {Pools: []*osdapi.StoragePool{{ID: 1}}, SchedulerNodeName: "node1"}, - {Pools: []*osdapi.StoragePool{{ID: 2}}, SchedulerNodeName: "node2"}, + {Pools: []*osdapi.StoragePool{{ID: 1}}, SchedulerNodeName: "node1", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.1"}}, + {Pools: []*osdapi.StoragePool{{ID: 2}}, SchedulerNodeName: "node2", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.1"}}, {Pools: []*osdapi.StoragePool{}}, {}, - {Pools: []*osdapi.StoragePool{{ID: 3}}, SchedulerNodeName: "node3"}, + {Pools: []*osdapi.StoragePool{{ID: 3}}, SchedulerNodeName: "node3", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.1"}}, } err = driver.PreInstall(cluster) @@ -13533,11 +13532,11 @@ func TestPodDisruptionBudgetEnabled(t *testing.T) { // Also, ignore the annotation if the value is an invalid integer cluster.Annotations[pxutil.AnnotationStoragePodDisruptionBudget] = "still_invalid" expectedNodeEnumerateResp.Nodes = []*osdapi.StorageNode{ - {Pools: []*osdapi.StoragePool{{ID: 1}}, SchedulerNodeName: "node1"}, - {Pools: []*osdapi.StoragePool{{ID: 2}}, SchedulerNodeName: "node2"}, - {Pools: []*osdapi.StoragePool{{ID: 3}}, SchedulerNodeName: "node3"}, - {Pools: []*osdapi.StoragePool{{ID: 4}}, SchedulerNodeName: "node4"}, - {Pools: []*osdapi.StoragePool{{ID: 5}}, SchedulerNodeName: "node5"}, + {Pools: []*osdapi.StoragePool{{ID: 1}}, SchedulerNodeName: "node1", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.1"}}, + {Pools: []*osdapi.StoragePool{{ID: 2}}, SchedulerNodeName: "node2", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.1"}}, + {Pools: []*osdapi.StoragePool{{ID: 3}}, SchedulerNodeName: "node3", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.1"}}, + {Pools: []*osdapi.StoragePool{{ID: 4}}, SchedulerNodeName: "node4", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.1"}}, + {Pools: []*osdapi.StoragePool{{ID: 5}}, SchedulerNodeName: "node5", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.1"}}, {Pools: []*osdapi.StoragePool{}}, {}, } @@ -13856,6 +13855,7 @@ func TestPodDisruptionBudgetWithDifferentKvdbClusterSize(t *testing.T) { InspectCurrent(gomock.Any(), gomock.Any()). Return(expectedInspectCurrentResponse, nil). AnyTimes() + mockNodeServer.EXPECT().FilterNonOverlappingNodes(gomock.Any(), gomock.Any()).Return(&osdapi.SdkFilterNonOverlappingNodesResponse{}, nil).AnyTimes() cluster := &corev1.StorageCluster{ ObjectMeta: metav1.ObjectMeta{ @@ -13977,9 +13977,9 @@ func TestPodDisruptionBudgetDuringInitialization(t *testing.T) { expectedNodeEnumerateResp := &osdapi.SdkNodeEnumerateWithFiltersResponse{ Nodes: []*osdapi.StorageNode{ - {Pools: []*osdapi.StoragePool{{ID: 1}}, SchedulerNodeName: "node1"}, - {Pools: []*osdapi.StoragePool{{ID: 2}}, SchedulerNodeName: "node2"}, - {Pools: []*osdapi.StoragePool{{ID: 3}}, SchedulerNodeName: "node3"}, + {Pools: []*osdapi.StoragePool{{ID: 1}}, SchedulerNodeName: "node1", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.1"}}, + {Pools: []*osdapi.StoragePool{{ID: 2}}, SchedulerNodeName: "node2", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.1"}}, + {Pools: []*osdapi.StoragePool{{ID: 3}}, SchedulerNodeName: "node3", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.1"}}, }, } mockNodeServer.EXPECT(). @@ -13994,6 +13994,7 @@ func TestPodDisruptionBudgetDuringInitialization(t *testing.T) { InspectCurrent(gomock.Any(), gomock.Any()). Return(expectedInspectCurrentResponse, nil). AnyTimes() + mockNodeServer.EXPECT().FilterNonOverlappingNodes(gomock.Any(), gomock.Any()).Return(&osdapi.SdkFilterNonOverlappingNodesResponse{}, nil).AnyTimes() cluster := &corev1.StorageCluster{ ObjectMeta: metav1.ObjectMeta{ @@ -14155,7 +14156,7 @@ func TestPodDisruptionBudgetWithErrors(t *testing.T) { mockNodeServer.EXPECT(). EnumerateWithFilters(gomock.Any(), gomock.Any()). Return(nil, fmt.Errorf("NodeEnumerate error")). - Times(1) + AnyTimes() cluster.Spec.Security.Enabled = false err = driver.PreInstall(cluster) @@ -14186,9 +14187,9 @@ func TestDisablePodDisruptionBudgets(t *testing.T) { expectedNodeEnumerateResp := &osdapi.SdkNodeEnumerateWithFiltersResponse{ Nodes: []*osdapi.StorageNode{ - {Pools: []*osdapi.StoragePool{{ID: 1}}, SchedulerNodeName: "node1"}, - {Pools: []*osdapi.StoragePool{{ID: 2}}, SchedulerNodeName: "node2"}, - {Pools: []*osdapi.StoragePool{{ID: 3}}, SchedulerNodeName: "node3"}, + {Pools: []*osdapi.StoragePool{{ID: 1}}, SchedulerNodeName: "node1", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.1"}}, + {Pools: []*osdapi.StoragePool{{ID: 2}}, SchedulerNodeName: "node2", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.1"}}, + {Pools: []*osdapi.StoragePool{{ID: 3}}, SchedulerNodeName: "node3", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.1"}}, }, } mockNodeServer.EXPECT(). @@ -14280,6 +14281,633 @@ func TestDisablePodDisruptionBudgets(t *testing.T) { require.True(t, errors.IsNotFound(err)) } +func TestCreateNodePodDisruptionBudget(t *testing.T) { + mockCtrl := gomock.NewController(t) + defer mockCtrl.Finish() + + mockNodeServer := mock.NewMockOpenStorageNodeServer(mockCtrl) + sdkServerIP := "127.0.0.1" + sdkServerPort := 21883 + mockSdk := mock.NewSdkServer(mock.SdkServers{ + Node: mockNodeServer, + }) + err := mockSdk.StartOnAddress(sdkServerIP, strconv.Itoa(sdkServerPort)) + require.NoError(t, err) + defer mockSdk.Stop() + + testutil.SetupEtcHosts(t, sdkServerIP, pxutil.PortworxServiceName+".kube-test") + defer testutil.RestoreEtcHosts(t) + + // PDB should not be created for non quorum members, nodes not part of current cluster and nodes in decommissioned state + expectedNodeEnumerateResp := &osdapi.SdkNodeEnumerateWithFiltersResponse{ + Nodes: []*osdapi.StorageNode{ + {SchedulerNodeName: "node1", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.2"}}, + // If node version is empty, then skip that node to determine if feature is supported + {SchedulerNodeName: "node2"}, + {NonQuorumMember: true, SchedulerNodeName: "node3", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.2"}}, + {SchedulerNodeName: "node4", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.2"}}, + {NonQuorumMember: false, Status: osdapi.Status_STATUS_DECOMMISSION}, + }, + } + mockNodeServer.EXPECT(). + EnumerateWithFilters(gomock.Any(), gomock.Any()). + Return(expectedNodeEnumerateResp, nil). + AnyTimes() + + mockNodeServer.EXPECT().FilterNonOverlappingNodes(gomock.Any(), gomock.Any()).Return(&osdapi.SdkFilterNonOverlappingNodesResponse{}, nil).AnyTimes() + + cluster := &corev1.StorageCluster{ + ObjectMeta: metav1.ObjectMeta{ + Name: "px-cluster", + Namespace: "kube-test", + }, + Spec: corev1.StorageClusterSpec{ + Image: "portworx/oci-monitor:3.1.2", + }, + Status: corev1.StorageClusterStatus{ + Phase: string(corev1.ClusterStateRunning), + }, + } + fakeK8sNodes := &v1.NodeList{Items: []v1.Node{ + {ObjectMeta: metav1.ObjectMeta{Name: "node1"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "node2"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "node3"}}, + }, + } + + k8sClient := testutil.FakeK8sClient(&v1.Service{ + ObjectMeta: metav1.ObjectMeta{ + Name: pxutil.PortworxServiceName, + Namespace: cluster.Namespace, + }, + Spec: v1.ServiceSpec{ + ClusterIP: sdkServerIP, + Ports: []v1.ServicePort{ + { + Name: pxutil.PortworxSDKPortName, + Port: int32(sdkServerPort), + }, + }, + }, + }, fakeK8sNodes) + + coreops.SetInstance(coreops.New(fakek8sclient.NewSimpleClientset())) + component.DeregisterAllComponents() + component.RegisterDisruptionBudgetComponent() + + driver := portworx{} + err = driver.Init(k8sClient, runtime.NewScheme(), record.NewFakeRecorder(0)) + require.NoError(t, err) + err = driver.PreInstall(cluster) + require.NoError(t, err) + + // PDB is created for 2 storage nodes and kvdb + pdbList := &policyv1.PodDisruptionBudgetList{} + err = testutil.List(k8sClient, pdbList) + require.NoError(t, err) + require.Len(t, pdbList.Items, 3) + + storagePDB := &policyv1.PodDisruptionBudget{} + err = testutil.Get(k8sClient, storagePDB, "px-node1", cluster.Namespace) + require.NoError(t, err) + require.Equal(t, 1, storagePDB.Spec.MinAvailable.IntValue()) + require.Equal(t, "node1", storagePDB.Spec.Selector.MatchLabels[constants.OperatorLabelNodeNameKey]) + + err = testutil.Get(k8sClient, storagePDB, "px-node3", cluster.Namespace) + require.True(t, errors.IsNotFound(err)) + err = testutil.Get(k8sClient, storagePDB, "px-node4", cluster.Namespace) + require.True(t, errors.IsNotFound(err)) + + // Testcase : PDB per node should not be created for any node even if 1 node is lesser than 3.1.2 + // Use cluster wide PDB in this case + expectedNodeEnumerateResp.Nodes = []*osdapi.StorageNode{ + {SchedulerNodeName: "node1", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.2"}}, + {SchedulerNodeName: "node2", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.2"}}, + {SchedulerNodeName: "node3", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.1"}}, + } + err = driver.PreInstall(cluster) + require.NoError(t, err) + + storagePDB = &policyv1.PodDisruptionBudget{} + err = testutil.Get(k8sClient, storagePDB, component.StoragePodDisruptionBudgetName, cluster.Namespace) + require.NoError(t, err) + require.Equal(t, 2, storagePDB.Spec.MinAvailable.IntValue()) + +} + +func TestDeleteNodePodDisruptionBudget(t *testing.T) { + mockCtrl := gomock.NewController(t) + defer mockCtrl.Finish() + + mockNodeServer := mock.NewMockOpenStorageNodeServer(mockCtrl) + sdkServerIP := "127.0.0.1" + sdkServerPort := 21883 + mockSdk := mock.NewSdkServer(mock.SdkServers{ + Node: mockNodeServer, + }) + err := mockSdk.StartOnAddress(sdkServerIP, strconv.Itoa(sdkServerPort)) + require.NoError(t, err) + defer mockSdk.Stop() + + testutil.SetupEtcHosts(t, sdkServerIP, pxutil.PortworxServiceName+".kube-test") + defer testutil.RestoreEtcHosts(t) + + expectedNodeEnumerateResp := &osdapi.SdkNodeEnumerateWithFiltersResponse{ + Nodes: []*osdapi.StorageNode{ + {SchedulerNodeName: "node1", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.2"}}, + {SchedulerNodeName: "node2", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.2"}}, + {SchedulerNodeName: "node3", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.2"}}, + {NonQuorumMember: true, SchedulerNodeName: "node4", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.2"}}, + {NonQuorumMember: false, Status: osdapi.Status_STATUS_DECOMMISSION}, + }, + } + mockNodeServer.EXPECT(). + EnumerateWithFilters(gomock.Any(), gomock.Any()). + Return(expectedNodeEnumerateResp, nil). + AnyTimes() + + mockNodeServer.EXPECT().FilterNonOverlappingNodes(gomock.Any(), gomock.Any()).Return(&osdapi.SdkFilterNonOverlappingNodesResponse{}, nil).AnyTimes() + + cluster := &corev1.StorageCluster{ + ObjectMeta: metav1.ObjectMeta{ + Name: "px-cluster", + Namespace: "kube-test", + }, + Spec: corev1.StorageClusterSpec{ + Image: "portworx/oci-monitor:3.1.2", + }, + Status: corev1.StorageClusterStatus{ + Phase: string(corev1.ClusterStateRunning), + }, + } + fakeK8sNodes := &v1.NodeList{Items: []v1.Node{ + {ObjectMeta: metav1.ObjectMeta{Name: "node1"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "node2"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "node3"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "node4"}}, + }, + } + + k8sClient := testutil.FakeK8sClient(&v1.Service{ + ObjectMeta: metav1.ObjectMeta{ + Name: pxutil.PortworxServiceName, + Namespace: cluster.Namespace, + }, + Spec: v1.ServiceSpec{ + ClusterIP: sdkServerIP, + Ports: []v1.ServicePort{ + { + Name: pxutil.PortworxSDKPortName, + Port: int32(sdkServerPort), + }, + }, + }, + }, fakeK8sNodes) + + coreops.SetInstance(coreops.New(fakek8sclient.NewSimpleClientset())) + component.DeregisterAllComponents() + component.RegisterDisruptionBudgetComponent() + + driver := portworx{} + err = driver.Init(k8sClient, runtime.NewScheme(), record.NewFakeRecorder(0)) + require.NoError(t, err) + err = driver.PreInstall(cluster) + require.NoError(t, err) + + pdbList := &policyv1.PodDisruptionBudgetList{} + err = testutil.List(k8sClient, pdbList) + require.NoError(t, err) + require.Len(t, pdbList.Items, 4) + + // Testcase: Removing kubernetes node2 from the cluster should delete node PDB + err = testutil.Delete(k8sClient, &fakeK8sNodes.Items[1]) + require.NoError(t, err) + + err = driver.PreInstall(cluster) + require.NoError(t, err) + + pdbList = &policyv1.PodDisruptionBudgetList{} + err = testutil.List(k8sClient, pdbList) + require.NoError(t, err) + require.Len(t, pdbList.Items, 3) + + err = testutil.Get(k8sClient, &policyv1.PodDisruptionBudget{}, "px-node2", cluster.Namespace) + require.True(t, errors.IsNotFound(err)) + + // Testcase: Making node 3 non quorum member should delete node PDB + expectedNodeEnumerateResp.Nodes[2].NonQuorumMember = true + + err = driver.PreInstall(cluster) + require.NoError(t, err) + + pdbList = &policyv1.PodDisruptionBudgetList{} + err = testutil.List(k8sClient, pdbList) + require.NoError(t, err) + require.Len(t, pdbList.Items, 2) + + err = testutil.Get(k8sClient, &policyv1.PodDisruptionBudget{}, "px-node3", cluster.Namespace) + require.True(t, errors.IsNotFound(err)) + +} + +func TestUpdateNodePodDisruptionBudgetParallelEnabled(t *testing.T) { + mockCtrl := gomock.NewController(t) + defer mockCtrl.Finish() + + mockNodeServer := mock.NewMockOpenStorageNodeServer(mockCtrl) + sdkServerIP := "127.0.0.1" + sdkServerPort := 21883 + mockSdk := mock.NewSdkServer(mock.SdkServers{ + Node: mockNodeServer, + }) + err := mockSdk.StartOnAddress(sdkServerIP, strconv.Itoa(sdkServerPort)) + require.NoError(t, err) + defer mockSdk.Stop() + + testutil.SetupEtcHosts(t, sdkServerIP, pxutil.PortworxServiceName+".kube-test") + defer testutil.RestoreEtcHosts(t) + + expectedNodeEnumerateResp := &osdapi.SdkNodeEnumerateWithFiltersResponse{ + Nodes: []*osdapi.StorageNode{ + // Nodes in few specific states will be considered as up during PDB updates + {SchedulerNodeName: "node1", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.2"}, Id: "pxnode1", Status: osdapi.Status_STATUS_STORAGE_DOWN}, + {SchedulerNodeName: "node2", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.2"}, Id: "pxnode2", Status: osdapi.Status_STATUS_MAINTENANCE}, + {SchedulerNodeName: "node3", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.2"}, Id: "pxnode3", Status: osdapi.Status_STATUS_OK}, + {SchedulerNodeName: "node4", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.2"}, Id: "pxnode4", Status: osdapi.Status_STATUS_OK}, + {SchedulerNodeName: "node5", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.2"}, Id: "pxnode5", Status: osdapi.Status_STATUS_OK}, + // Nodes in decommissioned state are not included in the input request to filterNonOverlappingNodes API + {SchedulerNodeName: "node6", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.2"}, Id: "pxnode6", Status: osdapi.Status_STATUS_DECOMMISSION}, + // Nodes part of quorum are not included in the input request to filterNonOverlappingNodes API + {NonQuorumMember: true, SchedulerNodeName: "node7", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.2"}, Id: "pxnode7", Status: osdapi.Status_STATUS_OK}, + }, + } + mockNodeServer.EXPECT(). + EnumerateWithFilters(gomock.Any(), gomock.Any()). + Return(expectedNodeEnumerateResp, nil). + Times(2) + + mockNodeServer.EXPECT().FilterNonOverlappingNodes(gomock.Any(), gomock.Any()).Return(&osdapi.SdkFilterNonOverlappingNodesResponse{}, nil).Times(1) + + cluster := &corev1.StorageCluster{ + ObjectMeta: metav1.ObjectMeta{ + Name: "px-cluster", + Namespace: "kube-test", + }, + Spec: corev1.StorageClusterSpec{ + Image: "portworx/oci-monitor:3.1.2", + }, + Status: corev1.StorageClusterStatus{ + Phase: string(corev1.ClusterStateRunning), + }, + } + fakeK8sNodes := &v1.NodeList{Items: []v1.Node{ + {ObjectMeta: metav1.ObjectMeta{Name: "node1"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "node2"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "node3"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "node4"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "node5"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "node6"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "node7"}}, + }, + } + + k8sClient := testutil.FakeK8sClient(&v1.Service{ + ObjectMeta: metav1.ObjectMeta{ + Name: pxutil.PortworxServiceName, + Namespace: cluster.Namespace, + }, + Spec: v1.ServiceSpec{ + ClusterIP: sdkServerIP, + Ports: []v1.ServicePort{ + { + Name: pxutil.PortworxSDKPortName, + Port: int32(sdkServerPort), + }, + }, + }, + }, fakeK8sNodes) + + coreops.SetInstance(coreops.New(fakek8sclient.NewSimpleClientset())) + component.DeregisterAllComponents() + component.RegisterDisruptionBudgetComponent() + + driver := portworx{} + recorder := record.NewFakeRecorder(10) + err = driver.Init(k8sClient, runtime.NewScheme(), recorder) + require.NoError(t, err) + err = driver.PreInstall(cluster) + require.NoError(t, err) + + pdbList := &policyv1.PodDisruptionBudgetList{} + err = testutil.List(k8sClient, pdbList) + require.NoError(t, err) + require.Len(t, pdbList.Items, 6) + + // Testcase : When FilterNonOverlappingNodes returns nodes count lesser than portworx quorum, update minAvailable to 0 for those nodes + + // Update nodes 1,2 to be unschedulable + fakeK8sNodes.Items[0].Spec.Unschedulable = true + fakeK8sNodes.Items[1].Spec.Unschedulable = true + + // Cordon nodes in which px is not part of quorum and is decommissioned, they should not be in input to filterNonOverlappingNodes API + // These nodes are not included in quorum calculation either + fakeK8sNodes.Items[5].Spec.Unschedulable = true + fakeK8sNodes.Items[6].Spec.Unschedulable = true + + err = testutil.Update(k8sClient, &fakeK8sNodes.Items[0]) + require.NoError(t, err) + err = testutil.Update(k8sClient, &fakeK8sNodes.Items[1]) + require.NoError(t, err) + err = testutil.Update(k8sClient, &fakeK8sNodes.Items[5]) + require.NoError(t, err) + err = testutil.Update(k8sClient, &fakeK8sNodes.Items[6]) + require.NoError(t, err) + + upgradeNodesResponse := &osdapi.SdkFilterNonOverlappingNodesResponse{ + NodeIds: []string{"pxnode1", "pxnode2"}, + } + filterNodesRequest := &osdapi.SdkFilterNonOverlappingNodesRequest{ + InputNodes: []string{"pxnode1", "pxnode2"}, + } + mockNodeServer.EXPECT().FilterNonOverlappingNodes(gomock.Any(), filterNodesRequest).Return(upgradeNodesResponse, nil).Times(1) + + err = driver.PreInstall(cluster) + require.NoError(t, err) + + pdbList = &policyv1.PodDisruptionBudgetList{} + err = testutil.List(k8sClient, pdbList) + require.NoError(t, err) + require.Len(t, pdbList.Items, 6) + require.Equal(t, "px-node1", pdbList.Items[1].Name) + require.Equal(t, 0, pdbList.Items[1].Spec.MinAvailable.IntValue()) + require.Equal(t, "px-node2", pdbList.Items[2].Name) + require.Equal(t, 0, pdbList.Items[2].Spec.MinAvailable.IntValue()) + require.Equal(t, "px-node3", pdbList.Items[3].Name) + require.Equal(t, 1, pdbList.Items[3].Spec.MinAvailable.IntValue()) + + // Testcase : When FilterNonOverlappingNodes returns nodes but num(storagenodes)-quorum number of nodes are already upgrading/ ready for upgrade or down, don't do anything + // Here node1 is selected for upgrade and node2 has px down status + minAvailable := intstr.FromInt(1) + pdbList.Items[2].Spec.MinAvailable = &minAvailable + err = testutil.Update(k8sClient, &pdbList.Items[2]) + require.NoError(t, err) + + expectedNodeEnumerateResp.Nodes[1].Status = osdapi.Status_STATUS_OFFLINE + mockNodeServer.EXPECT(). + EnumerateWithFilters(gomock.Any(), gomock.Any()). + Return(expectedNodeEnumerateResp, nil). + Times(1) + + fakeK8sNodes.Items[2].Spec.Unschedulable = true + err = testutil.Update(k8sClient, &fakeK8sNodes.Items[2]) + require.NoError(t, err) + upgradeNodesResponse.NodeIds = []string{"pxnode3"} + + mockNodeServer.EXPECT().FilterNonOverlappingNodes(gomock.Any(), gomock.Any()).Return(upgradeNodesResponse, nil).Times(1) + err = driver.PreInstall(cluster) + require.NoError(t, err) + + pdbList = &policyv1.PodDisruptionBudgetList{} + err = testutil.List(k8sClient, pdbList) + require.NoError(t, err) + require.Equal(t, 0, pdbList.Items[1].Spec.MinAvailable.IntValue()) + require.Equal(t, 1, pdbList.Items[3].Spec.MinAvailable.IntValue()) + + // Testcase : When user provides minAvailable annotation, use that instead of portworx quorum + for i := 1; i < 4; i++ { + pdbList.Items[i].Spec.MinAvailable = &minAvailable + err = testutil.Update(k8sClient, &pdbList.Items[i]) + require.NoError(t, err) + } + expectedNodeEnumerateResp.Nodes[1].Status = osdapi.Status_STATUS_OK + upgradeNodesResponse.NodeIds = []string{"pxnode1", "pxnode2", "pxnode3", "pxnode4"} + mockNodeServer.EXPECT().FilterNonOverlappingNodes(gomock.Any(), gomock.Any()).Return(upgradeNodesResponse, nil).Times(1) + mockNodeServer.EXPECT(). + EnumerateWithFilters(gomock.Any(), gomock.Any()). + Return(expectedNodeEnumerateResp, nil). + AnyTimes() + cluster.Annotations = map[string]string{ + pxutil.AnnotationStoragePodDisruptionBudget: "4", + } + err = driver.PreInstall(cluster) + require.NoError(t, err) + + pdbList = &policyv1.PodDisruptionBudgetList{} + err = testutil.List(k8sClient, pdbList) + require.NoError(t, err) + require.Equal(t, 0, pdbList.Items[1].Spec.MinAvailable.IntValue()) + require.Equal(t, 1, pdbList.Items[2].Spec.MinAvailable.IntValue()) + require.Equal(t, 1, pdbList.Items[3].Spec.MinAvailable.IntValue()) + + // Testcase: When minAvailable is invalid, use portworx quorum + pdbList.Items[1].Spec.MinAvailable = &minAvailable + err = testutil.Update(k8sClient, &pdbList.Items[1]) + require.NoError(t, err) + cluster.Annotations[pxutil.AnnotationStoragePodDisruptionBudget] = "5" + mockNodeServer.EXPECT().FilterNonOverlappingNodes(gomock.Any(), gomock.Any()).Return(upgradeNodesResponse, nil).Times(2) + err = driver.PreInstall(cluster) + require.NoError(t, err) + + pdbList = &policyv1.PodDisruptionBudgetList{} + err = testutil.List(k8sClient, pdbList) + require.NoError(t, err) + require.Contains(t, <-recorder.Events, + fmt.Sprintf("%v %v Invalid minAvailable annotation value for storage pod disruption budget. Using default value: %d", + v1.EventTypeWarning, util.InvalidMinAvailable, 3), + ) + require.Equal(t, 0, pdbList.Items[1].Spec.MinAvailable.IntValue()) + require.Equal(t, 0, pdbList.Items[2].Spec.MinAvailable.IntValue()) + require.Equal(t, 1, pdbList.Items[3].Spec.MinAvailable.IntValue()) + + // 2nd reconcile loop + err = driver.PreInstall(cluster) + require.NoError(t, err) + pdbList = &policyv1.PodDisruptionBudgetList{} + err = testutil.List(k8sClient, pdbList) + require.NoError(t, err) + require.Empty(t, recorder.Events) + + require.Equal(t, 0, pdbList.Items[1].Spec.MinAvailable.IntValue()) + require.Equal(t, 0, pdbList.Items[2].Spec.MinAvailable.IntValue()) + require.Equal(t, 1, pdbList.Items[3].Spec.MinAvailable.IntValue()) + + // When node PDB is deleted and node is cordoned, consider it as upgrading node + // Here node 2 PDB is deleted but node is still cordoned, node 3 should not be selected for uupgrade + err = testutil.Delete(k8sClient, &pdbList.Items[2]) + require.NoError(t, err) + upgradeNodesResponse.NodeIds = []string{"pxnode3"} + mockNodeServer.EXPECT().FilterNonOverlappingNodes(gomock.Any(), gomock.Any()).Return(upgradeNodesResponse, nil).Times(1) + + err = driver.PreInstall(cluster) + require.NoError(t, err) + + pdbList = &policyv1.PodDisruptionBudgetList{} + err = testutil.List(k8sClient, pdbList) + require.NoError(t, err) + require.Equal(t, 0, pdbList.Items[1].Spec.MinAvailable.IntValue()) + require.Equal(t, "px-node3", pdbList.Items[2].Name) + require.Equal(t, 1, pdbList.Items[2].Spec.MinAvailable.IntValue()) + +} + +func TestUpdateNodePodDisruptionBudgetParallelDisabled(t *testing.T) { + mockCtrl := gomock.NewController(t) + defer mockCtrl.Finish() + + mockNodeServer := mock.NewMockOpenStorageNodeServer(mockCtrl) + sdkServerIP := "127.0.0.1" + sdkServerPort := 21883 + mockSdk := mock.NewSdkServer(mock.SdkServers{ + Node: mockNodeServer, + }) + err := mockSdk.StartOnAddress(sdkServerIP, strconv.Itoa(sdkServerPort)) + require.NoError(t, err) + defer mockSdk.Stop() + + testutil.SetupEtcHosts(t, sdkServerIP, pxutil.PortworxServiceName+".kube-test") + defer testutil.RestoreEtcHosts(t) + + expectedNodeEnumerateResp := &osdapi.SdkNodeEnumerateWithFiltersResponse{ + Nodes: []*osdapi.StorageNode{ + {SchedulerNodeName: "node1", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.2"}, Id: "pxnode1", Status: osdapi.Status_STATUS_OK}, + {SchedulerNodeName: "node2", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.2"}, Id: "pxnode2", Status: osdapi.Status_STATUS_OK}, + {SchedulerNodeName: "node3", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.2"}, Id: "pxnode3", Status: osdapi.Status_STATUS_OK}, + {SchedulerNodeName: "node4", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.2"}, Id: "pxnode4", Status: osdapi.Status_STATUS_OK}, + {SchedulerNodeName: "node5", NodeLabels: map[string]string{pxutil.NodeLabelPortworxVersion: "3.1.2"}, Id: "pxnode5", Status: osdapi.Status_STATUS_OK}, + }, + } + mockNodeServer.EXPECT(). + EnumerateWithFilters(gomock.Any(), gomock.Any()). + Return(expectedNodeEnumerateResp, nil). + AnyTimes() + + cluster := &corev1.StorageCluster{ + + ObjectMeta: metav1.ObjectMeta{ + Name: "px-cluster", + Namespace: "kube-test", + }, + Spec: corev1.StorageClusterSpec{ + Image: "portworx/oci-monitor:3.1.2", + }, + Status: corev1.StorageClusterStatus{ + Phase: string(corev1.ClusterStateRunning), + }, + } + cluster.Annotations = map[string]string{ + pxutil.AnnotationsDisableNonDisruptiveUpgrade: "true", + } + + fakeK8sNodes := &v1.NodeList{Items: []v1.Node{ + {ObjectMeta: metav1.ObjectMeta{Name: "node1"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "node2"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "node3"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "node4"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "node5"}}, + }, + } + + k8sClient := testutil.FakeK8sClient(&v1.Service{ + ObjectMeta: metav1.ObjectMeta{ + Name: pxutil.PortworxServiceName, + Namespace: cluster.Namespace, + }, + Spec: v1.ServiceSpec{ + ClusterIP: sdkServerIP, + Ports: []v1.ServicePort{ + { + Name: pxutil.PortworxSDKPortName, + Port: int32(sdkServerPort), + }, + }, + }, + }, fakeK8sNodes) + + coreops.SetInstance(coreops.New(fakek8sclient.NewSimpleClientset())) + component.DeregisterAllComponents() + component.RegisterDisruptionBudgetComponent() + + driver := portworx{} + recorder := record.NewFakeRecorder(10) + err = driver.Init(k8sClient, runtime.NewScheme(), recorder) + require.NoError(t, err) + err = driver.PreInstall(cluster) + require.NoError(t, err) + + pdbList := &policyv1.PodDisruptionBudgetList{} + err = testutil.List(k8sClient, pdbList) + require.NoError(t, err) + require.Len(t, pdbList.Items, 6) + + fakeK8sNodes.Items[0].Spec.Unschedulable = true + fakeK8sNodes.Items[1].Spec.Unschedulable = true + err = testutil.Update(k8sClient, &fakeK8sNodes.Items[0]) + require.NoError(t, err) + err = testutil.Update(k8sClient, &fakeK8sNodes.Items[1]) + require.NoError(t, err) + + err = driver.PreInstall(cluster) + require.NoError(t, err) + + // When no minAvailable is given, upgrade only 1 by default + pdbList = &policyv1.PodDisruptionBudgetList{} + err = testutil.List(k8sClient, pdbList) + require.NoError(t, err) + require.Equal(t, "px-node1", pdbList.Items[1].Name) + require.Equal(t, 0, pdbList.Items[1].Spec.MinAvailable.IntValue()) + require.Equal(t, "px-node2", pdbList.Items[2].Name) + require.Equal(t, 1, pdbList.Items[2].Spec.MinAvailable.IntValue()) + + // When minAvailable value is valid, use that + cluster.Annotations[pxutil.AnnotationStoragePodDisruptionBudget] = "3" + err = driver.PreInstall(cluster) + require.NoError(t, err) + + pdbList = &policyv1.PodDisruptionBudgetList{} + err = testutil.List(k8sClient, pdbList) + require.NoError(t, err) + require.Equal(t, 0, pdbList.Items[1].Spec.MinAvailable.IntValue()) + require.Equal(t, 0, pdbList.Items[2].Spec.MinAvailable.IntValue()) + require.Equal(t, 1, pdbList.Items[3].Spec.MinAvailable.IntValue()) + + // When minAvailable value is invalid, upgrade only 1 at a time + minAvailable := intstr.FromInt(1) + pdbList.Items[1].Spec.MinAvailable = &minAvailable + err = testutil.Update(k8sClient, &pdbList.Items[1]) + require.NoError(t, err) + pdbList.Items[2].Spec.MinAvailable = &minAvailable + err = testutil.Update(k8sClient, &pdbList.Items[2]) + require.NoError(t, err) + + cluster.Annotations[pxutil.AnnotationStoragePodDisruptionBudget] = "2" + err = driver.PreInstall(cluster) + require.NoError(t, err) + + pdbList = &policyv1.PodDisruptionBudgetList{} + err = testutil.List(k8sClient, pdbList) + require.NoError(t, err) + require.Contains(t, <-recorder.Events, + fmt.Sprintf("%v %v Invalid minAvailable annotation value for storage pod disruption budget. Using default value: %d", + v1.EventTypeWarning, util.InvalidMinAvailable, 4), + ) + require.Equal(t, 0, pdbList.Items[1].Spec.MinAvailable.IntValue()) + require.Equal(t, 1, pdbList.Items[2].Spec.MinAvailable.IntValue()) + require.Equal(t, 1, pdbList.Items[3].Spec.MinAvailable.IntValue()) + + // 2nd reconcile loop + err = driver.PreInstall(cluster) + require.NoError(t, err) + + pdbList = &policyv1.PodDisruptionBudgetList{} + err = testutil.List(k8sClient, pdbList) + require.NoError(t, err) + require.Empty(t, recorder.Events) + require.Equal(t, 0, pdbList.Items[1].Spec.MinAvailable.IntValue()) + require.Equal(t, 1, pdbList.Items[2].Spec.MinAvailable.IntValue()) + require.Equal(t, 1, pdbList.Items[3].Spec.MinAvailable.IntValue()) + +} + func TestSCC(t *testing.T) { mockCtrl := gomock.NewController(t) setUpMockCoreOps(mockCtrl, fakek8sclient.NewSimpleClientset()) diff --git a/drivers/storage/portworx/portworx.go b/drivers/storage/portworx/portworx.go index 10e3032b44..20ea3e2540 100644 --- a/drivers/storage/portworx/portworx.go +++ b/drivers/storage/portworx/portworx.go @@ -35,7 +35,7 @@ import ( const ( storkDriverName = "pxd" - defaultPortworxImage = "portworx/oci-monitor" + DefaultPortworxImage = "portworx/oci-monitor" defaultSecretsProvider = "k8s" defaultTokenLifetime = "24h" defaultSelfSignedIssuer = "operator.portworx.io" @@ -375,7 +375,7 @@ func (p *portworx) SetDefaultsOnStorageCluster(toUpdate *corev1.StorageCluster) if toUpdate.Spec.Version == "" && pxEnabled { if toUpdate.Spec.Image == "" { - toUpdate.Spec.Image = defaultPortworxImage + toUpdate.Spec.Image = DefaultPortworxImage } toUpdate.Spec.Image = toUpdate.Spec.Image + ":" + release.PortworxVersion toUpdate.Spec.Version = release.PortworxVersion @@ -762,7 +762,7 @@ func (p *portworx) GetStorageNodes( } nodeClient := storageapi.NewOpenStorageNodeClient(p.sdkConn) - ctx, err := pxutil.SetupContextWithToken(context.Background(), cluster, p.k8sClient, false) + ctx, err := pxutil.SetupContextWithToken(context.Background(), cluster, p.k8sClient) if err != nil { return nil, err } @@ -787,10 +787,7 @@ func (p *portworx) GetKVDBMembers(cluster *corev1.StorageCluster) (map[string]bo ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second) defer cancel() - // if security was previously enabled and changed to disabled now - // the storagenodes might not be in sync since rolling update has not completed - // so always pass the token while rolling update - ctx, err = pxutil.SetupContextWithToken(ctx, cluster, p.k8sClient, true) + ctx, err = pxutil.SetupContextWithToken(ctx, cluster, p.k8sClient) if err != nil { return nil, err } @@ -808,6 +805,30 @@ func (p *portworx) GetKVDBMembers(cluster *corev1.StorageCluster) (map[string]bo return kvdbMap, nil } +func (p *portworx) GetNodesSelectedForUpgrade(cluster *corev1.StorageCluster, nodesToBeUpgraded []string, unavailableNodes []string) ([]string, error) { + var err error + p.sdkConn, err = pxutil.GetPortworxConn(p.sdkConn, p.k8sClient, cluster.Namespace) + if err != nil { + return nil, fmt.Errorf("failed to get Portworx connection: %v", err) + } + nodeClient := storageapi.NewOpenStorageNodeClient(p.sdkConn) + ctx, err := pxutil.SetupContextWithToken(context.Background(), cluster, p.k8sClient) + if err != nil { + return nil, fmt.Errorf("failed to setup context with token: %v", err) + } + nodeFilterResponse, err := nodeClient.FilterNonOverlappingNodes( + ctx, + &storageapi.SdkFilterNonOverlappingNodesRequest{ + InputNodes: nodesToBeUpgraded, + DownNodes: unavailableNodes, + }, + ) + if err != nil { + return nil, fmt.Errorf("failed to get non overlapping nodes: %v", err) + } + return nodeFilterResponse.NodeIds, nil +} + func (p *portworx) DeleteStorage( cluster *corev1.StorageCluster, ) (*corev1.ClusterCondition, error) { diff --git a/drivers/storage/portworx/portworx_test.go b/drivers/storage/portworx/portworx_test.go index fba09f93bb..4925cc843d 100644 --- a/drivers/storage/portworx/portworx_test.go +++ b/drivers/storage/portworx/portworx_test.go @@ -1295,7 +1295,7 @@ func TestSetDefaultsOnStorageCluster(t *testing.T) { require.NoError(t, err) // Use default image from release manifest when spec.image is not set - require.Equal(t, defaultPortworxImage+":2.10.0", cluster.Spec.Image) + require.Equal(t, DefaultPortworxImage+":2.10.0", cluster.Spec.Image) require.Equal(t, "2.10.0", cluster.Spec.Version) require.Equal(t, "2.10.0", cluster.Status.Version) require.True(t, cluster.Spec.Kvdb.Internal) @@ -1309,7 +1309,7 @@ func TestSetDefaultsOnStorageCluster(t *testing.T) { cluster.Spec.Version = " " err = driver.SetDefaultsOnStorageCluster(cluster) require.NoError(t, err) - require.Equal(t, defaultPortworxImage+":2.10.0", cluster.Spec.Image) + require.Equal(t, DefaultPortworxImage+":2.10.0", cluster.Spec.Image) require.Equal(t, "2.10.0", cluster.Spec.Version) require.Equal(t, "2.10.0", cluster.Status.Version) @@ -10410,6 +10410,76 @@ func TestGetKVDBMembersWithSecurityEnabled(t *testing.T) { } +func TestGetNodesSelectedForUpgrade(t *testing.T) { + mockCtrl := gomock.NewController(t) + defer mockCtrl.Finish() + + mockNodeServer := mock.NewMockOpenStorageNodeServer(mockCtrl) + sdkServerIP := "127.0.0.1" + sdkServerPort := 21883 + mockSdk := mock.NewSdkServer(mock.SdkServers{ + Node: mockNodeServer, + }) + k8sClient := testutil.FakeK8sClient(&v1.Service{ + ObjectMeta: metav1.ObjectMeta{ + Name: pxutil.PortworxServiceName, + Namespace: "kube-test", + }, + Spec: v1.ServiceSpec{ + ClusterIP: sdkServerIP, + Ports: []v1.ServicePort{ + { + Name: pxutil.PortworxSDKPortName, + Port: int32(sdkServerPort), + }, + }, + }, + }) + driver := portworx{ + k8sClient: k8sClient, + recorder: record.NewFakeRecorder(10), + } + cluster := &corev1.StorageCluster{ + ObjectMeta: metav1.ObjectMeta{ + Name: "px-cluster", + Namespace: "kube-test", + }, + Status: corev1.StorageClusterStatus{ + Phase: string(corev1.ClusterStateInit), + }, + } + + nodes := []string{} + val, err := driver.GetNodesSelectedForUpgrade(cluster, nodes, nodes) + require.Error(t, err) + require.Contains(t, err.Error(), "failed to get Portworx connection: error connecting to GRPC server") + require.Empty(t, val) + + sdkError := mockSdk.StartOnAddress(sdkServerIP, strconv.Itoa(sdkServerPort)) + require.NoError(t, sdkError) + defer mockSdk.Stop() + + testutil.SetupEtcHosts(t, sdkServerIP, pxutil.PortworxServiceName+".kube-test") + defer testutil.RestoreEtcHosts(t) + + // When the API returns an error + expectedError := fmt.Errorf("test error") + mockNodeServer.EXPECT().FilterNonOverlappingNodes(gomock.Any(), gomock.Any()).Return(nil, expectedError).Times(1) + _, err = driver.GetNodesSelectedForUpgrade(cluster, nodes, nodes) + require.Error(t, err) + require.Contains(t, err.Error(), fmt.Sprintf("failed to get non overlapping nodes: rpc error: code = Unknown desc = %s", expectedError)) + + // When API returns list of nodes to be upgraded + expectedNodeEnumerateResp := &api.SdkFilterNonOverlappingNodesResponse{ + NodeIds: []string{"node1", "node2"}, + } + mockNodeServer.EXPECT().FilterNonOverlappingNodes(gomock.Any(), gomock.Any()).Return(expectedNodeEnumerateResp, nil).Times(1) + val, err = driver.GetNodesSelectedForUpgrade(cluster, nodes, nodes) + require.NoError(t, err) + require.Equal(t, val, []string{"node1", "node2"}) + +} + func createK8sNode(nodeName string, allowedPods int) *v1.Node { return &v1.Node{ ObjectMeta: metav1.ObjectMeta{ diff --git a/drivers/storage/portworx/status.go b/drivers/storage/portworx/status.go index ec24b9f73c..4e6416ad4d 100644 --- a/drivers/storage/portworx/status.go +++ b/drivers/storage/portworx/status.go @@ -154,7 +154,7 @@ func (p *portworx) updatePortworxRuntimeStatus( } clusterClient := api.NewOpenStorageClusterClient(p.sdkConn) - ctx, err := pxutil.SetupContextWithToken(context.Background(), cluster, p.k8sClient, false) + ctx, err := pxutil.SetupContextWithToken(context.Background(), cluster, p.k8sClient) if err != nil { return err } @@ -419,7 +419,7 @@ func (p *portworx) updateStorageNodes( cluster *corev1.StorageCluster, ) error { nodeClient := api.NewOpenStorageNodeClient(p.sdkConn) - ctx, err := pxutil.SetupContextWithToken(context.Background(), cluster, p.k8sClient, false) + ctx, err := pxutil.SetupContextWithToken(context.Background(), cluster, p.k8sClient) if err != nil { return err } diff --git a/drivers/storage/portworx/status_test.go b/drivers/storage/portworx/status_test.go index 84e4b417ef..96cbda3fdb 100644 --- a/drivers/storage/portworx/status_test.go +++ b/drivers/storage/portworx/status_test.go @@ -62,7 +62,6 @@ func TestSetupContextWithToken(t *testing.T) { initialSecrets []v1.Secret initialConfigMaps []v1.ConfigMap securityEnabled bool - skipSecurityCheck bool expectError bool expectTokenAdded bool @@ -73,7 +72,6 @@ func TestSetupContextWithToken(t *testing.T) { pxSecretName: "", pxSharedSecretKey: "mysecret", securityEnabled: true, - skipSecurityCheck: false, expectTokenAdded: true, expectError: false, @@ -83,41 +81,19 @@ func TestSetupContextWithToken(t *testing.T) { pxConfigMapName: defaultConfigMap[0].Name, initialConfigMaps: defaultConfigMap, securityEnabled: true, - skipSecurityCheck: false, expectTokenAdded: true, expectError: false, }, { - name: "Default secret should generate and add token to context", - pxSecretName: defaultSecret[0].Name, - initialSecrets: defaultSecret, - securityEnabled: true, - skipSecurityCheck: false, - - expectTokenAdded: true, - expectError: false, - }, - { - name: "Default secret should generate and add token to context when security is disabled but security check is skipped", - pxSecretName: defaultSecret[0].Name, - initialSecrets: defaultSecret, - securityEnabled: false, - skipSecurityCheck: true, + name: "Default secret should generate and add token to context", + pxSecretName: defaultSecret[0].Name, + initialSecrets: defaultSecret, + securityEnabled: true, expectTokenAdded: true, expectError: false, }, - { - name: "Default secret should not be generated when security is disabled and security check is not skipped", - pxSecretName: defaultSecret[0].Name, - initialSecrets: defaultSecret, - securityEnabled: false, - skipSecurityCheck: false, - - expectTokenAdded: false, - expectError: false, - }, } for _, tc := range tt { t.Run(tc.name, func(t *testing.T) { @@ -198,7 +174,7 @@ func TestSetupContextWithToken(t *testing.T) { p := portworx{ k8sClient: k8sClient, } - ctx, err := pxutil.SetupContextWithToken(context.Background(), cluster, p.k8sClient, tc.skipSecurityCheck) + ctx, err := pxutil.SetupContextWithToken(context.Background(), cluster, p.k8sClient) if tc.expectError { assert.Error(t, err) assert.EqualError(t, err, tc.expectedError) diff --git a/drivers/storage/portworx/testspec/portworxClusterRole.yaml b/drivers/storage/portworx/testspec/portworxClusterRole.yaml index 9182b22c64..220415630b 100644 --- a/drivers/storage/portworx/testspec/portworxClusterRole.yaml +++ b/drivers/storage/portworx/testspec/portworxClusterRole.yaml @@ -48,6 +48,9 @@ rules: - apiGroups: ["core.libopenstorage.org"] resources: ["*"] verbs: ["*"] +- apiGroups: ["portworx.io"] + resources: ["portworxdiags", "portworxdiags/status"] + verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] - apiGroups: ["security.openshift.io"] resources: ["securitycontextconstraints"] resourceNames: ["portworx"] diff --git a/drivers/storage/portworx/testspec/prometheusOperatorClusterRole.yaml b/drivers/storage/portworx/testspec/prometheusOperatorClusterRole.yaml index 2e9c57c4e4..ef18bb4b38 100644 --- a/drivers/storage/portworx/testspec/prometheusOperatorClusterRole.yaml +++ b/drivers/storage/portworx/testspec/prometheusOperatorClusterRole.yaml @@ -20,6 +20,7 @@ rules: - alertmanagers - alertmanagers/finalizers - alertmanagerconfigs + - alertmanagers/status - prometheuses - prometheuses/status - prometheuses/finalizers diff --git a/drivers/storage/portworx/util/util.go b/drivers/storage/portworx/util/util.go index afa6dc8fd9..0729254773 100644 --- a/drivers/storage/portworx/util/util.go +++ b/drivers/storage/portworx/util/util.go @@ -79,8 +79,6 @@ const ( EssentialsOSBEndpointKey = "px-osb-endpoint" // EnvKeyKubeletDir env var to set custom kubelet directory EnvKeyKubeletDir = "KUBELET_DIR" - // Dummy Secret value for authentication when Security is disabled - DummySecretValue = "dummy-secret-value" // AnnotationIsPKS annotation indicating whether it is a PKS cluster AnnotationIsPKS = pxAnnotationPrefix + "/is-pks" @@ -161,6 +159,8 @@ const ( AnnotationServerTLSMinVersion = pxAnnotationPrefix + "/tls-min-version" // AnnotationServerTLSCipherSuites sets up TLS-servers w/ requested cipher suites AnnotationServerTLSCipherSuites = pxAnnotationPrefix + "/tls-cipher-suites" + // AnnotationsDisableNonDisruptiveUpgrade [=false] is used to disable smart and parallel kubetnetes node upgrades + AnnotationsDisableNonDisruptiveUpgrade = pxAnnotationPrefix + "/disable-non-disruptive-upgrade" // EnvKeyPXImage key for the environment variable that specifies Portworx image EnvKeyPXImage = "PX_IMAGE" @@ -300,6 +300,9 @@ var ( // ConfigMapNameRegex regex of configMap. ConfigMapNameRegex = regexp.MustCompile("[^a-zA-Z0-9]+") + + // ParallelUpgradePDBVersion is the portworx version from which parallel upgrades is supported + ParallelUpgradePDBVersion, _ = version.NewVersion("3.1.2") ) func getStrippedClusterName(cluster *corev1.StorageCluster) string { @@ -950,29 +953,26 @@ func SecurityEnabled(cluster *corev1.StorageCluster) bool { } // SetupContextWithToken Gets token or from secret for authenticating with the SDK server -func SetupContextWithToken(ctx context.Context, cluster *corev1.StorageCluster, k8sClient client.Client, skipSecurityCheck bool) (context.Context, error) { - // auth not declared in cluster spec - // if security enabled check is skipped, proceed without returning context - if !SecurityEnabled(cluster) && !skipSecurityCheck { - return ctx, nil - } +func SetupContextWithToken(ctx context.Context, cluster *corev1.StorageCluster, k8sClient client.Client) (context.Context, error) { + // Get the secret key for the system issuer + // return error if error is not NotFound pxAppsSecret, err := GetSecretValue(ctx, cluster, k8sClient, SecurityPXSystemSecretsSecretName, SecurityAppsSecretKey) - if err != nil { - if !skipSecurityCheck { - return ctx, fmt.Errorf("failed to get portworx apps secret: %v", err.Error()) - } - // if security enabled check is skipped and secret is not present, proceed with dummy secret value - // this is case of fresh install where security was never enabled - if errors.IsNotFound(err) && skipSecurityCheck { - pxAppsSecret = DummySecretValue - } + if err != nil && !errors.IsNotFound(err) { + return nil, err } - if pxAppsSecret == "" { + // if secret is not found, check if security is enabled + if errors.IsNotFound(err) { + if SecurityEnabled(cluster) { + // when security is enabled in STC, and secret is not found, return error + return nil, fmt.Errorf("failed to get portworx apps secret: %v", err.Error()) + } + // if security is not enabled in STC, it is okay to proceed without the secret return ctx, nil } + // security is enabled and secret is found // Generate token and add to metadata. name := "operator" pxAppsIssuerVersion, err := version.NewVersion("2.6.0") @@ -1119,9 +1119,10 @@ func CountStorageNodes( cluster *corev1.StorageCluster, sdkConn *grpc.ClientConn, k8sClient client.Client, + nodeEnumerateResponse *api.SdkNodeEnumerateWithFiltersResponse, ) (int, error) { nodeClient := api.NewOpenStorageNodeClient(sdkConn) - ctx, err := SetupContextWithToken(context.Background(), cluster, k8sClient, false) + ctx, err := SetupContextWithToken(context.Background(), cluster, k8sClient) if err != nil { return -1, err } @@ -1132,14 +1133,6 @@ func CountStorageNodes( clusterDomains, err := clusterDomainClient.Enumerate(ctx, &api.SdkClusterDomainsEnumerateRequest{}) isDRSetup = err == nil && len(clusterDomains.ClusterDomainNames) > 1 - nodeEnumerateResponse, err := nodeClient.EnumerateWithFilters( - ctx, - &api.SdkNodeEnumerateWithFiltersRequest{}, - ) - if err != nil { - return -1, fmt.Errorf("failed to enumerate nodes: %v", err) - } - // Use the quorum member flag from the node enumerate response if all the nodes are upgraded to the // newer version. The Enumerate response could be coming from any node and we want to make sure that // we are not talking to an old node when enumerating. @@ -1251,6 +1244,93 @@ func CountStorageNodes( return storageNodesCount, nil } +func getStorageNodeMappingFromRPC( + cluster *corev1.StorageCluster, + sdkConn *grpc.ClientConn, + k8sClient client.Client, +) (map[string]string, map[string]string, error) { + nodeClient := api.NewOpenStorageNodeClient(sdkConn) + ctx, err := SetupContextWithToken(context.Background(), cluster, k8sClient) + if err != nil { + return nil, nil, err + } + + nodeEnumerateResponse, err := nodeClient.EnumerateWithFilters( + ctx, + &api.SdkNodeEnumerateWithFiltersRequest{}, + ) + if err != nil { + return nil, nil, fmt.Errorf("failed to enumerate nodes: %v", err) + } + + nodeNameToNodeID := map[string]string{} + nodeIDToNodeName := map[string]string{} + + // Loop through all storage nodes + for _, n := range nodeEnumerateResponse.Nodes { + if n.SchedulerNodeName == "" { + continue + } + + nodeNameToNodeID[n.SchedulerNodeName] = n.Id + nodeIDToNodeName[n.Id] = n.SchedulerNodeName + } + + return nodeNameToNodeID, nodeIDToNodeName, nil +} + +func getStorageNodeMappingFromK8s( + cluster *corev1.StorageCluster, + k8sClient client.Client, +) (map[string]string, map[string]string, error) { + nodes := &corev1.StorageNodeList{} + err := k8sClient.List(context.TODO(), nodes, &client.ListOptions{Namespace: cluster.Namespace}) + if err != nil { + return nil, nil, fmt.Errorf("failed to list StorageNodes: %v", err) + } + + nodeNameToNodeID := map[string]string{} + nodeIDToNodeName := map[string]string{} + + // Loop through all storage nodes + for _, n := range nodes.Items { + if n.Status.NodeUID == "" { + continue + } + + nodeNameToNodeID[n.Name] = n.Status.NodeUID + nodeIDToNodeName[n.Status.NodeUID] = n.Name + } + + return nodeNameToNodeID, nodeIDToNodeName, nil +} + +// GetStorageNodeMapping returns a mapping of node name to node ID, as well as the inverse mapping. +// If sdkConn is nil, it will fall back to k8s API which may not be up to date. +// If both fail then the error will be returned. +func GetStorageNodeMapping( + cluster *corev1.StorageCluster, + sdkConn *grpc.ClientConn, + k8sClient client.Client, +) (map[string]string, map[string]string, error) { + var nodeNameToNodeID, nodeIDToNodeName map[string]string + var rpcErr, k8sErr error + + if sdkConn != nil { + nodeNameToNodeID, nodeIDToNodeName, rpcErr = getStorageNodeMappingFromRPC(cluster, sdkConn, k8sClient) + if rpcErr == nil { + return nodeNameToNodeID, nodeIDToNodeName, nil + } + logrus.WithError(rpcErr).Warn("Failed to get storage node mapping from RPC, falling back to k8s API which may not be up to date") + } + + nodeNameToNodeID, nodeIDToNodeName, k8sErr = getStorageNodeMappingFromK8s(cluster, k8sClient) + if k8sErr != nil { + return nil, nil, fmt.Errorf("failed to get storage node mapping from both RPC and k8s. RPC err: %v. k8s err: %v", rpcErr, k8sErr) + } + return nodeNameToNodeID, nodeIDToNodeName, nil +} + func CleanupObject(obj client.Object) { obj.SetGenerateName("") obj.SetUID("") @@ -1550,3 +1630,198 @@ func IsTokenRefreshRequired(secret *v1.Secret, tokenRefreshTimeKey string) (bool } return false, nil } + +// Get list of storagenodes that are a part of the current cluster that need a node PDB +func NodesNeedingPDB(k8sClient client.Client, nodeEnumerateResponse *api.SdkNodeEnumerateWithFiltersResponse, k8sNodeList *v1.NodeList) ([]string, error) { + + // Get list of kubernetes nodes that are a part of the current cluster and are not cordoned + k8sNodesStoragePodCouldRun := make(map[string]bool) + for _, node := range k8sNodeList.Items { + // Do not create/update PDB for cordoned nodes. Such nodes will have PDB already created previously. + // This can also be used when an upgrade is stuck or to upgrade 1 node. User can cordon node and delete the PDB on that node to upgrade it + if !node.Spec.Unschedulable { + k8sNodesStoragePodCouldRun[node.Name] = true + } + } + + // Create a list of nodes that are part of quorum to create node PDB for them + nodesNeedingPDB := make([]string, 0) + for _, node := range nodeEnumerateResponse.Nodes { + // Do not add node if its not part of quorum or is decomissioned + if node.Status == api.Status_STATUS_DECOMMISSION || node.NonQuorumMember { + logrus.Debugf("Node %s is not a quorum member or is decomissioned, skipping", node.Id) + continue + } + + if _, ok := k8sNodesStoragePodCouldRun[node.SchedulerNodeName]; ok { + nodesNeedingPDB = append(nodesNeedingPDB, node.SchedulerNodeName) + } + } + + return nodesNeedingPDB, nil +} + +// List of nodes that have an existing pdb but are no longer in k8s cluster or not a portworx storage node +func NodesToDeletePDB(k8sClient client.Client, nodeEnumerateResponse *api.SdkNodeEnumerateWithFiltersResponse, k8sNodeList *v1.NodeList) ([]string, error) { + // nodeCounts map is used to find the elements that are uncommon between list of k8s nodes in cluster + // and list of portworx storage nodes. Used to find nodes where PDB needs to be deleted + nodeCounts := make(map[string]int) + + // Increase count of each node + for _, node := range k8sNodeList.Items { + nodeCounts[node.Name]++ + } + + // Get list of storage nodes that are part of quorum and increment count of each node + nodesToDeletePDB := make([]string, 0) + for _, node := range nodeEnumerateResponse.Nodes { + if node.Status == api.Status_STATUS_DECOMMISSION || node.NonQuorumMember { + continue + } + nodeCounts[node.SchedulerNodeName]++ + } + + // Nodes with count 1 might have a node PDB but should not, so delete the PDB for such nodes + for node, count := range nodeCounts { + if count == 1 { + nodesToDeletePDB = append(nodesToDeletePDB, node) + } + } + return nodesToDeletePDB, nil + +} + +func ClusterSupportsParallelUpgrade(nodes []*api.StorageNode) bool { + + for _, node := range nodes { + if node.Status == api.Status_STATUS_DECOMMISSION { + continue + } + v := node.NodeLabels[NodeLabelPortworxVersion] + if v == "" { + logrus.Infof("Node [ %s ] does not have a version label", node.Id) + continue + } + nodeVersion, err := version.NewVersion(v) + if err != nil { + logrus.Warnf("Failed to parse node version [ %s ] for node %s: %v", v, node.Id, err) + return false + } + if nodeVersion.LessThan(ParallelUpgradePDBVersion) { + return false + } + } + return true +} + +func getNodeUpgradeMaps(k8sClient client.Client, namespace string, cordonedPxNodesMap map[string]bool) (map[string]bool, map[string]bool, error) { + nodesUpgrading := make(map[string]bool, 0) + canBeUpgradedNodes := make(map[string]bool) + nodePDBs, err := k8sutil.ListPodDisruptionBudgets(k8sClient, namespace) + if err != nil { + return nodesUpgrading, canBeUpgradedNodes, err + } + for _, pdb := range nodePDBs.Items { + k8sNode := strings.TrimPrefix(pdb.Name, "px-") + if strings.HasPrefix(pdb.Name, "px-") && cordonedPxNodesMap[k8sNode] && pdb.Spec.MinAvailable.IntVal > 0 { + canBeUpgradedNodes[k8sNode] = true + } + } + for node := range cordonedPxNodesMap { + if _, ok := canBeUpgradedNodes[node]; !ok { + nodesUpgrading[node] = true + } + } + return nodesUpgrading, canBeUpgradedNodes, nil +} + +func GetNodesToUpgrade(cluster *corev1.StorageCluster, + nodeEnumerateResponse *api.SdkNodeEnumerateWithFiltersResponse, + k8sNodeList *v1.NodeList, + k8sClient client.Client, + sdkConn *grpc.ClientConn, +) ([]string, map[string]string, int, error) { + + cordonedPxNodes := make([]string, 0) + cordonedK8sNodes := make(map[string]bool) + cordonedPxNodesMap := make(map[string]string) + canBeUpgradedNodes := make([]string, 0) + nodesUpgrading := make([]string, 0) + nodesDown := 0 + + // Find if kubernetes nodes have been cordoned + for _, node := range k8sNodeList.Items { + if node.Spec.Unschedulable { + cordonedK8sNodes[node.Name] = true + } + } + + // Check all nodes with PDB 0 and add to another list + // Get list of nodes that have PDB minAvailable 1 and nodes that have PDB minAvailable 0 or no PDB exists + nodesUpgradingMap, canBeUpgradedNodesMap, err := getNodeUpgradeMaps(k8sClient, cluster.Namespace, cordonedK8sNodes) + if err != nil { + return nil, nil, -1, err + } + + for _, node := range nodeEnumerateResponse.Nodes { + if node.Status == api.Status_STATUS_DECOMMISSION || node.NonQuorumMember { + logrus.Debugf("Node %s is not a quorum member or is decomissioned, skipping", node.Id) + continue + } + // Node is cordoned and can be either upgraded or is already selected for an upgrade + if _, ok := cordonedK8sNodes[node.SchedulerNodeName]; ok { + cordonedPxNodes = append(cordonedPxNodes, node.Id) + cordonedPxNodesMap[node.Id] = node.SchedulerNodeName + } + if _, ok := nodesUpgradingMap[node.SchedulerNodeName]; ok { + nodesUpgrading = append(nodesUpgrading, node.Id) + } else if _, ok := canBeUpgradedNodesMap[node.SchedulerNodeName]; ok { + canBeUpgradedNodes = append(canBeUpgradedNodes, node.Id) + } + if _, upgrading := nodesUpgradingMap[node.SchedulerNodeName]; upgrading || nodeStatusDown(node.Status) { + nodesDown++ + } + } + + if cluster.Annotations != nil && cluster.Annotations[AnnotationsDisableNonDisruptiveUpgrade] == "true" { + return canBeUpgradedNodes, cordonedPxNodesMap, nodesDown, nil + } + + // Make a request to SDK API FilterNonOverlappingNodes to get output of list of nodes that can be upgraded in parallel + nodeClient := api.NewOpenStorageNodeClient(sdkConn) + ctx, err := SetupContextWithToken(context.Background(), cluster, k8sClient) + if err != nil { + return nil, nil, -1, err + } + nodeFilterResponse, err := nodeClient.FilterNonOverlappingNodes( + ctx, + &api.SdkFilterNonOverlappingNodesRequest{ + InputNodes: cordonedPxNodes, + DownNodes: nodesUpgrading, + }, + ) + if err != nil { + return nil, nil, -1, fmt.Errorf("failed to filter nodes: %v", err) + } + return nodeFilterResponse.NodeIds, cordonedPxNodesMap, nodesDown, nil +} + +func nodeStatusDown(status api.Status) bool { + switch status { + case api.Status_STATUS_OK: + fallthrough + case api.Status_STATUS_MAINTENANCE: + fallthrough + case api.Status_STATUS_STORAGE_DOWN: + fallthrough + case api.Status_STATUS_STORAGE_DEGRADED: + fallthrough + case api.Status_STATUS_NEEDS_REBOOT: + fallthrough + case api.Status_STATUS_STORAGE_REBALANCE: + fallthrough + case api.Status_STATUS_STORAGE_DRIVE_REPLACE: + return false + } + return true +} diff --git a/drivers/storage/storage.go b/drivers/storage/storage.go index 05126e8bb9..93c64112b0 100644 --- a/drivers/storage/storage.go +++ b/drivers/storage/storage.go @@ -78,6 +78,9 @@ type ClusterPluginInterface interface { GetStorageNodes(cluster *corev1.StorageCluster) ([]*storageapi.StorageNode, error) // GetKVDBMembers returns a map of Nodes with kvdb and if its healthy or not GetKVDBMembers(cluster *corev1.StorageCluster) (map[string]bool, error) + // GetNodesSelectedForUpgrade returns a list of pods that can be upgraded without losing volume quorum + // The function calls filterNonOverlappingNodes API for portworx versions greater than or equal to 3.1.2 + GetNodesSelectedForUpgrade(cluster *corev1.StorageCluster, nodesToBeUpgraded []string, unavailableNodes []string) ([]string, error) } var ( diff --git a/go.mod b/go.mod index 62627ee4d8..c6911c57ad 100644 --- a/go.mod +++ b/go.mod @@ -39,6 +39,7 @@ require ( k8s.io/utils v0.0.0-20230505201702-9f6742963106 sigs.k8s.io/cluster-api v0.2.11 sigs.k8s.io/controller-runtime v0.14.5 + sigs.k8s.io/controller-tools v0.11.3 sigs.k8s.io/yaml v1.4.0 ) @@ -53,6 +54,7 @@ require ( github.com/coreos/go-semver v0.3.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/dgrijalva/jwt-go v3.2.1-0.20180719211823-0b96aaa70776+incompatible // indirect github.com/docker/distribution v2.8.2+incompatible // indirect github.com/emicklei/go-restful/v3 v3.10.2 // indirect github.com/evanphx/json-patch v5.6.0+incompatible // indirect @@ -62,6 +64,7 @@ require ( github.com/go-openapi/jsonpointer v0.19.6 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/swag v0.22.3 // indirect + github.com/gobuffalo/flect v0.3.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect @@ -78,6 +81,7 @@ require ( github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/serf v0.10.1 // indirect github.com/imdario/mergo v0.3.13 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect @@ -102,6 +106,7 @@ require ( github.com/prometheus/common v0.42.0 // indirect github.com/prometheus/procfs v0.9.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/spf13/cobra v1.7.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/stretchr/objx v0.5.0 // indirect golang.org/x/crypto v0.18.0 // indirect @@ -130,7 +135,7 @@ require ( replace ( github.com/coreos/prometheus-operator => github.com/prometheus-operator/prometheus-operator v0.46.0 github.com/kubernetes-incubator/external-storage => github.com/libopenstorage/external-storage v5.1.1-0.20190919185747-9394ee8dd536+incompatible - github.com/libopenstorage/openstorage => github.com/libopenstorage/openstorage v1.0.1-0.20240221210452-7757fdc2b8ff + github.com/libopenstorage/openstorage => github.com/libopenstorage/openstorage v1.0.1-0.20240606014227-75ac074bb81d github.com/portworx/sched-ops => github.com/portworx/sched-ops v1.20.4-rc1.0.20240731224434-94e4e354c4b2 github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring => github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.46.0 golang.org/x/tools => golang.org/x/tools v0.1.11 diff --git a/go.sum b/go.sum index 74c9b5a027..47d66b9d7d 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,4 @@ 4d63.com/gochecknoglobals v0.1.0/go.mod h1:wfdC5ZjKSPr7CybKEcgJhUOgeAQW1+7WcyK8OvUilfo= -bazil.org/fuse v0.0.0-20160317181031-37bfa8be9291/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= bazil.org/fuse v0.0.0-20180421153158-65cc252bf669/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= bazil.org/fuse v0.0.0-20200407214033-5883e5a4b512/go.mod h1:FbcW6z/2VytnFDhZfumh8Ss8zxHE6qpMP5sHTRe0EaM= @@ -1410,7 +1409,6 @@ github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXn github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= -github.com/Microsoft/hcsshim v0.8.10-0.20200715222032-5eafd1556990/go.mod h1:ay/0dTb7NsG8QMDfsRfLHgZo/6xAJShLe1+ePPflihk= github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00= github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600= @@ -1864,7 +1862,6 @@ github.com/containerd/cgroups/v3 v3.0.2/go.mod h1:JUgITrzdFqp42uI2ryGA+ge0ap/nxz github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= -github.com/containerd/console v1.0.0/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= @@ -2056,7 +2053,6 @@ github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnG github.com/dave/dst v0.26.2/go.mod h1:UMDJuIRPfyUCC78eFuB+SV/WI8oDeyFDvM/JR6NI3IU= github.com/dave/gopackages v0.0.0-20170318123100-46e7023ec56e/go.mod h1:i00+b/gKdIDIxuLDFob7ustLAVqhsZRk2qVZrArELGQ= github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= -github.com/dave/jennifer v1.4.1/go.mod h1:7jEdnm+qBcxl8PC0zyp7vxcpSRnzXSt9r39tpTVGlwA= github.com/dave/kerr v0.0.0-20170318121727-bc25dd6abe8e/go.mod h1:qZqlPyPvfsDJt+3wHJ1EvSXDuVjFTK0j2p/ca+gtsb8= github.com/dave/rebecca v0.9.1/go.mod h1:N6XYdMD/OKw3lkF3ywh8Z6wPGuwNFDNtWYEMFWEmXBA= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -2567,6 +2563,7 @@ github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= github.com/gobuffalo/flect v0.2.4/go.mod h1:1ZyCLIbg0YD7sDkzvFdPoOydPtD8y9JQnrOROolUcM8= github.com/gobuffalo/flect v0.2.5/go.mod h1:1ZyCLIbg0YD7sDkzvFdPoOydPtD8y9JQnrOROolUcM8= +github.com/gobuffalo/flect v0.3.0 h1:erfPWM+K1rFNIQeRPdeEXxo8yFr/PO17lhRnS8FUrtk= github.com/gobuffalo/flect v0.3.0/go.mod h1:5pf3aGnsvqvCj50AVni7mJJF8ICxGZ8HomberC3pXLE= github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk= github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28= @@ -3206,6 +3203,7 @@ github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/influxdata/flux v0.65.0/go.mod h1:BwN2XG2lMszOoquQaFdPET8FRQfrXiZsWmcMO9rkaVY= github.com/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7mYlOw2LqY= @@ -3328,7 +3326,6 @@ github.com/jmoiron/sqlx v1.3.4/go.mod h1:2BljVx/86SuTyjE+aPYlHCTNvZrnJXghYGpNiXL github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak= -github.com/johannesboyne/gofakes3 v0.0.0-20210819161434-5c8dfcfe5310/go.mod h1:LIAXxPvcUXwOcTIj9LSNSUpE9/eMHalTWxsP/kmWxQI= github.com/johannesboyne/gofakes3 v0.0.0-20221110173912-32fb85c5aed6/go.mod h1:LIAXxPvcUXwOcTIj9LSNSUpE9/eMHalTWxsP/kmWxQI= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/joho/godotenv v1.4.0/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= @@ -3500,8 +3497,8 @@ github.com/libopenstorage/external-storage v5.1.1-0.20190919185747-9394ee8dd536+ github.com/libopenstorage/gossip v0.0.0-20190507031959-c26073a01952/go.mod h1:TjXt2Iz2bTkpfc4Q6xN0ttiNipTVwEEYoZSMZHlfPek= github.com/libopenstorage/gossip v0.0.0-20200808224301-d5287c7c8b24/go.mod h1:TjXt2Iz2bTkpfc4Q6xN0ttiNipTVwEEYoZSMZHlfPek= github.com/libopenstorage/gossip v0.0.0-20220309192431-44c895e0923e/go.mod h1:TjXt2Iz2bTkpfc4Q6xN0ttiNipTVwEEYoZSMZHlfPek= -github.com/libopenstorage/openstorage v1.0.1-0.20240221210452-7757fdc2b8ff h1:9uognDSvafpcrNICT8I5OJRt9TlLeV61cF6nIl9KwBQ= -github.com/libopenstorage/openstorage v1.0.1-0.20240221210452-7757fdc2b8ff/go.mod h1:8E8ueY3NJV+tcOr1BQBvyNU9FRtDfcRGB7+trr07+rA= +github.com/libopenstorage/openstorage v1.0.1-0.20240606014227-75ac074bb81d h1:78B1/PZbepCK9B8DZnHocsguum0XWRtAi7pr6p40big= +github.com/libopenstorage/openstorage v1.0.1-0.20240606014227-75ac074bb81d/go.mod h1:Sp1sIObHjat1BeXhfMqLZ14wnOzEhNx2YQedreMcUyc= github.com/libopenstorage/openstorage-sdk-clients v0.109.0/go.mod h1:vo0c/nLG2HIyQva4Avwx61U1kWcw4HGQh3sjzV2DEEs= github.com/libopenstorage/operator v0.0.0-20230202214252-140e2e1fd86a/go.mod h1:Q66wsNUAekPawgGg9yh0Bs7eXWPa4/+c2JTefdiDciM= github.com/libopenstorage/operator v0.0.0-20230323034810-8853b151f594/go.mod h1:0S4k1ouTScuVS3rxPukfEFvc5bMasmI1wpAAM0NejWQ= @@ -3735,7 +3732,6 @@ github.com/moby/patternmatcher v0.5.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YO github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/sys/mount v0.2.0/go.mod h1:aAivFE2LB3W4bACsUXChRHQ0qKWsetY4Y9V7sxOougM= -github.com/moby/sys/mountinfo v0.1.3/go.mod h1:w2t2Avltqx8vE7gX5l+QiBKxODu2TX0+Syr3h52Tw4o= github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= @@ -3777,7 +3773,6 @@ github.com/mozillazg/go-cos v0.13.0/go.mod h1:Zp6DvvXn0RUOXGJ2chmWt2bLEqRAnJnS3D github.com/mozillazg/go-httpheader v0.2.1/go.mod h1:jJ8xECTlalr6ValeXYdOF8fFUISeBAdw6E61aqQma60= github.com/mreiferson/go-httpclient v0.0.0-20160630210159-31f0106b4474/go.mod h1:OQA4XLvDbMgS8P0CevmM4m9Q3Jq4phKUzcocxuGJ5m8= github.com/mreiferson/go-httpclient v0.0.0-20201222173833-5e475fde3a4d/go.mod h1:OQA4XLvDbMgS8P0CevmM4m9Q3Jq4phKUzcocxuGJ5m8= -github.com/mrunalp/fileutils v0.0.0-20200520151820-abd8a0e76976/go.mod h1:x8F1gnqOkIEiO4rqoeEEEqQbo7HjGMTvyoq3gej4iT0= github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= @@ -3926,7 +3921,6 @@ github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5X github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc92/go.mod h1:X1zlU4p7wOlX4+WRCz+hvlRv8phdL7UqbYD+vQwNMmE= github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= github.com/opencontainers/runc v1.1.0/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc= @@ -3937,7 +3931,6 @@ github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.m github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.3-0.20200728170252-4d89ac9fbff6/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20220825212826-86290f6a00fb/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= @@ -4446,6 +4439,7 @@ github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM= github.com/spf13/cobra v1.6.0/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -4913,7 +4907,6 @@ go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= -go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= @@ -6164,7 +6157,6 @@ k8s.io/kube-openapi v0.0.0-20180731170545-e3762e86a74c/go.mod h1:BXM9ceUBTj2QnfH k8s.io/kube-openapi v0.0.0-20181114233023-0317810137be/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc= k8s.io/kube-openapi v0.0.0-20190722073852-5e22f3d471e6/go.mod h1:RZvgC8MSN6DjiMV6oIfEE9pDL9CYXokkfaCKZeHm3nc= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= -k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= k8s.io/kube-openapi v0.0.0-20210216185858-15cd8face8d6/go.mod h1:wXW5VT87nVfh/iLV8FpR2uDvrFyomxbtb1KivDbvPTE= k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= @@ -6301,9 +6293,9 @@ sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.32/go.mod h1:fEO7lR sigs.k8s.io/cli-utils v0.27.0/go.mod h1:8ll2fyx+bzjbwmwUnKBQU+2LDbMDsxy44DiDZ+drALg= sigs.k8s.io/cluster-api v0.2.11 h1:sUngHVvh/DyHhERR1fo7eH2N/xS5qfnK7pCtwrErs68= sigs.k8s.io/cluster-api v0.2.11/go.mod h1:BCw+Pqy1sc8mQ/3d2NZM/f5BApKFCMPsnGvKolvDcA0= -sigs.k8s.io/container-object-storage-interface-spec v0.0.0-20220211001052-50e143052de8/go.mod h1:kafkL5l/lTUrZXhVi/9p1GzpEE/ts29BkWkL3Ao33WU= sigs.k8s.io/controller-runtime v0.13.0 h1:iqa5RNciy7ADWnIc8QxCbOX5FEKVR3uxVxKHRMc2WIQ= sigs.k8s.io/controller-runtime v0.13.0/go.mod h1:Zbz+el8Yg31jubvAEyglRZGdLAjplZl+PgtYNI6WNTI= +sigs.k8s.io/controller-tools v0.11.3 h1:T1xzLkog9saiyQSLz1XOImu4OcbdXWytc5cmYsBeBiE= sigs.k8s.io/controller-tools v0.11.3/go.mod h1:qcfX7jfcfYD/b7lAhvqAyTbt/px4GpvN88WKLFFv7p8= sigs.k8s.io/gcp-compute-persistent-disk-csi-driver v0.7.0/go.mod h1:aSyCjg9bNQQxY9hnnNo10vjhZsQTkLliruvRXp3N9B4= sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= diff --git a/pkg/apis/addtoscheme_portworx_v1.go b/pkg/apis/addtoscheme_portworx_v1.go new file mode 100644 index 0000000000..83c06e4e3a --- /dev/null +++ b/pkg/apis/addtoscheme_portworx_v1.go @@ -0,0 +1,10 @@ +package apis + +import ( + v1 "github.com/libopenstorage/operator/pkg/apis/portworx/v1" +) + +func init() { + // Register the types with the Scheme so the components can map objects to GroupVersionKinds and back + AddToSchemes = append(AddToSchemes, v1.SchemeBuilder.AddToScheme) +} diff --git a/pkg/apis/core/v1/storagecluster.go b/pkg/apis/core/v1/storagecluster.go index ed9a7e87f7..c401569d3b 100644 --- a/pkg/apis/core/v1/storagecluster.go +++ b/pkg/apis/core/v1/storagecluster.go @@ -275,6 +275,17 @@ type RollingUpdateStorageCluster struct { // Defaults to 0 (pod will be considered available as soon as it is ready) // +optional MinReadySeconds int32 `json:"minReadySeconds,omitempty"` + + // The default behavior is non-disruptive upgrades. This setting disables the default + // non-disruptive upgrades and reverts to the previous behavior of upgrading nodes in + // parallel without worrying about disruption. + Disruption *Disruption `json:"disruption,omitempty"` +} + +// Disruption contains configuration for disruption +type Disruption struct { + // Flag indicates whether updates are non-disruptive or disruptive. + Allow bool `json:"allow,omitempty"` } // StorageClusterDeleteStrategyType is enum for storage cluster delete strategies diff --git a/pkg/apis/portworx/v1/portworxdiag.go b/pkg/apis/portworx/v1/portworxdiag.go index d2222603e5..535ed468c4 100644 --- a/pkg/apis/portworx/v1/portworxdiag.go +++ b/pkg/apis/portworx/v1/portworxdiag.go @@ -11,6 +11,12 @@ const ( NodeStatusFailed = "Failed" NodeStatusCompleted = "Completed" + //Pod Logs Statuses + PodLogStatusPending = "Pending" + PodLogStatusInProgress = "InProgress" + PodLogStatusFailed = "Failed" + PodLogStatusCompleted = "Completed" + // Diag Statuses DiagStatusPending = "Pending" DiagStatusInProgress = "InProgress" @@ -37,6 +43,9 @@ type PortworxComponent struct { NodeSelector NodeSelector `json:"nodes,omitempty"` // Volumes for which the diags need to be collected. VolumeSelector VolumeSelector `json:"volumes,omitempty"` + // Collects all the pod logs. Used to specify whether Pod logs need to be + // collected or not. + CollectPodLogs bool `json:"collectPodLogs,omitempty"` // Generates the core dump as well when collecting the diags. Could be useful // to analyze the current state of the system. GenerateCore bool `json:"generateCore,omitempty"` @@ -76,6 +85,16 @@ type PortworxDiagStatus struct { ClusterUUID string `json:"clusterUuid,omitempty"` // Status of the diags collection from all the selected nodes. NodeStatuses []NodeStatus `json:"nodes,omitempty"` + // Status of the diags collection from all the pods. + PodLogsStatus PodLogStatus `json:"collectPodLogs,omitempty"` +} + +// Status of the pod logs collection for all the pods. +type PodLogStatus struct { + // One word status of the pod logs collection. + Status string `json:"status,omitempty"` + // Optional message used to give the reason for any failure. + Message string `json:"message,omitempty"` } // Status of the diags collection from a single node. diff --git a/pkg/apis/portworx/v1/zz_generated.deepcopy.go b/pkg/apis/portworx/v1/zz_generated.deepcopy.go index 551ec620d9..67e1af6dff 100644 --- a/pkg/apis/portworx/v1/zz_generated.deepcopy.go +++ b/pkg/apis/portworx/v1/zz_generated.deepcopy.go @@ -1,5 +1,4 @@ //go:build !ignore_autogenerated -// +build !ignore_autogenerated // Code generated by controller-gen. DO NOT EDIT. @@ -51,6 +50,21 @@ func (in *NodeStatus) DeepCopy() *NodeStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodLogStatus) DeepCopyInto(out *PodLogStatus) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodLogStatus. +func (in *PodLogStatus) DeepCopy() *PodLogStatus { + if in == nil { + return nil + } + out := new(PodLogStatus) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PortworxComponent) DeepCopyInto(out *PortworxComponent) { *out = *in @@ -155,6 +169,7 @@ func (in *PortworxDiagStatus) DeepCopyInto(out *PortworxDiagStatus) { *out = make([]NodeStatus, len(*in)) copy(*out, *in) } + out.PodLogsStatus = in.PodLogsStatus } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortworxDiagStatus. diff --git a/pkg/constants/metadata.go b/pkg/constants/metadata.go index e00083086a..d4871759f7 100644 --- a/pkg/constants/metadata.go +++ b/pkg/constants/metadata.go @@ -52,6 +52,9 @@ const ( OperatorLabelManagedByKey = OperatorPrefix + "/managed-by" // OperatorLabelManagedByValue indicates that the object is managed by portworx. OperatorLabelManagedByValue = "portworx" + // OperatorLabelNodeNameKey holds the value of the kubernetes node on whcih the portworx pod is running + // Used for creating a Node PDB + OperatorLabelNodeNameKey = OperatorPrefix + "/node-name" ) const ( diff --git a/pkg/controller/portworxdiag/controller_test.go b/pkg/controller/portworxdiag/controller_test.go new file mode 100644 index 0000000000..e1dc976667 --- /dev/null +++ b/pkg/controller/portworxdiag/controller_test.go @@ -0,0 +1,1182 @@ +package portworxdiag + +import ( + "context" + "fmt" + "reflect" + "strconv" + "testing" + "time" + + "github.com/golang/mock/gomock" + "github.com/libopenstorage/openstorage/api" + pxutil "github.com/libopenstorage/operator/drivers/storage/portworx/util" + corev1 "github.com/libopenstorage/operator/pkg/apis/core/v1" + diagv1 "github.com/libopenstorage/operator/pkg/apis/portworx/v1" + "github.com/libopenstorage/operator/pkg/mock" + apiextensionsops "github.com/portworx/sched-ops/k8s/apiextensions" + coreops "github.com/portworx/sched-ops/k8s/core" + "github.com/stretchr/testify/require" + v1 "k8s.io/api/core/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + fakeextclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/fake" + "k8s.io/apimachinery/pkg/api/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/util/wait" + kversion "k8s.io/apimachinery/pkg/version" + fakediscovery "k8s.io/client-go/discovery/fake" + fakek8sclient "k8s.io/client-go/kubernetes/fake" + "k8s.io/client-go/rest" + "k8s.io/client-go/tools/record" + k8scontroller "k8s.io/kubernetes/pkg/controller" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/reconcile" + + "github.com/libopenstorage/operator/pkg/client/clientset/versioned/scheme" + testutil "github.com/libopenstorage/operator/pkg/util/test" +) + +var ( + podCreateCount = 0 +) + +func createK8sNode(nodeName string, allowedPods int) *v1.Node { + return &v1.Node{ + ObjectMeta: metav1.ObjectMeta{ + Name: nodeName, + Labels: make(map[string]string), + }, + Status: v1.NodeStatus{ + Allocatable: map[v1.ResourceName]resource.Quantity{ + v1.ResourcePods: resource.MustParse(strconv.Itoa(allowedPods)), + }, + }, + } +} + +func createGRPCStorageNode(name, id string) *api.StorageNode { + return &api.StorageNode{ + Id: id, + SchedulerNodeName: name, + } +} + +func setUpGRPCMocks(t *testing.T, ns string) (*mock.MockOpenStorageNodeServer, *mock.MockOpenStorageVolumeServer, *v1.Service, func()) { + var ( + sdkServerIP = "127.0.0.1" + sdkServerPort = 23888 + ) + + // Run this first to detect permission errors early + testutil.SetupEtcHosts(t, sdkServerIP, pxutil.PortworxServiceName+"."+ns) + + mockCtrl := gomock.NewController(t) + + // Create the mock servers that can be used to mock SDK calls + var ( + mockNodeServer = mock.NewMockOpenStorageNodeServer(mockCtrl) + mockVolumeServer = mock.NewMockOpenStorageVolumeServer(mockCtrl) + + // Start an sdk server that implements the mock servers + mockSdk = mock.NewSdkServer(mock.SdkServers{ + Node: mockNodeServer, + Volume: mockVolumeServer, + }) + ) + + err := mockSdk.StartOnAddress(sdkServerIP, strconv.Itoa(sdkServerPort)) + require.NoError(t, err) + + pxService := &v1.Service{ + ObjectMeta: metav1.ObjectMeta{ + Name: pxutil.PortworxServiceName, + Namespace: ns, + }, + Spec: v1.ServiceSpec{ + ClusterIP: sdkServerIP, + Ports: []v1.ServicePort{ + { + Name: pxutil.PortworxSDKPortName, + Port: int32(sdkServerPort), + }, + }, + }, + } + + return mockNodeServer, mockVolumeServer, pxService, func() { + mockSdk.Stop() + mockCtrl.Finish() + testutil.RestoreEtcHosts(t) + } +} + +func applyPodControlTemplates(t *testing.T, k8sClient client.Client, podControl *k8scontroller.FakePodControl) []*v1.Pod { + createdPods := []*v1.Pod{} + for _, template := range podControl.Templates { + newPod := &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: template.GenerateName + strconv.Itoa(podCreateCount), + Namespace: template.Namespace, + Labels: template.Labels, + }, + Spec: template.Spec, + } + err := k8sClient.Create(context.Background(), newPod) + require.NoError(t, err) + createdPods = append(createdPods, newPod) + podCreateCount += 1 + } + podControl.Templates = []v1.PodTemplateSpec{} + return createdPods +} + +func TestInit(t *testing.T) { + mockCtrl := gomock.NewController(t) + + fakeClient := fakek8sclient.NewSimpleClientset() + k8sClient := testutil.FakeK8sClient() + coreops.SetInstance(coreops.New(fakeClient)) + recorder := record.NewFakeRecorder(10) + + mgr := mock.NewMockManager(mockCtrl) + mgr.EXPECT().GetClient().Return(k8sClient).AnyTimes() + mgr.EXPECT().GetScheme().Return(scheme.Scheme).AnyTimes() + mgr.EXPECT().GetEventRecorderFor(gomock.Any()).Return(recorder).AnyTimes() + mgr.EXPECT().SetFields(gomock.Any()).Return(nil).AnyTimes() + mgr.EXPECT().Add(gomock.Any()).Return(nil).AnyTimes() + mgr.EXPECT().GetLogger().Return(log.Log.WithName("test")).AnyTimes() + mgr.EXPECT().GetConfig().Return(&rest.Config{ + Host: "127.0.0.1", + APIPath: "fake", + }).AnyTimes() + + controller := Controller{ + client: k8sClient, + recorder: recorder, + } + err := controller.Init(mgr) + require.NoError(t, err) + + ctrl := mock.NewMockController(mockCtrl) + controller.ctrl = ctrl + ctrl.EXPECT().Watch(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() + + err = controller.StartWatch() + require.NoError(t, err) +} + +func TestRegisterCRD(t *testing.T) { + fakeClient := fakek8sclient.NewSimpleClientset() + fakeClient.Discovery().(*fakediscovery.FakeDiscovery).FakedServerVersion = &kversion.Info{ + GitVersion: "v1.23.0", + } + fakeExtClient := fakeextclient.NewSimpleClientset() + coreops.SetInstance(coreops.New(fakeClient)) + apiextensionsops.SetInstance(apiextensionsops.New(fakeExtClient)) + group := diagv1.SchemeGroupVersion.Group + portworxDiagCRDName := "portworxdiags" + "." + group + + // When the CRDs are created, just updated their status so the validation + // does not get stuck until timeout. + go func() { + err := testutil.ActivateCRDWhenCreated(fakeExtClient, portworxDiagCRDName) + require.NoError(t, err) + }() + + controller := Controller{} + + // Should fail if the CRD specs are not found + err := controller.RegisterCRD() + require.Error(t, err) + + // Set the correct crd path + crdBaseDir = func() string { + return "../../../deploy/crds" + } + defer func() { + crdBaseDir = getCRDBasePath + }() + + err = controller.RegisterCRD() + require.NoError(t, err) + + crds, err := fakeExtClient.ApiextensionsV1(). + CustomResourceDefinitions(). + List(context.TODO(), metav1.ListOptions{}) + require.NoError(t, err) + require.Len(t, crds.Items, 1) + + pdCRD, err := fakeExtClient.ApiextensionsV1(). + CustomResourceDefinitions(). + Get(context.TODO(), portworxDiagCRDName, metav1.GetOptions{}) + require.NoError(t, err) + require.Equal(t, portworxDiagCRDName, pdCRD.Name) + require.Equal(t, diagv1.SchemeGroupVersion.Group, pdCRD.Spec.Group) + require.Len(t, pdCRD.Spec.Versions, 1) + require.Equal(t, diagv1.SchemeGroupVersion.Version, pdCRD.Spec.Versions[0].Name) + require.True(t, pdCRD.Spec.Versions[0].Served) + require.True(t, pdCRD.Spec.Versions[0].Storage) + subresource := &apiextensionsv1.CustomResourceSubresources{ + Status: &apiextensionsv1.CustomResourceSubresourceStatus{}, + } + require.Equal(t, subresource, pdCRD.Spec.Versions[0].Subresources) + require.NotEmpty(t, pdCRD.Spec.Versions[0].Schema.OpenAPIV3Schema.Properties) + require.Equal(t, apiextensionsv1.NamespaceScoped, pdCRD.Spec.Scope) + require.Equal(t, "portworxdiag", pdCRD.Spec.Names.Singular) + require.Equal(t, "portworxdiags", pdCRD.Spec.Names.Plural) + require.Equal(t, reflect.TypeOf(diagv1.PortworxDiag{}).Name(), pdCRD.Spec.Names.Kind) + require.Equal(t, reflect.TypeOf(diagv1.PortworxDiagList{}).Name(), pdCRD.Spec.Names.ListKind) + require.Equal(t, []string{"pxdiag"}, pdCRD.Spec.Names.ShortNames) + + // If CRDs are already present, then should update it + pdCRD.ResourceVersion = "1000" + _, err = fakeExtClient.ApiextensionsV1(). + CustomResourceDefinitions(). + Update(context.TODO(), pdCRD, metav1.UpdateOptions{}) + require.NoError(t, err) + + // The fake client overwrites the status in Update call which real client + // does not. This will keep the CRD activated so validation does not get stuck. + go func() { + err := keepCRDActivated(fakeExtClient, portworxDiagCRDName) + require.NoError(t, err) + }() + + // If CRDs are already present, then should not fail + err = controller.RegisterCRD() + require.NoError(t, err) + + crds, err = fakeExtClient.ApiextensionsV1(). + CustomResourceDefinitions(). + List(context.TODO(), metav1.ListOptions{}) + require.NoError(t, err) + require.Len(t, crds.Items, 1) + require.Equal(t, portworxDiagCRDName, crds.Items[0].Name) + + pdCRD, err = fakeExtClient.ApiextensionsV1(). + CustomResourceDefinitions(). + Get(context.TODO(), portworxDiagCRDName, metav1.GetOptions{}) + require.NoError(t, err) + require.Equal(t, "1000", pdCRD.ResourceVersion) +} + +func TestReconcileOfDeletedDiag(t *testing.T) { + k8sClient := testutil.FakeK8sClient() + recorder := record.NewFakeRecorder(1) + controller := Controller{ + client: k8sClient, + recorder: recorder, + } + + request := reconcile.Request{ + NamespacedName: types.NamespacedName{ + Name: "does-not-exist", + Namespace: "test-ns", + }, + } + result, err := controller.Reconcile(context.TODO(), request) + require.NoError(t, err) + require.Empty(t, result) + require.Len(t, recorder.Events, 0) +} + +func keepCRDActivated(fakeClient *fakeextclient.Clientset, crdName string) error { + return wait.Poll(1*time.Second, 1*time.Minute, func() (bool, error) { + crd, err := fakeClient.ApiextensionsV1(). + CustomResourceDefinitions(). + Get(context.TODO(), crdName, metav1.GetOptions{}) + if err != nil { + return false, err + } + if len(crd.Status.Conditions) == 0 { + crd.Status.Conditions = []apiextensionsv1.CustomResourceDefinitionCondition{{ + Type: apiextensionsv1.Established, + Status: apiextensionsv1.ConditionTrue, + }} + _, err = fakeClient.ApiextensionsV1(). + CustomResourceDefinitions(). + UpdateStatus(context.TODO(), crd, metav1.UpdateOptions{}) + if err != nil { + return false, err + } + return true, nil + } + return false, nil + }) +} + +func TestShouldPodBeOnNode(t *testing.T) { + // Diag is nil: should return false + should := shouldPodBeOnNode("some-uuid", "node1", []v1.Node{}, nil, nil) + require.False(t, should) + + // Diag.Spec.Portworx is nil: should return false + should = shouldPodBeOnNode("some-uuid", "node1", []v1.Node{}, nil, &diagv1.PortworxDiag{ + Spec: diagv1.PortworxDiagSpec{ + Portworx: nil, + }, + }) + require.False(t, should) + + // NodeSelector.All is true: should return true + should = shouldPodBeOnNode("some-uuid", "node1", []v1.Node{}, nil, &diagv1.PortworxDiag{ + Spec: diagv1.PortworxDiagSpec{ + Portworx: &diagv1.PortworxComponent{ + NodeSelector: diagv1.NodeSelector{ + All: true, + }, + }, + }, + }) + require.True(t, should) + + // NodeSelector.All is false, NodeSelector.IDs is nil and NodeSelector.Labels is nil: should return true + should = shouldPodBeOnNode("some-uuid", "node1", []v1.Node{}, nil, &diagv1.PortworxDiag{ + Spec: diagv1.PortworxDiagSpec{ + Portworx: &diagv1.PortworxComponent{ + NodeSelector: diagv1.NodeSelector{ + IDs: nil, + Labels: nil, + }, + }, + }, + }) + require.False(t, should) + + // NodeSelector.All is false, NodeSelector.IDs is empty and NodeSelector.Labels is empty: should return false + should = shouldPodBeOnNode("some-uuid", "node1", []v1.Node{}, nil, &diagv1.PortworxDiag{ + Spec: diagv1.PortworxDiagSpec{ + Portworx: &diagv1.PortworxComponent{ + NodeSelector: diagv1.NodeSelector{ + IDs: []string{}, + Labels: map[string]string{}, + }, + }, + }, + }) + require.False(t, should) + + // NodeSelector.IDs contains the given node ID: should return true + should = shouldPodBeOnNode("some-uuid", "node1", []v1.Node{}, nil, &diagv1.PortworxDiag{ + Spec: diagv1.PortworxDiagSpec{ + Portworx: &diagv1.PortworxComponent{ + NodeSelector: diagv1.NodeSelector{ + IDs: []string{"some-uuid"}, + }, + }, + }, + }) + require.True(t, should) + + // NodeSelector.IDs contains some node IDs but not the given node ID: should return false + should = shouldPodBeOnNode("some-uuid", "node1", []v1.Node{}, nil, &diagv1.PortworxDiag{ + Spec: diagv1.PortworxDiagSpec{ + Portworx: &diagv1.PortworxComponent{ + NodeSelector: diagv1.NodeSelector{ + IDs: []string{"another-uuid"}, + }, + }, + }, + }) + require.False(t, should) + + // NodeSelector.Labels is populated, no matching node: should return false + should = shouldPodBeOnNode("some-uuid", "node1", []v1.Node{ + { + ObjectMeta: metav1.ObjectMeta{ + Name: "node2", + }, + }, + }, nil, &diagv1.PortworxDiag{ + Spec: diagv1.PortworxDiagSpec{ + Portworx: &diagv1.PortworxComponent{ + NodeSelector: diagv1.NodeSelector{ + Labels: map[string]string{ + "foo": "bar", + }, + }, + }, + }, + }) + require.False(t, should) + + // NodeSelector.Labels is populated, label missing: should return false + should = shouldPodBeOnNode("some-uuid", "node1", []v1.Node{ + { + ObjectMeta: metav1.ObjectMeta{ + Name: "node1", + Labels: map[string]string{ + "baz": "nah", + }, + }, + }, + }, nil, &diagv1.PortworxDiag{ + Spec: diagv1.PortworxDiagSpec{ + Portworx: &diagv1.PortworxComponent{ + NodeSelector: diagv1.NodeSelector{ + Labels: map[string]string{ + "foo": "bar", + }, + }, + }, + }, + }) + require.False(t, should) + + // NodeSelector.Labels is populated, label present but wrong value: should return false + should = shouldPodBeOnNode("some-uuid", "node1", []v1.Node{ + { + ObjectMeta: metav1.ObjectMeta{ + Name: "node1", + Labels: map[string]string{ + "foo": "nah", + }, + }, + }, + }, nil, &diagv1.PortworxDiag{ + Spec: diagv1.PortworxDiagSpec{ + Portworx: &diagv1.PortworxComponent{ + NodeSelector: diagv1.NodeSelector{ + Labels: map[string]string{ + "foo": "bar", + }, + }, + }, + }, + }) + require.False(t, should) + + // NodeSelector.Labels is populated, label present and correct value: should return true + should = shouldPodBeOnNode("some-uuid", "node1", []v1.Node{ + { + ObjectMeta: metav1.ObjectMeta{ + Name: "node1", + Labels: map[string]string{ + "foo": "bar", + }, + }, + }, + }, nil, &diagv1.PortworxDiag{ + Spec: diagv1.PortworxDiagSpec{ + Portworx: &diagv1.PortworxComponent{ + NodeSelector: diagv1.NodeSelector{ + Labels: map[string]string{ + "foo": "bar", + }, + }, + }, + }, + }) + require.True(t, should) + + // NodeSelector.Labels is populated, one label present, one not: should return false + should = shouldPodBeOnNode("some-uuid", "node1", []v1.Node{ + { + ObjectMeta: metav1.ObjectMeta{ + Name: "node1", + Labels: map[string]string{ + "foo": "bar", + "baz": "nah", + }, + }, + }, + }, nil, &diagv1.PortworxDiag{ + Spec: diagv1.PortworxDiagSpec{ + Portworx: &diagv1.PortworxComponent{ + NodeSelector: diagv1.NodeSelector{ + Labels: map[string]string{ + "foo": "bar", + "baz": "bar", + }, + }, + }, + }, + }) + require.False(t, should) + + // NodeSelector.IDs and Labels is populated, disjoint set: should return true for both nodes + nodes := []v1.Node{ + { + ObjectMeta: metav1.ObjectMeta{ + Name: "node2", + Labels: map[string]string{ + "foo": "bar", + }, + }, + }, + } + // Both node1 and node2 should be valid + // node1 because it has the correct ID + // node2 because it has the correct label + should = shouldPodBeOnNode("some-uuid", "node1", nodes, nil, &diagv1.PortworxDiag{ + Spec: diagv1.PortworxDiagSpec{ + Portworx: &diagv1.PortworxComponent{ + NodeSelector: diagv1.NodeSelector{ + IDs: []string{"some-uuid"}, + Labels: map[string]string{ + "foo": "bar", + }, + }, + }, + }, + }) + require.True(t, should) + should = shouldPodBeOnNode("some-uuid", "node2", nodes, nil, &diagv1.PortworxDiag{ + Spec: diagv1.PortworxDiagSpec{ + Portworx: &diagv1.PortworxComponent{ + NodeSelector: diagv1.NodeSelector{ + IDs: []string{"some-uuid"}, + Labels: map[string]string{ + "foo": "bar", + }, + }, + }, + }, + }) + require.True(t, should) +} + +func TestGetNodeToPodMap(t *testing.T) { + res := getNodeToPodMap(nil) + require.Empty(t, res) + + res = getNodeToPodMap(&v1.PodList{}) + require.Empty(t, res) + + pod1 := v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "pod1", + }, + Spec: v1.PodSpec{ + NodeName: "node1", + }, + } + pod2 := v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "pod2", + }, + Spec: v1.PodSpec{ + NodeName: "node2", + }, + } + + res = getNodeToPodMap(&v1.PodList{ + Items: []v1.Pod{pod1, pod2}, + }) + require.Len(t, res, 2) + require.Contains(t, res, "node1") + require.Contains(t, res, "node2") + require.Equal(t, *res["node1"], pod1) + require.Equal(t, *res["node2"], pod2) +} + +func TestGetNodeIDToStatusMap(t *testing.T) { + // Test cases: + // * a nil node list should return an empty map + // * an empty node list should return an empty map + // * a node list with two nodes should return a map with two entries + // * a node list with different statuses should return a map with two entries with the correct statuses + // * a node list with a node with an empty node ID should not include the node in the map + + res := getNodeIDToStatusMap(nil) + require.Empty(t, res) + + res = getNodeIDToStatusMap([]diagv1.NodeStatus{}) + require.Empty(t, res) + + res = getNodeIDToStatusMap([]diagv1.NodeStatus{ + { + NodeID: "node1", + Status: diagv1.NodeStatusInProgress, + }, + }) + require.Len(t, res, 1) + require.Contains(t, res, "node1") + require.Equal(t, res["node1"], diagv1.NodeStatusInProgress) + + res = getNodeIDToStatusMap([]diagv1.NodeStatus{ + { + NodeID: "node1", + Status: diagv1.NodeStatusInProgress, + }, + { + NodeID: "node2", + Status: diagv1.NodeStatusCompleted, + }, + }) + require.Len(t, res, 2) + require.Contains(t, res, "node1") + require.Contains(t, res, "node2") + require.Equal(t, res["node1"], diagv1.NodeStatusInProgress) + require.Equal(t, res["node2"], diagv1.NodeStatusCompleted) + + res = getNodeIDToStatusMap([]diagv1.NodeStatus{ + { + NodeID: "", + Status: diagv1.NodeStatusInProgress, + }, + }) + require.Empty(t, res) +} + +func TestGetPodsDiff(t *testing.T) { + c := Controller{} + + // Node 0 will be missing a status entirely: as node statuses is already populated we won't add a new entry + // Node 1 will have a status but be missing a pod (should create a pod) + // Node 2 will be completed successfully (should delete a pod) + // Node 3 will be completed and failed (should delete a pod) + // Node 4 will be in progress (should not change anything) + // Node 5 will not match the selector (should delete the existing pod) + + // Test object setup + n := 6 + pods := make([]v1.Pod, n) + nodes := make([]v1.Node, n) + nodeIDToName := make(map[string]string) + for i := 0; i < n; i++ { + pods[i] = v1.Pod{ + ObjectMeta: metav1.ObjectMeta{Name: fmt.Sprintf("pod%d", i)}, + Spec: v1.PodSpec{NodeName: fmt.Sprintf("node%d", i)}, + } + nodes[i] = v1.Node{ObjectMeta: metav1.ObjectMeta{Name: fmt.Sprintf("node%d", i)}} + nodeIDToName[fmt.Sprintf("id%d", i)] = fmt.Sprintf("node%d", i) + } + + prs, err := c.getPodsDiff( + &v1.PodList{Items: pods[2:]}, // Only pass in a subset of the nodes to simulate some not existing + &v1.NodeList{Items: nodes}, + &diagv1.PortworxDiag{ + Spec: diagv1.PortworxDiagSpec{ + Portworx: &diagv1.PortworxComponent{ + NodeSelector: diagv1.NodeSelector{ + IDs: []string{"id0", "id1", "id2", "id3", "id4"}, + }, + }, + }, + Status: diagv1.PortworxDiagStatus{ + NodeStatuses: []diagv1.NodeStatus{ + {NodeID: "id1", Status: diagv1.NodeStatusPending}, + {NodeID: "id2", Status: diagv1.NodeStatusCompleted}, + {NodeID: "id3", Status: diagv1.NodeStatusFailed}, + {NodeID: "id4", Status: diagv1.NodeStatusInProgress}, + }, + }, + }, nil, nodeIDToName) + require.Empty(t, prs.nodeStatusesToAdd) + require.ElementsMatch(t, prs.nodesToCreatePodsFor, []string{"node1"}) + require.ElementsMatch(t, prs.podsToDelete, []*v1.Pod{&pods[2], &pods[3], &pods[5]}) + require.NoError(t, err) +} + +func TestGetOverallPhase(t *testing.T) { + phase, msg := getOverallPhase([]diagv1.NodeStatus{}) + require.Equal(t, diagv1.DiagStatusPending, phase) + require.Empty(t, msg) + + // If all phases are empty or pending, the overall phase should be pending + phase, msg = getOverallPhase([]diagv1.NodeStatus{ + {Status: ""}, + {Status: ""}, + {Status: diagv1.NodeStatusPending}, + }) + require.Equal(t, diagv1.DiagStatusPending, phase) + require.Empty(t, msg) + + // If all phases are completed, the overall phase should be completed + phase, msg = getOverallPhase([]diagv1.NodeStatus{ + {Status: diagv1.NodeStatusCompleted}, + {Status: diagv1.NodeStatusCompleted}, + {Status: diagv1.NodeStatusCompleted}, + }) + require.Equal(t, diagv1.DiagStatusCompleted, phase) + require.Equal(t, "All diags collected successfully", msg) + + // If all phases are failed, the overall phase should be failed + phase, msg = getOverallPhase([]diagv1.NodeStatus{ + {Status: diagv1.NodeStatusFailed}, + {Status: diagv1.NodeStatusFailed}, + {Status: diagv1.NodeStatusFailed}, + }) + require.Equal(t, diagv1.DiagStatusFailed, phase) + require.Equal(t, "All diags failed to collect", msg) + + // If some phases are pending and some are completed, the overall phase should be partial failure + phase, msg = getOverallPhase([]diagv1.NodeStatus{ + {Status: diagv1.NodeStatusPending}, + {Status: diagv1.NodeStatusCompleted}, + {Status: diagv1.NodeStatusCompleted}, + }) + require.Equal(t, diagv1.DiagStatusPartialFailure, phase) + require.Equal(t, "Some diags failed to collect", msg) + + // If some phases are failed and some are completed, the overall phase should be partial failure + phase, msg = getOverallPhase([]diagv1.NodeStatus{ + {Status: diagv1.NodeStatusFailed}, + {Status: diagv1.NodeStatusCompleted}, + {Status: diagv1.NodeStatusCompleted}, + }) + require.Equal(t, diagv1.DiagStatusPartialFailure, phase) + require.Equal(t, "Some diags failed to collect", msg) + + // If some phases are in progress, no matter what the phase should be in progress + phase, msg = getOverallPhase([]diagv1.NodeStatus{ + {Status: diagv1.NodeStatusInProgress}, + {Status: diagv1.NodeStatusCompleted}, + {Status: diagv1.NodeStatusFailed}, + {Status: diagv1.NodeStatusPending}, + }) + require.Equal(t, diagv1.DiagStatusInProgress, phase) + require.Equal(t, "Diag collection is in progress", msg) + + // If an unknown status slips in, the overall phase should be unknown unless another node is in progress + phase, msg = getOverallPhase([]diagv1.NodeStatus{ + {Status: diagv1.NodeStatusPending}, + {Status: "InvalidStatus"}, + }) + require.Equal(t, diagv1.DiagStatusUnknown, phase) + require.Empty(t, msg) +} + +func TestGetDiagObject(t *testing.T) { + mockCtrl := gomock.NewController(t) + defer mockCtrl.Finish() + + driver := testutil.MockDriver(mockCtrl) + k8sClient := testutil.FakeK8sClient(&diagv1.PortworxDiag{}) + podControl := &k8scontroller.FakePodControl{} + recorder := record.NewFakeRecorder(10) + controller := Controller{ + client: k8sClient, + Driver: driver, + podControl: podControl, + recorder: recorder, + } + + // First find with no objects created + diag, otherRunning, err := controller.getDiagObject(context.TODO(), reconcile.Request{ + NamespacedName: types.NamespacedName{ + Name: "test", + Namespace: "portworx", + }, + }) + require.Nil(t, diag) + require.False(t, otherRunning) + require.NoError(t, err) + + // Create another diag object + diagInProgress := &diagv1.PortworxDiag{ + ObjectMeta: metav1.ObjectMeta{ + Name: "otherdiag", + Namespace: "portworx", + }, + Status: diagv1.PortworxDiagStatus{ + Phase: diagv1.DiagStatusInProgress, + }, + } + err = k8sClient.Create(context.Background(), diagInProgress) + require.NoError(t, err) + + diag, otherRunning, err = controller.getDiagObject(context.TODO(), reconcile.Request{ + NamespacedName: types.NamespacedName{ + Name: "test", + Namespace: "portworx", + }, + }) + require.Nil(t, diag) + require.True(t, otherRunning) + require.NoError(t, err) + + // Create our diag object + diagOurs := &diagv1.PortworxDiag{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test", + Namespace: "portworx", + }, + Status: diagv1.PortworxDiagStatus{ + Phase: diagv1.DiagStatusInProgress, + }, + } + err = k8sClient.Create(context.Background(), diagOurs) + require.NoError(t, err) + + diag, otherRunning, err = controller.getDiagObject(context.TODO(), reconcile.Request{ + NamespacedName: types.NamespacedName{ + Name: "test", + Namespace: "portworx", + }, + }) + require.Equal(t, diagOurs, diag) + require.True(t, otherRunning) + require.NoError(t, err) + + // Delete the other diag object, now we should be able to run + err = k8sClient.Delete(context.Background(), diagInProgress) + require.NoError(t, err) + + diag, otherRunning, err = controller.getDiagObject(context.TODO(), reconcile.Request{ + NamespacedName: types.NamespacedName{ + Name: "test", + Namespace: "portworx", + }, + }) + require.Equal(t, diagOurs, diag) + require.False(t, otherRunning) + require.NoError(t, err) +} + +func TestReconcile_BasicLifecycle(t *testing.T) { + const ns = "test-ns" + + mockNodeServer, _, pxService, cleanupMocks := setUpGRPCMocks(t, ns) + defer cleanupMocks() + + k8sNodes := []*v1.Node{ + createK8sNode("k8s-node-1", 1), + createK8sNode("k8s-node-2", 1), + createK8sNode("k8s-node-3", 1), + } + + cluster := &corev1.StorageCluster{ + ObjectMeta: metav1.ObjectMeta{Name: "stc", Namespace: ns}, + Status: corev1.StorageClusterStatus{ + ClusterUID: "cluster-uid", + }, + } + diag := &diagv1.PortworxDiag{ + ObjectMeta: metav1.ObjectMeta{Name: "test-diag", Namespace: ns}, + Spec: diagv1.PortworxDiagSpec{ + Portworx: &diagv1.PortworxComponent{ + NodeSelector: diagv1.NodeSelector{ + All: true, + }, + }, + }, + } + + var err error + + k8sClient := testutil.FakeK8sClient(diag, cluster, pxService) + for _, node := range k8sNodes { + err = k8sClient.Create(context.Background(), node) + require.NoError(t, err) + } + recorder := record.NewFakeRecorder(10) + podControl := &k8scontroller.FakePodControl{} + controller := Controller{ + client: k8sClient, + recorder: recorder, + podControl: podControl, + } + + mockNodeServer.EXPECT(). + EnumerateWithFilters(gomock.Any(), gomock.Any()). + Return(&api.SdkNodeEnumerateWithFiltersResponse{ + Nodes: []*api.StorageNode{ + createGRPCStorageNode("k8s-node-1", "uuid-1"), + createGRPCStorageNode("k8s-node-2", "uuid-2"), + createGRPCStorageNode("k8s-node-3", "uuid-3"), + }, + }, nil).Times(4) + + // Verify initial reconcile + _, err = controller.Reconcile(context.TODO(), reconcile.Request{ + NamespacedName: types.NamespacedName{Name: diag.Name, Namespace: diag.Namespace}, + }) + require.NoError(t, err) + + // Check that all nodes have pods being created and have the node names set + require.Len(t, podControl.Templates, 3) + nodesWithPods := []string{} + for _, pod := range podControl.Templates { + nodesWithPods = append(nodesWithPods, pod.Spec.NodeName) + } + require.ElementsMatch(t, []string{"k8s-node-1", "k8s-node-2", "k8s-node-3"}, nodesWithPods) + + // Check that the updated diag has the proper node statuses + updatedDiag := &diagv1.PortworxDiag{} + err = testutil.Get(k8sClient, updatedDiag, diag.Name, diag.Namespace) + require.NoError(t, err) + + require.Len(t, updatedDiag.Status.NodeStatuses, 3) + require.ElementsMatch(t, []diagv1.NodeStatus{ + {NodeID: "uuid-1", Status: diagv1.NodeStatusPending}, + {NodeID: "uuid-2", Status: diagv1.NodeStatusPending}, + {NodeID: "uuid-3", Status: diagv1.NodeStatusPending}, + }, updatedDiag.Status.NodeStatuses) + require.Equal(t, diagv1.DiagStatusPending, updatedDiag.Status.Phase) + require.Equal(t, cluster.Status.ClusterUID, updatedDiag.Status.ClusterUUID) + + // Go through and actually create the pods + createdPods := applyPodControlTemplates(t, k8sClient, podControl) + + // Verify that the diag status updates as diags move to in progress + for i := range updatedDiag.Status.NodeStatuses { + updatedDiag.Status.NodeStatuses[i].Status = diagv1.NodeStatusInProgress + } + err = k8sClient.Update(context.Background(), updatedDiag) + require.NoError(t, err) + + // Verify that missing pods get recreated + err = k8sClient.Delete(context.Background(), createdPods[0]) + require.NoError(t, err) + + _, err = controller.Reconcile(context.TODO(), reconcile.Request{ + NamespacedName: types.NamespacedName{Name: diag.Name, Namespace: diag.Namespace}, + }) + require.NoError(t, err) + require.Len(t, podControl.Templates, 1) + require.Equal(t, createdPods[0].Spec.NodeName, podControl.Templates[0].Spec.NodeName) + + // Check that the updated diag has the proper phase + updatedDiag = &diagv1.PortworxDiag{} + err = testutil.Get(k8sClient, updatedDiag, diag.Name, diag.Namespace) + require.NoError(t, err) + require.Equal(t, diagv1.DiagStatusInProgress, updatedDiag.Status.Phase) + + // Go through and re-create the pods again + applyPodControlTemplates(t, k8sClient, podControl) + + // Verify that the pods are deleted when a node status is marked as complete + updatedDiag.Status.NodeStatuses[0].Status = diagv1.NodeStatusCompleted + err = k8sClient.Update(context.Background(), updatedDiag) + require.NoError(t, err) + + _, err = controller.Reconcile(context.TODO(), reconcile.Request{ + NamespacedName: types.NamespacedName{Name: diag.Name, Namespace: diag.Namespace}, + }) + require.NoError(t, err) + require.Len(t, podControl.DeletePodName, 1) + podControl.DeletePodName = []string{} + + // Check that the updated diag has the proper phase + updatedDiag = &diagv1.PortworxDiag{} + err = testutil.Get(k8sClient, updatedDiag, diag.Name, diag.Namespace) + require.NoError(t, err) + require.Equal(t, diagv1.DiagStatusInProgress, updatedDiag.Status.Phase) + + // Verify that once all the pods are complete, the phase is complete and the pods are deleted + updatedDiag = &diagv1.PortworxDiag{} + err = testutil.Get(k8sClient, updatedDiag, diag.Name, diag.Namespace) + require.NoError(t, err) + for i := range updatedDiag.Status.NodeStatuses { + updatedDiag.Status.NodeStatuses[i].Status = diagv1.NodeStatusCompleted + } + err = k8sClient.Update(context.Background(), updatedDiag) + require.NoError(t, err) + + _, err = controller.Reconcile(context.TODO(), reconcile.Request{ + NamespacedName: types.NamespacedName{Name: diag.Name, Namespace: diag.Namespace}, + }) + require.NoError(t, err) + + // Check that the updated diag has the proper phase + updatedDiag = &diagv1.PortworxDiag{} + err = testutil.Get(k8sClient, updatedDiag, diag.Name, diag.Namespace) + require.NoError(t, err) + require.Equal(t, diagv1.DiagStatusCompleted, updatedDiag.Status.Phase) + + // Check that the pods are deleted + require.Len(t, podControl.DeletePodName, 3) + podControl.DeletePodName = []string{} + + // Check that future reconciles do no work + _, err = controller.Reconcile(context.TODO(), reconcile.Request{ + NamespacedName: types.NamespacedName{Name: diag.Name, Namespace: diag.Namespace}, + }) + require.NoError(t, err) + require.Empty(t, podControl.Templates) + require.Empty(t, podControl.DeletePodName) +} + +func TestReconcile_NodeSelectors(t *testing.T) { + const ns = "test-ns" + + mockNodeServer, _, pxService, cleanupMocks := setUpGRPCMocks(t, ns) + defer cleanupMocks() + + k8sNodes := []*v1.Node{ + createK8sNode("k8s-node-1", 1), + createK8sNode("k8s-node-2", 1), + createK8sNode("k8s-node-3", 1), + createK8sNode("k8s-node-4", 1), + } + k8sNodes[0].Labels["dothediag"] = "true" + k8sNodes[1].Labels["dothediag"] = "false" + + cluster := &corev1.StorageCluster{ + ObjectMeta: metav1.ObjectMeta{Name: "stc", Namespace: ns}, + Status: corev1.StorageClusterStatus{ + ClusterUID: "cluster-uid", + }, + } + diag := &diagv1.PortworxDiag{ + ObjectMeta: metav1.ObjectMeta{Name: "test-diag", Namespace: ns}, + Spec: diagv1.PortworxDiagSpec{ + Portworx: &diagv1.PortworxComponent{ + NodeSelector: diagv1.NodeSelector{ + All: false, + IDs: []string{"uuid-4"}, + Labels: map[string]string{ + "dothediag": "true", + }, + }, + }, + }, + } + + k8sClient := testutil.FakeK8sClient(diag, cluster, pxService) + for _, node := range k8sNodes { + err := k8sClient.Create(context.Background(), node) + require.NoError(t, err) + } + recorder := record.NewFakeRecorder(10) + podControl := &k8scontroller.FakePodControl{} + controller := Controller{ + client: k8sClient, + recorder: recorder, + podControl: podControl, + } + + mockNodeServer.EXPECT(). + EnumerateWithFilters(gomock.Any(), gomock.Any()). + Return(&api.SdkNodeEnumerateWithFiltersResponse{ + Nodes: []*api.StorageNode{ + createGRPCStorageNode("k8s-node-1", "uuid-1"), + createGRPCStorageNode("k8s-node-2", "uuid-2"), + createGRPCStorageNode("k8s-node-3", "uuid-3"), + createGRPCStorageNode("k8s-node-4", "uuid-4"), + }, + }, nil). + Times(1) + + _, err := controller.Reconcile(context.TODO(), reconcile.Request{ + NamespacedName: types.NamespacedName{Name: diag.Name, Namespace: diag.Namespace}, + }) + require.NoError(t, err) + + // Check that all nodes have pods being created and have the node names set + require.Len(t, podControl.Templates, 2) + nodesWithPods := []string{} + for _, pod := range podControl.Templates { + nodesWithPods = append(nodesWithPods, pod.Spec.NodeName) + } + require.ElementsMatch(t, []string{"k8s-node-1", "k8s-node-4"}, nodesWithPods) + + // Check that the updated diag has the proper node statuses + updatedDiag := &diagv1.PortworxDiag{} + err = testutil.Get(k8sClient, updatedDiag, diag.Name, diag.Namespace) + require.NoError(t, err) + + require.Len(t, updatedDiag.Status.NodeStatuses, 2) + require.ElementsMatch(t, []diagv1.NodeStatus{ + {NodeID: "uuid-1", Status: diagv1.NodeStatusPending}, + {NodeID: "uuid-4", Status: diagv1.NodeStatusPending}, + }, updatedDiag.Status.NodeStatuses) + require.Equal(t, diagv1.DiagStatusPending, updatedDiag.Status.Phase) + require.Equal(t, cluster.Status.ClusterUID, updatedDiag.Status.ClusterUUID) +} + +func TestReconcile_VolumeSelectors(t *testing.T) { + const ns = "test-ns" + + mockNodeServer, mockVolumeServer, pxService, cleanupMocks := setUpGRPCMocks(t, ns) + defer cleanupMocks() + + k8sNodes := []*v1.Node{ + createK8sNode("k8s-node-1", 1), + createK8sNode("k8s-node-2", 1), + createK8sNode("k8s-node-3", 1), + createK8sNode("k8s-node-4", 1), + } + k8sNodes[0].Labels["dothediag"] = "true" + k8sNodes[1].Labels["dothediag"] = "false" + + cluster := &corev1.StorageCluster{ + ObjectMeta: metav1.ObjectMeta{Name: "stc", Namespace: ns}, + Status: corev1.StorageClusterStatus{ + ClusterUID: "cluster-uid", + }, + } + diag := &diagv1.PortworxDiag{ + ObjectMeta: metav1.ObjectMeta{Name: "test-diag", Namespace: ns}, + Spec: diagv1.PortworxDiagSpec{ + Portworx: &diagv1.PortworxComponent{ + VolumeSelector: diagv1.VolumeSelector{ + IDs: []string{"vol-4"}, + Labels: map[string]string{ + "dothediag": "true", + }, + }, + }, + }, + } + + k8sClient := testutil.FakeK8sClient(diag, cluster, pxService) + for _, node := range k8sNodes { + err := k8sClient.Create(context.Background(), node) + require.NoError(t, err) + } + recorder := record.NewFakeRecorder(10) + podControl := &k8scontroller.FakePodControl{} + controller := Controller{ + client: k8sClient, + recorder: recorder, + podControl: podControl, + } + + mockNodeServer.EXPECT(). + EnumerateWithFilters(gomock.Any(), gomock.Any()). + Return(&api.SdkNodeEnumerateWithFiltersResponse{ + Nodes: []*api.StorageNode{ + createGRPCStorageNode("k8s-node-1", "uuid-1"), + createGRPCStorageNode("k8s-node-2", "uuid-2"), + createGRPCStorageNode("k8s-node-3", "uuid-3"), + createGRPCStorageNode("k8s-node-4", "uuid-4"), + }, + }, nil). + Times(1) + mockVolumeServer.EXPECT(). + Inspect(gomock.Any(), VolumeInspectRequestWithVolumeID("vol-4")). + Return(&api.SdkVolumeInspectResponse{ + Volume: &api.Volume{ + ReplicaSets: []*api.ReplicaSet{{Nodes: []string{"uuid-4"}}}, + }}, nil). + Times(1) + mockVolumeServer.EXPECT(). + InspectWithFilters(gomock.Any(), VolumeInspectWithFilterRequestWithLabels(map[string]string{"dothediag": "true"})). + Return(&api.SdkVolumeInspectWithFiltersResponse{ + Volumes: []*api.SdkVolumeInspectResponse{ + {Volume: &api.Volume{ReplicaSets: []*api.ReplicaSet{{Nodes: []string{"uuid-1"}}}}}, + }, + }, nil). + Times(1) + + _, err := controller.Reconcile(context.TODO(), reconcile.Request{ + NamespacedName: types.NamespacedName{Name: diag.Name, Namespace: diag.Namespace}, + }) + require.NoError(t, err) + + // Check that all nodes have pods being created and have the node names set + require.Len(t, podControl.Templates, 2) + nodesWithPods := []string{} + for _, pod := range podControl.Templates { + nodesWithPods = append(nodesWithPods, pod.Spec.NodeName) + } + require.ElementsMatch(t, []string{"k8s-node-1", "k8s-node-4"}, nodesWithPods) + + // Check that the updated diag has the proper node statuses + updatedDiag := &diagv1.PortworxDiag{} + err = testutil.Get(k8sClient, updatedDiag, diag.Name, diag.Namespace) + require.NoError(t, err) + + require.Len(t, updatedDiag.Status.NodeStatuses, 2) + require.ElementsMatch(t, []diagv1.NodeStatus{ + {NodeID: "uuid-1", Status: diagv1.NodeStatusPending}, + {NodeID: "uuid-4", Status: diagv1.NodeStatusPending}, + }, updatedDiag.Status.NodeStatuses) + require.Equal(t, diagv1.DiagStatusPending, updatedDiag.Status.Phase) + require.Equal(t, cluster.Status.ClusterUID, updatedDiag.Status.ClusterUUID) +} diff --git a/pkg/controller/portworxdiag/matchers_test.go b/pkg/controller/portworxdiag/matchers_test.go new file mode 100644 index 0000000000..6a8cbb82d9 --- /dev/null +++ b/pkg/controller/portworxdiag/matchers_test.go @@ -0,0 +1,52 @@ +package portworxdiag + +import ( + "fmt" + "reflect" + + "github.com/libopenstorage/openstorage/api" +) + +// This file contains various gomock matcher utilities that can be used to better check calls +// to the mock GRPC server. + +type volumeInspectRequestMatcher struct { + volumeID string +} + +func (v volumeInspectRequestMatcher) Matches(x interface{}) bool { + req, ok := x.(*api.SdkVolumeInspectRequest) + if !ok { + return false + } + return req.GetVolumeId() == v.volumeID +} + +func (v volumeInspectRequestMatcher) String() string { + return "matches volume inspect request with volume ID " + v.volumeID +} + +func VolumeInspectRequestWithVolumeID(volumeID string) *volumeInspectRequestMatcher { + return &volumeInspectRequestMatcher{volumeID} +} + +type volumeInspectWithFiltersRequestWithLabelsMatcher struct { + labels map[string]string +} + +func (v volumeInspectWithFiltersRequestWithLabelsMatcher) Matches(x interface{}) bool { + req, ok := x.(*api.SdkVolumeInspectWithFiltersRequest) + if !ok { + return false + } + // Deep-compare the labels + return reflect.DeepEqual(req.GetLabels(), v.labels) +} + +func (v volumeInspectWithFiltersRequestWithLabelsMatcher) String() string { + return fmt.Sprintf("matches volume inspect request with labels %v", v.labels) +} + +func VolumeInspectWithFilterRequestWithLabels(labels map[string]string) *volumeInspectWithFiltersRequestWithLabelsMatcher { + return &volumeInspectWithFiltersRequestWithLabelsMatcher{labels} +} diff --git a/pkg/controller/portworxdiag/pod.go b/pkg/controller/portworxdiag/pod.go new file mode 100644 index 0000000000..826ec6491b --- /dev/null +++ b/pkg/controller/portworxdiag/pod.go @@ -0,0 +1,117 @@ +package portworxdiag + +import ( + "fmt" + "os" + + "github.com/libopenstorage/operator/drivers/storage/portworx" + + pxutil "github.com/libopenstorage/operator/drivers/storage/portworx/util" + corev1 "github.com/libopenstorage/operator/pkg/apis/core/v1" + portworxv1 "github.com/libopenstorage/operator/pkg/apis/portworx/v1" + "github.com/libopenstorage/operator/pkg/util" + k8sutil "github.com/libopenstorage/operator/pkg/util/k8s" + v1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +const ( + PortworxDiagLabel = "portworx-diag" +) + +func v1Volume(name, path string, hpType v1.HostPathType) v1.Volume { + return v1.Volume{ + Name: name, + VolumeSource: v1.VolumeSource{ + HostPath: &v1.HostPathVolumeSource{ + Path: path, + Type: &hpType, + }, + }, + } +} + +func volumes() []v1.Volume { + return []v1.Volume{ + v1Volume("procmount", "/proc", v1.HostPathUnset), + v1Volume("diagsdump", "/var/cores", v1.HostPathUnset), + } +} + +func volumeMounts() []v1.VolumeMount { + return []v1.VolumeMount{ + {Name: "procmount", MountPath: "/host_proc"}, + {Name: "diagsdump", MountPath: "/var/cores"}, + } +} + +func makeDiagPodTemplate(cluster *corev1.StorageCluster, diag *portworxv1.PortworxDiag, ns string, nodeName string, nodeID string, label string) (*v1.PodTemplateSpec, error) { + terminationGP := int64(10) + privileged := true + + diagImage := fmt.Sprintf("%s:master", portworx.DefaultPortworxImage) + if img := os.Getenv("DIAG_IMAGE"); len(img) > 0 { + diagImage = img + } + diagImageURN := util.GetImageURN(cluster, diagImage) + + isController := false + blockOwnerDeletion := true + + podTemplateSpec := &v1.PodTemplateSpec{ + ObjectMeta: metav1.ObjectMeta{ + GenerateName: "px-diag", + Namespace: ns, + Labels: map[string]string{ + "name": PortworxDiagLabel + label, + portworxv1.LabelPortworxDiagName: diag.Name, + }, + OwnerReferences: []metav1.OwnerReference{ + { + APIVersion: "portworx.io/v1", + Kind: "PortworxDiag", + Name: diag.Name, + Controller: &isController, + BlockOwnerDeletion: &blockOwnerDeletion, + }, + }, + }, + Spec: v1.PodSpec{ + NodeName: nodeName, + HostPID: true, + RestartPolicy: v1.RestartPolicyOnFailure, + ServiceAccountName: pxutil.PortworxServiceAccountName(cluster), + TerminationGracePeriodSeconds: &terminationGP, + Volumes: volumes(), + Containers: []v1.Container{ + { + Name: "px-diag-collector", + Image: diagImageURN, + ImagePullPolicy: v1.PullAlways, + Args: []string{ + "--diags", + "--diags-obj-name", + diag.Name, + "--diags-obj-namespace", + diag.Namespace, + "--diags-node-id", + nodeID, + "--diags-pod-label", + label, + }, + SecurityContext: &v1.SecurityContext{ + Privileged: &privileged, + }, + VolumeMounts: volumeMounts(), + }, + }, + }, + } + if cluster.Spec.ImagePullSecret != nil && *cluster.Spec.ImagePullSecret != "" { + podTemplateSpec.Spec.ImagePullSecrets = []v1.LocalObjectReference{ + {Name: *cluster.Spec.ImagePullSecret}, + } + } + k8sutil.AddOrUpdateStoragePodTolerations(&podTemplateSpec.Spec) + return podTemplateSpec, nil +} diff --git a/pkg/controller/portworxdiag/portworxdiag.go b/pkg/controller/portworxdiag/portworxdiag.go new file mode 100644 index 0000000000..d1c20168bb --- /dev/null +++ b/pkg/controller/portworxdiag/portworxdiag.go @@ -0,0 +1,969 @@ +package portworxdiag + +import ( + "context" + "encoding/json" + "fmt" + "sort" + "strings" + "time" + + "github.com/libopenstorage/openstorage/api" + pxutil "github.com/libopenstorage/operator/drivers/storage/portworx/util" + apiextensionsops "github.com/portworx/sched-ops/k8s/apiextensions" + "github.com/sirupsen/logrus" + "google.golang.org/grpc" + v1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/types" + "k8s.io/client-go/kubernetes" + "k8s.io/client-go/tools/record" + k8scontroller "k8s.io/kubernetes/pkg/controller" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/controller" + "sigs.k8s.io/controller-runtime/pkg/handler" + "sigs.k8s.io/controller-runtime/pkg/manager" + "sigs.k8s.io/controller-runtime/pkg/reconcile" + "sigs.k8s.io/controller-runtime/pkg/source" + + "github.com/libopenstorage/operator/drivers/storage" + corev1 "github.com/libopenstorage/operator/pkg/apis/core/v1" + diagv1 "github.com/libopenstorage/operator/pkg/apis/portworx/v1" + "github.com/libopenstorage/operator/pkg/util" + "github.com/libopenstorage/operator/pkg/util/k8s" +) + +const ( + // ControllerName is the name of the controller + ControllerName = "portworxdiag-controller" + validateCRDInterval = 5 * time.Second + validateCRDTimeout = 1 * time.Minute + crdBasePath = "/crds" + portworxDiagCRDFile = "portworx.io_portworxdiags.yaml" +) + +var _ reconcile.Reconciler = &Controller{} + +var ( + controllerKind = diagv1.SchemeGroupVersion.WithKind("PortworxDiag") + crdBaseDir = getCRDBasePath +) + +// Controller reconciles a StorageCluster object +type Controller struct { + client client.Client + scheme *runtime.Scheme + recorder record.EventRecorder + podControl k8scontroller.PodControlInterface + Driver storage.Driver + ctrl controller.Controller + grpcConn *grpc.ClientConn +} + +// Init initialize the portworx diag controller. +func (c *Controller) Init(mgr manager.Manager) error { + c.client = mgr.GetClient() + c.scheme = mgr.GetScheme() + c.recorder = mgr.GetEventRecorderFor(ControllerName) + + var err error + // Create a new controller + c.ctrl, err = controller.New(ControllerName, mgr, controller.Options{Reconciler: c}) + if err != nil { + return err + } + + clientset, err := kubernetes.NewForConfig(mgr.GetConfig()) + if err != nil { + return fmt.Errorf("error getting kubernetes client: %v", err) + } + // Create pod control interface object to manage pods under storage cluster + c.podControl = k8scontroller.RealPodControl{ + KubeClient: clientset, + Recorder: c.recorder, + } + + return nil +} + +// StartWatch starts the watch on the PortworxDiag object type. +func (c *Controller) StartWatch() error { + if c.ctrl == nil { + return fmt.Errorf("controller not initialized to start a watch") + } + + err := c.ctrl.Watch( + &source.Kind{Type: &diagv1.PortworxDiag{}}, + &handler.EnqueueRequestForObject{}, + ) + if err != nil { + return fmt.Errorf("failed to watch PortworxDiags: %v", err) + } + + // Watch for changes to Pods that belong to PortworxDiag object + err = c.ctrl.Watch( + &source.Kind{Type: &v1.Pod{}}, + &handler.EnqueueRequestForOwner{ + IsController: true, + OwnerType: &diagv1.PortworxDiag{}, + }, + ) + if err != nil { + return err + } + + return nil +} + +func (c *Controller) getDiagObject(ctx context.Context, req reconcile.Request) (*diagv1.PortworxDiag, bool, error) { + // List all PortworxDiag instances, pick out ours, and set it to "Pending" if other diags are running + diags := &diagv1.PortworxDiagList{} + err := c.client.List(context.TODO(), diags, &client.ListOptions{Namespace: req.Namespace}) + if err != nil { + // Error reading the objects - requeue the request (no items returns a successful empty list). + return nil, false, err + } + if len(diags.Items) == 0 { + return nil, false, nil + } + + // Sort all diags by creation timestamp + sort.Slice(diags.Items, func(i, j int) bool { + return diags.Items[i].CreationTimestamp.Before(&diags.Items[j].CreationTimestamp) + }) + + var diag *diagv1.PortworxDiag + otherDiagRunning := false + for _, d := range diags.Items { // Run diags in order of creation: if another is running before us, it was created earlier so let it go + if d.Name == req.Name { + diag = d.DeepCopy() + break + } + if d.Status.Phase == diagv1.DiagStatusInProgress { + otherDiagRunning = true + } + } + return diag, otherDiagRunning, nil +} + +func (c *Controller) Reconcile(ctx context.Context, req reconcile.Request) (reconcile.Result, error) { + log := logrus.WithFields(map[string]interface{}{ + "Request.Namespace": req.Namespace, + "Request.Name": req.Name, + }) + log.Infof("Reconciling PortworxDiag") + + diag, otherDiagRunning, err := c.getDiagObject(ctx, req) + if err != nil { + return reconcile.Result{}, err + } + if diag == nil { + // Request objects not found, could have been deleted after reconcile request. + return reconcile.Result{}, nil + } + + if otherDiagRunning { + logrus.Infof("Other diag is running, waiting for it to complete before starting a new one") + err = c.patchPhase(diag, diagv1.DiagStatusPending, "Waiting for other PortworxDiag objects to complete before starting this one") + if err != nil { + k8s.WarningEvent(c.recorder, diag, util.FailedSyncReason, err.Error()) + return reconcile.Result{}, err + } + + return reconcile.Result{}, nil + } + + if err := c.syncPortworxDiag(diag); err != nil { + // Ignore object revision conflict errors, as PortworxDiag could have been edited. + // The next reconcile loop should be able to resolve the issue. + if strings.Contains(err.Error(), k8s.UpdateRevisionConflictErr) { + logrus.Warnf("failed to sync PortworxDiag %s: %v", req, err) + return reconcile.Result{}, nil + } + + k8s.WarningEvent(c.recorder, diag, util.FailedSyncReason, err.Error()) + return reconcile.Result{}, err + } + + return reconcile.Result{}, nil +} + +func (c *Controller) fetchSTC() (*corev1.StorageCluster, error) { + stcs := &corev1.StorageClusterList{} + err := c.client.List(context.TODO(), stcs, &client.ListOptions{}) + if err != nil { + return nil, fmt.Errorf("failed to list StorageClusters: %v", err) + } + if len(stcs.Items) > 1 { + return nil, fmt.Errorf("more than one StorageCluster found, stopping") + } + if len(stcs.Items) == 0 { + return nil, fmt.Errorf("no StorageCluster found, stopping") + } + return &stcs.Items[0], nil +} + +func (c *Controller) getDiagPods(ns, diagName string) (*v1.PodList, error) { + pods := &v1.PodList{} + err := c.client.List(context.TODO(), pods, &client.ListOptions{ + LabelSelector: labels.SelectorFromSet(map[string]string{ + "name": PortworxDiagLabel, + diagv1.LabelPortworxDiagName: diagName, + }), + Namespace: ns, + }) + if err == nil || errors.IsNotFound(err) { + return pods, nil + } + return nil, fmt.Errorf("failed to list existing diag pods: %v", err) +} + +func (c *Controller) getDiagPodsForPodLogs(ns, diagName string) (*v1.PodList, error) { + pods := &v1.PodList{} + err := c.client.List(context.TODO(), pods, &client.ListOptions{ + LabelSelector: labels.SelectorFromSet(map[string]string{ + "name": PortworxDiagLabel + "-px-pod-logs", + diagv1.LabelPortworxDiagName: diagName, + }), + Namespace: ns, + }) + if err == nil || errors.IsNotFound(err) { + return pods, nil + } + return nil, fmt.Errorf("failed to list existing diag pods: %v", err) +} + +func getNodeToPodMap(podList *v1.PodList) map[string]*v1.Pod { + pods := make(map[string]*v1.Pod) + if podList == nil { + return pods + } + for _, p := range podList.Items { + tmp := p // To avoid referencing the loop variable + pods[p.Spec.NodeName] = &tmp + } + return pods +} + +func getNodeIDToStatusMap(nodeStatuses []diagv1.NodeStatus) map[string]string { + statuses := make(map[string]string) + for _, s := range nodeStatuses { + if s.NodeID == "" { + continue + } + statuses[s.NodeID] = s.Status + } + return statuses +} + +func (c *Controller) getNodeIDsWithSelectedVolumes(diag *diagv1.PortworxDiag, stc *corev1.StorageCluster) ([]string, error) { + if diag == nil || diag.Spec.Portworx == nil || (diag.Spec.Portworx.VolumeSelector.IDs == nil && diag.Spec.Portworx.VolumeSelector.Labels == nil) { + return []string{}, nil + } + + nodeIDMap := map[string]bool{} + + volumeClient := api.NewOpenStorageVolumeClient(c.grpcConn) + ctx, err := pxutil.SetupContextWithToken(context.Background(), stc, c.client) + if err != nil { + return nil, err + } + + for _, id := range diag.Spec.Portworx.VolumeSelector.IDs { + + // Inspect volume to get location of replicas + volumeInspectResponse, err := volumeClient.Inspect( + ctx, + &api.SdkVolumeInspectRequest{ + VolumeId: id, + }, + ) + if err != nil { + logrus.Warnf("Failed to inspect volume %s: %v", id, err) + // Try the next volume + continue + } + + // Add all nodes that have a replica of this volume + for _, rs := range volumeInspectResponse.Volume.ReplicaSets { + for _, r := range rs.Nodes { + nodeIDMap[r] = true + } + } + } + + // Inspect all volumes by labels + if len(diag.Spec.Portworx.VolumeSelector.Labels) > 0 { + volumeInspectResponse, err := volumeClient.InspectWithFilters( + ctx, + &api.SdkVolumeInspectWithFiltersRequest{ + Labels: diag.Spec.Portworx.VolumeSelector.Labels, + }, + ) + if err != nil { + logrus.Warnf("Failed to inspect volumes with labels %v: %v", diag.Spec.Portworx.VolumeSelector.Labels, err) + } else { + for _, v := range volumeInspectResponse.Volumes { + + // Add all nodes that have a replica of this volume + for _, rs := range v.Volume.ReplicaSets { + for _, r := range rs.Nodes { + nodeIDMap[r] = true + } + } + } + } + } + + // Convert to slice + nodeIDs := make([]string, 0, len(nodeIDMap)) + for k := range nodeIDMap { + nodeIDs = append(nodeIDs, k) + } + + return nodeIDs, nil +} + +type podReconcileStatus struct { + podsToDelete []*v1.Pod + nodesToCreatePodsFor []string + nodesToCreatePodsForPodLogs string + nodeStatusesToAdd []*diagv1.NodeStatus + podLogsStatusToAdd *diagv1.PodLogStatus +} + +func shouldPodBeOnNode(targetNodeID string, targetNodeName string, k8sNodes []v1.Node, nodeIDsWithReplicas []string, diag *diagv1.PortworxDiag) bool { + if diag == nil || diag.Spec.Portworx == nil { + // Just in case, sanity check + return false + } + + // If we're selecting all nodes, short-circuit + if diag.Spec.Portworx.NodeSelector.All { + return true + } + // Check if this is one of the nodes matching our volume selector + for _, id := range nodeIDsWithReplicas { + if id == targetNodeID { + return true + } + } + + // If there's no node selector and we're not selecting all nodes, collect none + if len(diag.Spec.Portworx.NodeSelector.IDs) == 0 && len(diag.Spec.Portworx.NodeSelector.Labels) == 0 { + return false + } + + // Filter by node ID first since it's the one we already have (save on API calls) + // If there's no IDs provided, do nothing and move on to the label match. + for _, id := range diag.Spec.Portworx.NodeSelector.IDs { + if id == targetNodeID { + return true + } + } + + // Node ID didn't match, check if node labels match label selectors + if len(diag.Spec.Portworx.NodeSelector.Labels) == 0 { + return false + } + + // Find node object in list + var node *v1.Node + for _, n := range k8sNodes { + if strings.EqualFold(n.Name, targetNodeName) { + nTemp := n // To avoid referencing the loop variable + node = &nTemp + break + } + } + + if node == nil { + return false + } + + // Check if node labels matches label selectors + for k, v := range diag.Spec.Portworx.NodeSelector.Labels { + label, ok := node.Labels[k] + if !ok { + return false // Label missing entirely + } + if label != v { + return false // Label values don't match + } + } + return true // All labels in selector passed +} + +func (c *Controller) getNodesToHavePods(nodes *v1.NodeList, diag *diagv1.PortworxDiag, stc *corev1.StorageCluster, nodeIDToNodeName map[string]string, nodeIDToStatus map[string]string) (map[string]bool, error) { + nodesToHavePods := map[string]bool{} + + // If we have node statuses populated already, use that as the master list to avoid recomputing labels + // If not, then do the hard work of calculating which nodes should have pods and reconcile based on that + if len(nodeIDToStatus) > 0 { + for nodeID := range nodeIDToStatus { + nodesToHavePods[nodeID] = true + } + return nodesToHavePods, nil + } + // If we have no spec to work with, return an empty list, nothing to do + if diag.Spec.Portworx == nil { + return nil, nil + } + + if diag.Spec.Portworx.NodeSelector.All { + // If we're selecting all nodes, just add all nodes + for nodeID := range nodeIDToNodeName { + nodesToHavePods[nodeID] = true + } + return nodesToHavePods, nil + } + + // If we're not selecting all nodes, get the list of nodes with volumes we care about + nodeIDsWithReplicas, err := c.getNodeIDsWithSelectedVolumes(diag, stc) + if err != nil { + return nil, err + } + + for nodeID, nodeName := range nodeIDToNodeName { + shouldExist := shouldPodBeOnNode(nodeID, nodeName, nodes.Items, nodeIDsWithReplicas, diag) + if shouldExist { + nodesToHavePods[nodeID] = true + } + } + + return nodesToHavePods, nil +} + +// getPodsDiff will return the pods that need to be created and deleted, as well as how many pods exist (but are not complete) and +// how many are complete +func (c *Controller) getPodsDiff(pods *v1.PodList, nodes *v1.NodeList, diag *diagv1.PortworxDiag, stc *corev1.StorageCluster, nodeIDToNodeName map[string]string) (podReconcileStatus, error) { + // Check on all of our storage nodes + prs := podReconcileStatus{ + podsToDelete: make([]*v1.Pod, 0), + nodesToCreatePodsFor: make([]string, 0), + nodesToCreatePodsForPodLogs: "", + nodeStatusesToAdd: make([]*diagv1.NodeStatus, 0), + podLogsStatusToAdd: &diagv1.PodLogStatus{}, + } + + nodeToPod := getNodeToPodMap(pods) + nodeIDToStatus := getNodeIDToStatusMap(diag.Status.NodeStatuses) + + nodesToHavePods, err := c.getNodesToHavePods(nodes, diag, stc, nodeIDToNodeName, nodeIDToStatus) + if err != nil { + return prs, err + } + + for nodeID, nodeName := range nodeIDToNodeName { + existingPod := nodeToPod[nodeName] + + _, shouldExist := nodesToHavePods[nodeID] + + status, ok := nodeIDToStatus[nodeID] + if !ok && shouldExist { + // This node is missing a status in the Diag, go and add it + prs.nodeStatusesToAdd = append(prs.nodeStatusesToAdd, &diagv1.NodeStatus{NodeID: nodeID, Status: diagv1.NodeStatusPending, Message: ""}) + if existingPod == nil { + // Also create a pod if it's missing + prs.nodesToCreatePodsFor = append(prs.nodesToCreatePodsFor, nodeName) + } + continue + } + + // This node exists in the status + // Delete any pods that are complete/failed + if status == diagv1.NodeStatusCompleted || status == diagv1.NodeStatusFailed { + if existingPod != nil { + prs.podsToDelete = append(prs.podsToDelete, existingPod) + } + continue + } + + // If a pod shouldn't exist, don't add one + if !shouldExist { + // Delete any pods that shouldn't exist (shouldn't ever happen, but just in case) + if existingPod != nil { + prs.podsToDelete = append(prs.podsToDelete, existingPod) + } + continue + } + + // Diag should still be running... create pod if it's missing + if existingPod == nil { + prs.nodesToCreatePodsFor = append(prs.nodesToCreatePodsFor, nodeName) + } + continue + } + + return prs, nil +} + +func (c *Controller) getPodsDiffForPodLogs(pods *v1.PodList, diag *diagv1.PortworxDiag, nodeIDToNodeName map[string]string, prs *podReconcileStatus) { + nodeToPodMapForPodLogs := getNodeToPodMap(pods) + for _, nodeName := range nodeIDToNodeName { + existingPod := nodeToPodMapForPodLogs[nodeName] + if diag.Spec.Portworx.CollectPodLogs && diag.Status.PodLogsStatus == (diagv1.PodLogStatus{}) { + prs.podLogsStatusToAdd = &diagv1.PodLogStatus{Status: diagv1.PodLogStatusPending, Message: ""} + if existingPod == nil { + prs.nodesToCreatePodsForPodLogs = nodeName + } + return + } + if diag.Status.PodLogsStatus.Status == diagv1.PodLogStatusFailed || diag.Status.PodLogsStatus.Status == diagv1.PodLogStatusCompleted { + if existingPod != nil { + prs.podsToDelete = append(prs.podsToDelete, existingPod) + } + return + } + if !diag.Spec.Portworx.CollectPodLogs { + if existingPod != nil { + prs.podsToDelete = append(prs.podsToDelete, existingPod) + } + return + } + if prs.podLogsStatusToAdd.Status == diagv1.PodLogStatusInProgress && existingPod == nil { + prs.nodesToCreatePodsForPodLogs = nodeName + return + } + } +} + +func getOverallPhase(statuses []diagv1.NodeStatus) (string, string) { + // If all nodes are not yet started or empty: phase is "Not Yet Started" + // If all nodes in status are complete: phase is "Completed" + // If all nodes are failed: phase is "Failed" + // If all nodes are either complete or failed: phase is "Partial Failure" + // If at least one node is in progress: phase is "In Progress" + // Worst case, return an "unknown" status + + if len(statuses) == 0 { + return diagv1.DiagStatusPending, "" + } + + phaseCount := map[string]int{} + for _, n := range statuses { + if _, ok := phaseCount[n.Status]; !ok { + phaseCount[n.Status] = 1 + continue + } + phaseCount[n.Status] += 1 + } + + emptyPendingCount := 0 + if emptyCount, ok := phaseCount[""]; ok { + emptyPendingCount += emptyCount + } + if pendingCount, ok := phaseCount[diagv1.NodeStatusPending]; ok { + emptyPendingCount += pendingCount + } + + if emptyPendingCount == len(statuses) { + return diagv1.DiagStatusPending, "" + } + + completeCount, ok := phaseCount[diagv1.NodeStatusCompleted] + if ok && completeCount == len(statuses) { + return diagv1.DiagStatusCompleted, "All diags collected successfully" + } + + failedCount, ok := phaseCount[diagv1.NodeStatusFailed] + if ok && failedCount == len(statuses) { + return diagv1.DiagStatusFailed, "All diags failed to collect" + } + + // Count "Pending" pods as "Failed" here, as if all the others have finished it probably means it can't be scheduled + pendingCount, ok := phaseCount[diagv1.NodeStatusPending] + if !ok { + pendingCount = 0 + } + + if failedCount+pendingCount+completeCount == len(statuses) { + return diagv1.DiagStatusPartialFailure, "Some diags failed to collect" + } + + if inProgressCount, ok := phaseCount[diagv1.NodeStatusInProgress]; ok && inProgressCount > 0 { + return diagv1.DiagStatusInProgress, "Diag collection is in progress" + } + + return diagv1.DiagStatusUnknown, "" +} + +func getMissingStatusPatch(diag *diagv1.PortworxDiag) map[string]interface{} { + if diag.Status.Phase != "" || diag.Status.ClusterUUID != "" || diag.Status.NodeStatuses != nil || diag.Status.PodLogsStatus != (diagv1.PodLogStatus{}) { + return nil + } + return map[string]interface{}{ + "op": "add", + "path": "/status", + "value": diagv1.PortworxDiagStatus{Phase: diagv1.DiagStatusPending, NodeStatuses: []diagv1.NodeStatus{}, PodLogsStatus: diagv1.PodLogStatus{}}, + } +} + +func getChangedClusterUUIDPatch(diag *diagv1.PortworxDiag, stc *corev1.StorageCluster) map[string]interface{} { + if diag.Status.ClusterUUID == stc.Status.ClusterUID { + return nil + } + return map[string]interface{}{ + "op": "add", + "path": "/status/clusterUuid", + "value": stc.Status.ClusterUID, + } +} + +func getOverallPhasePatch(diag *diagv1.PortworxDiag) []map[string]interface{} { + patches := []map[string]interface{}{} + newPhase, newMessage := getOverallPhase(diag.Status.NodeStatuses) + + if diag.Spec.Portworx.CollectPodLogs { + if len(diag.Status.NodeStatuses) == 0 { + newPhase = diag.Status.PodLogsStatus.Status + newMessage = "No node diags to collect, pod logs collection is " + diag.Status.PodLogsStatus.Status + } else if newPhase == diagv1.DiagStatusFailed { + if diag.Status.PodLogsStatus.Status == diagv1.PodLogStatusInProgress { + newPhase = diagv1.DiagStatusPartialFailure + newMessage = "Failed to collect node diags, pod logs collection is in progress" + } else if diag.Status.PodLogsStatus.Status == diagv1.PodLogStatusCompleted { + newPhase = diagv1.DiagStatusPartialFailure + newMessage = "Pod logs collection is completed, but failed to collect node diags" + } else if diag.Status.PodLogsStatus.Status == diagv1.PodLogStatusPending { + newPhase = diagv1.DiagStatusPartialFailure + newMessage = "Failed to collect node diags, pod logs collection is pending" + } + } else if newPhase == diagv1.DiagStatusCompleted { + if diag.Status.PodLogsStatus.Status == diagv1.PodLogStatusFailed { + newPhase = diagv1.DiagStatusPartialFailure + newMessage = "All node diags collected successfully, but failed to collect pod logs" + } else if diag.Status.PodLogsStatus.Status == diagv1.PodLogStatusInProgress { + newPhase = diagv1.DiagStatusInProgress + newMessage = "All node diags collected successfully, pod logs collection is in progress" + } else if diag.Status.PodLogsStatus.Status == diagv1.PodLogStatusPending { + newPhase = diagv1.DiagStatusInProgress + newMessage = "All node diags collected successfully, pod logs collection is pending" + } + } else if newPhase == diagv1.DiagStatusInProgress { + if diag.Status.PodLogsStatus.Status == diagv1.PodLogStatusFailed { + newPhase = diagv1.DiagStatusPartialFailure + newMessage = "Node diags collection is in progress, but failed to collect pod logs" + } else if diag.Status.PodLogsStatus.Status == diagv1.PodLogStatusCompleted { + newMessage = "Node diags collection is in progress, Pod logs collection is completed" + } + } else if newPhase == diagv1.DiagStatusPending { + if diag.Status.PodLogsStatus.Status == diagv1.PodLogStatusFailed { + newPhase = diagv1.DiagStatusPartialFailure + newMessage = "Node diags collection is pending, but failed to collect pod logs" + } else if diag.Status.PodLogsStatus.Status == diagv1.PodLogStatusCompleted { + newPhase = diagv1.DiagStatusInProgress + newMessage = "Node diags collection is pending, Pod logs collection is completed" + } else if diag.Status.PodLogsStatus.Status == diagv1.PodLogStatusInProgress { + newPhase = diagv1.DiagStatusInProgress + newMessage = "Node diags collection is pending, Pod logs collection is in progress" + } + } else if newPhase == diagv1.DiagStatusPartialFailure { + if diag.Status.PodLogsStatus.Status == diagv1.PodLogStatusFailed { + newMessage = "Node diags collection is partially failed, but failed to collect pod logs" + } else if diag.Status.PodLogsStatus.Status == diagv1.PodLogStatusInProgress { + newMessage = "Node diags collection is partially failed, pod logs collection is in progress" + } else if diag.Status.PodLogsStatus.Status == diagv1.PodLogStatusPending { + newMessage = "Node diags collection is partially failed, pod logs collection is pending" + } else if diag.Status.PodLogsStatus.Status == diagv1.PodLogStatusCompleted { + newMessage = "Node diags collection is partially failed, pod logs collection is completed" + } + } + } + + logrus.Debugf("New phase for PortworxDiag is '%s'", newPhase) + if diag.Status.Phase != newPhase { + op := "add" + if diag.Status.Phase != "" { + op = "replace" + } + patches = append(patches, map[string]interface{}{ + "op": op, + "path": "/status/phase", + "value": newPhase, + }) + } + if diag.Status.Message != newMessage { + op := "add" + if diag.Status.Message != "" { + op = "replace" + } + patches = append(patches, map[string]interface{}{ + "op": op, + "path": "/status/message", + "value": newMessage, + }) + } + + return patches +} + +func getMissingNodeStatusesPatch(diag *diagv1.PortworxDiag, nodeStatusesToAdd []*diagv1.NodeStatus) []map[string]interface{} { + if len(nodeStatusesToAdd) == 0 { + return nil + } + patches := []map[string]interface{}{} + if diag.Status.NodeStatuses == nil { + patches = append(patches, map[string]interface{}{ + "op": "add", + "path": "/status/nodes", + "value": []diagv1.NodeStatus{}, + }) + } + for _, toAdd := range nodeStatusesToAdd { + patches = append(patches, map[string]interface{}{ + "op": "add", + "path": "/status/nodes/-", + "value": toAdd, + }) + } + return patches +} + +func (c *Controller) updateDiagFields(diag *diagv1.PortworxDiag, stc *corev1.StorageCluster, prs *podReconcileStatus) error { + patches := []map[string]interface{}{} + + if patch := getMissingStatusPatch(diag); patch != nil { + patches = append(patches, patch) + } + + if patch := getChangedClusterUUIDPatch(diag, stc); patch != nil { + patches = append(patches, patch) + } + + if phasePatches := getOverallPhasePatch(diag); len(phasePatches) > 0 { + patches = append(patches, phasePatches...) + } + + if phasePatches := getMissingNodeStatusesPatch(diag, prs.nodeStatusesToAdd); len(phasePatches) > 0 { + patches = append(patches, phasePatches...) + } + + if podLogsStatusPatch := getMissingPodLogsStatusPatch(diag, prs.podLogsStatusToAdd); podLogsStatusPatch != nil { + patches = append(patches, podLogsStatusPatch) + } + + body, err := json.Marshal(patches) + if err != nil { + return fmt.Errorf("failed to marshal json patch to JSON: %v", err) + } + + err = c.client.Status().Patch(context.TODO(), diag, client.RawPatch(types.JSONPatchType, body)) + if err != nil { + return fmt.Errorf("failed to update phase for PortworxDiag CR: %v", err) + } + return nil +} + +func getMissingPodLogsStatusPatch(diag *diagv1.PortworxDiag, podLogsStatusToAdd *diagv1.PodLogStatus) map[string]interface{} { + if podLogsStatusToAdd == nil || diag.Status.PodLogsStatus != (diagv1.PodLogStatus{}) { + return nil + } + + return map[string]interface{}{ + "op": "add", + "path": "/status/collectPodLogs", + "value": podLogsStatusToAdd, + } +} + +func (c *Controller) patchPhase(diag *diagv1.PortworxDiag, newPhase string, newMessage string) error { + patches := []map[string]interface{}{} + + if patch := getMissingStatusPatch(diag); patch != nil { + patches = append(patches, patch) + } + patches = append(patches, map[string]interface{}{ + "op": "add", + "path": "/status/phase", + "value": newPhase, + }, map[string]interface{}{ + "op": "add", + "path": "/status/message", + "value": newMessage, + }) + body, err := json.Marshal(patches) + if err != nil { + return fmt.Errorf("failed to marshal json patch to JSON: %v", err) + } + err = c.client.Status().Patch(context.TODO(), diag, client.RawPatch(types.JSONPatchType, body)) + if err != nil { + return fmt.Errorf("failed to update phase for PortworxDiag CR: %v", err) + } + return nil +} + +func (c *Controller) syncPortworxDiag(diag *diagv1.PortworxDiag) error { + // If diag is already done, don't do any more work + switch diag.Status.Phase { + case diagv1.DiagStatusPartialFailure: + fallthrough + case diagv1.DiagStatusCompleted: + fallthrough + case diagv1.DiagStatusFailed: + logrus.Infof("PortworxDiag %s in namespace %s is already in status %s, no work to do", diag.Name, diag.Namespace, diag.Status.Phase) + return nil + default: + break + } + + logrus.Info("Enter syncPortworxDiag") + stc, err := c.fetchSTC() + if err != nil { + logrus.WithError(err).Error("Failed to find StorageCluster object") + k8s.WarningEvent(c.recorder, diag, util.FailedSyncReason, fmt.Sprintf("Failed to find StorageCluster object: %v", err)) + patchErr := c.patchPhase(diag, diagv1.DiagStatusFailed, fmt.Sprintf("Failed to find StorageCluster object: %v", err)) + if patchErr != nil { + k8s.WarningEvent(c.recorder, diag, util.FailedSyncReason, fmt.Sprintf("failed to patch PortworxDiag with %s status: %v", diagv1.DiagStatusFailed, patchErr)) + return fmt.Errorf("failed to patch PortworxDiag with %s status: %v", diagv1.DiagStatusFailed, patchErr) + } + + return fmt.Errorf("failed to find StorageCluster object: %v", err) + } + + if stc.Namespace != diag.Namespace { + logrus.Errorf("Diag %s in namespace %s is not in the same namespace as target cluster (namespace %s). Ensure the PortworxDiag object is created in the same namespace as the StorageCluster object", diag.Name, diag.Namespace, stc.Namespace) + k8s.WarningEvent(c.recorder, diag, util.FailedSyncReason, fmt.Sprintf("Diag %s in namespace %s is not in the same namespace as target cluster (namespace %s). Ensure the PortworxDiag object is created in the same namespace as the StorageCluster object", diag.Name, diag.Namespace, stc.Namespace)) + err = c.patchPhase(diag, diagv1.DiagStatusFailed, fmt.Sprintf("Diag %s in namespace %s is not in the same namespace as target cluster (namespace %s). Ensure the PortworxDiag object is created in the same namespace as the StorageCluster object", diag.Name, diag.Namespace, stc.Namespace)) + if err != nil { + k8s.WarningEvent(c.recorder, diag, util.FailedSyncReason, fmt.Sprintf("failed to patch PortworxDiag with %s status: %v", diagv1.DiagStatusFailed, err)) + return fmt.Errorf("failed to patch PortworxDiag with %s status: %v", diagv1.DiagStatusFailed, err) + } + + return fmt.Errorf("diag %s in namespace %s is not in the same namespace as target cluster (namespace %s). Ensure the PortworxDiag object is created in the same namespace as the StorageCluster object", diag.Name, diag.Namespace, stc.Namespace) + } + + conn, err := pxutil.GetPortworxConn(c.grpcConn, c.client, diag.Namespace) + if err != nil { + logrus.WithError(err).Warn("Failed to open Portworx GRPC connection, future calls will use the k8s client which may have outdated info") + } + c.grpcConn = conn + + // GetStorageNodeMapping will properly handle if conn is nil + nodeNameToNodeID, nodeIDToNodeName, err := pxutil.GetStorageNodeMapping(stc, c.grpcConn, c.client) + if err != nil { + logrus.WithError(err).Error("Failed to get mapping from k8s nodes to Portworx node IDs") + return err + } + + podsForNodeDiags, err := c.getDiagPods(diag.Namespace, diag.Name) + if err != nil { + return err + } + + podsForPodLogs, err := c.getDiagPodsForPodLogs(diag.Namespace, diag.Name) + if err != nil { + return err + } + + // List all k8s nodes in the cluster, but only if we have a label selector + // Otherwise just pass an empty list through + nodes := &v1.NodeList{Items: []v1.Node{}} + if diag.Spec.Portworx.NodeSelector.Labels != nil { + err = c.client.List(context.Background(), nodes) + if err != nil { + logrus.WithError(err).Error("Failed to list nodes in cluster") + return fmt.Errorf("failed to list k8s nodes: %v", err) + } + } + + // Get what changes we need to make between real and desired + prs, err := c.getPodsDiff(podsForNodeDiags, nodes, diag, stc, nodeIDToNodeName) + if err != nil { + logrus.WithError(err).Error("Failed to check pods for required operations") + return err + } + + // Get what changes we need to make between real and desired for pod logs + c.getPodsDiffForPodLogs(podsForPodLogs, diag, nodeIDToNodeName, &prs) + + err = c.updateDiagFields(diag, stc, &prs) + if err != nil { + logrus.WithError(err).Error("Failed to update status fields in PortworxDiag CR") + return err + } + + if len(prs.nodesToCreatePodsFor) > 0 { + + // Create pods for these nodes + for _, nodeName := range prs.nodesToCreatePodsFor { + nodeID := nodeNameToNodeID[nodeName] + podTemplate, err := makeDiagPodTemplate(stc, diag, stc.Namespace, nodeName, nodeID, "") + if err != nil { + logrus.WithError(err).Errorf("Failed to create diags collection pod template") + k8s.WarningEvent(c.recorder, diag, "PodCreateFailed", fmt.Sprintf("Failed to create diags collection pod template: %v", err)) + continue + // Don't exit entirely, keep trying to create the rest + } + err = c.podControl.CreatePods(context.TODO(), diag.Namespace, podTemplate, diag, metav1.NewControllerRef(diag, controllerKind)) + if err != nil { + logrus.WithError(err).Warnf("Failed to create diags collection pod") + k8s.WarningEvent(c.recorder, diag, "PodCreateFailed", fmt.Sprintf("Failed to create diags collection pod: %v", err)) + // Don't exit entirely, keep trying to create the rest + } + } + } + + if diag.Spec.Portworx.CollectPodLogs && prs.nodesToCreatePodsForPodLogs != "" { + nodeID := nodeNameToNodeID[prs.nodesToCreatePodsForPodLogs] + podTemplate, err := makeDiagPodTemplate(stc, diag, stc.Namespace, prs.nodesToCreatePodsForPodLogs, nodeID, "-px-pod-logs") + if err != nil { + logrus.WithError(err).Errorf("Failed to create diags collection pod template") + k8s.WarningEvent(c.recorder, diag, "PodCreateFailed", fmt.Sprintf("Failed to create diags collection pod template: %v", err)) + } else { + err = c.podControl.CreatePods(context.TODO(), diag.Namespace, podTemplate, diag, metav1.NewControllerRef(diag, controllerKind)) + if err != nil { + logrus.WithError(err).Warnf("Failed to create diags collection pod") + k8s.WarningEvent(c.recorder, diag, "PodCreateFailed", fmt.Sprintf("Failed to create diags collection pod: %v", err)) + } + } + } + + // TODO: what do we do if there are extra untracked pods? Unlikely, but possible + if len(prs.podsToDelete) > 0 { + logrus.Infof("Need to delete %d completed diag pods", len(prs.podsToDelete)) + // If there are any pods to delete that are completed, delete them + for _, p := range prs.podsToDelete { + err = c.podControl.DeletePod(context.TODO(), p.Namespace, p.Name, diag) + if err != nil && !errors.IsNotFound(err) { + logrus.WithError(err).Warnf("Failed to delete completed diags collection pod, it may still hang around") + k8s.WarningEvent(c.recorder, diag, "PodDeleteFailed", fmt.Sprintf("Failed to delete completed diags collection pod: %v", err)) + // Don't exit, keep trying to clean up the rest + } + } + } + + logrus.Info("syncPortworxDiag completed successfully") + return nil +} + +// RegisterCRD registers and validates CRDs +func (c *Controller) RegisterCRD() error { + crd, err := k8s.GetCRDFromFile(portworxDiagCRDFile, crdBaseDir()) + if err != nil { + return err + } + latestCRD, err := apiextensionsops.Instance().GetCRD(crd.Name, metav1.GetOptions{}) + if errors.IsNotFound(err) { + if err = apiextensionsops.Instance().RegisterCRD(crd); err != nil { + return err + } + } else if err != nil { + return err + } else { + crd.ResourceVersion = latestCRD.ResourceVersion + if _, err := apiextensionsops.Instance().UpdateCRD(crd); err != nil { + return err + } + } + + resource := fmt.Sprintf("%s.%s", crd.Spec.Names.Plural, crd.Spec.Group) + return apiextensionsops.Instance().ValidateCRD(resource, validateCRDTimeout, validateCRDInterval) +} + +func getCRDBasePath() string { + return crdBasePath +} diff --git a/pkg/controller/storagecluster/controller_test.go b/pkg/controller/storagecluster/controller_test.go index 86b37deaa5..23ae4eaa61 100644 --- a/pkg/controller/storagecluster/controller_test.go +++ b/pkg/controller/storagecluster/controller_test.go @@ -1878,8 +1878,10 @@ func TestStoragePodGetsScheduled(t *testing.T) { require.Len(t, podControl.Templates, 2) podTemplate1 := expectedPodTemplate.DeepCopy() podTemplate1.Spec.NodeName = "k8s-node-1" + podTemplate1.Labels[constants.OperatorLabelNodeNameKey] = "k8s-node-1" podTemplate2 := expectedPodTemplate.DeepCopy() podTemplate2.Spec.NodeName = "k8s-node-2" + podTemplate2.Labels[constants.OperatorLabelNodeNameKey] = "k8s-node-2" expectedPodTemplates := []v1.PodTemplateSpec{ *podTemplate1, *podTemplate2, } @@ -1997,8 +1999,10 @@ func TestStoragePodGetsScheduledK8s1_24(t *testing.T) { require.Len(t, podControl.Templates, 2) podTemplate1 := expectedPodTemplate.DeepCopy() podTemplate1.Spec.NodeName = "k8s-node-1" + podTemplate1.Labels[constants.OperatorLabelNodeNameKey] = "k8s-node-1" podTemplate2 := expectedPodTemplate.DeepCopy() podTemplate2.Spec.NodeName = "k8s-node-2" + podTemplate2.Labels[constants.OperatorLabelNodeNameKey] = "k8s-node-2" expectedPodTemplates := []v1.PodTemplateSpec{ *podTemplate1, *podTemplate2, } @@ -2340,10 +2344,13 @@ func TestStoragePodGetsScheduledWithCustomNodeSpecs(t *testing.T) { } podTemplate1 := expectedPodTemplate.DeepCopy() podTemplate1.Spec.NodeName = "k8s-node-1" + podTemplate1.Labels[constants.OperatorLabelNodeNameKey] = "k8s-node-1" podTemplate2 := expectedPodTemplate.DeepCopy() podTemplate2.Spec.NodeName = "k8s-node-2" + podTemplate2.Labels[constants.OperatorLabelNodeNameKey] = "k8s-node-2" podTemplate3 := expectedPodTemplate.DeepCopy() podTemplate3.Spec.NodeName = "k8s-node-3" + podTemplate3.Labels[constants.OperatorLabelNodeNameKey] = "k8s-node-3" expectedPodTemplates := []v1.PodTemplateSpec{ *podTemplate1, *podTemplate2, *podTemplate3, } @@ -2573,6 +2580,7 @@ func TestExtraStoragePodsGetRemoved(t *testing.T) { driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() driver.EXPECT().GetKVDBMembers(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetNodesSelectedForUpgrade(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil, nil).AnyTimes() // This will create a revision which we will map to our pre-created pods rev1Hash, err := createRevision(k8sClient, cluster, driverName) @@ -4356,13 +4364,24 @@ func TestRollingUpdateWithMinReadySeconds(t *testing.T) { } clusterRef := metav1.NewControllerRef(cluster, controllerKind) + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } + driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -4472,9 +4491,9 @@ func TestUpdateStorageClusterWithKVDBDown(t *testing.T) { } var storageNodes []*storageapi.StorageNode - storageNodes = append(storageNodes, createStorageNode("k8s-node-0", true)) - storageNodes = append(storageNodes, createStorageNode("k8s-node-1", true)) - storageNodes = append(storageNodes, createStorageNode("k8s-node-2", true)) + storageNodes = append(storageNodes, createStorageNode("k8s-node-0", true, "3.0.0")) + storageNodes = append(storageNodes, createStorageNode("k8s-node-1", true, "3.0.0")) + storageNodes = append(storageNodes, createStorageNode("k8s-node-2", true, "3.0.0")) driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() @@ -4486,6 +4505,7 @@ func TestUpdateStorageClusterWithKVDBDown(t *testing.T) { driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() + driver.EXPECT().GetNodesSelectedForUpgrade(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil, nil).AnyTimes() var kvdbMap = map[string]bool{ "k8s-node-0": true, @@ -4556,7 +4576,7 @@ func TestUpdateStorageClusterWithKVDBDown(t *testing.T) { result, err = controller.Reconcile(context.TODO(), request) require.Empty(t, result) require.Error(t, err) - require.Contains(t, err.Error(), fmt.Sprintf("couldn't get unavailable numbers: couldn't get list of storage nodes during rolling update of storage cluster %s/%s: %s", cluster.Namespace, cluster.Name, getStorageNodeserr)) + require.Contains(t, err.Error(), fmt.Sprintf("couldn't get list of storage nodes during rolling update of storage cluster %s/%s: %s", cluster.Namespace, cluster.Name, getStorageNodeserr)) // When GetKvdbMembers returns an error err = testutil.Get(k8sClient, cluster, cluster.Name, cluster.Namespace) @@ -4597,14 +4617,23 @@ func TestUpdateStorageClusterWithRollingUpdateStrategy(t *testing.T) { kubevirt: testutil.NoopKubevirtManager(mockCtrl), } clusterRef := metav1.NewControllerRef(cluster, controllerKind) - + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -4761,16 +4790,17 @@ func TestUpdateStorageClusterBasedOnStorageNodeStatuses(t *testing.T) { } var storageNodes []*storageapi.StorageNode - storageNodes = append(storageNodes, createStorageNode("k8s-node-0", true)) - storageNodes = append(storageNodes, createStorageNode("k8s-node-1", true)) + storageNodes = append(storageNodes, createStorageNode("k8s-node-0", true, "3.1.2")) + storageNodes = append(storageNodes, createStorageNode("k8s-node-1", true, "3.1.2")) // Create duplicate storage nodes with unhealthy statuses and one with healthy status. // We need to verify that the one with healthy status is considered when calculating // what nodes to upgrade next. - storageNodes = append(storageNodes, createStorageNode("k8s-node-2", false)) - storageNodes = append(storageNodes, createStorageNode("k8s-node-2", true)) - storageNodes = append(storageNodes, createStorageNode("k8s-node-2", false)) - storageNodes = append(storageNodes, createStorageNode("not-k8s-node", false)) + storageNodes = append(storageNodes, createStorageNode("k8s-node-2", false, "3.1.2")) + storageNodes = append(storageNodes, createStorageNode("k8s-node-2", true, "3.1.2")) + storageNodes = append(storageNodes, createStorageNode("k8s-node-2", false, "3.1.2")) + storageNodes = append(storageNodes, createStorageNode("not-k8s-node", false, "3.1.2")) + nodeResponse := []string{"k8s-node-0"} driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() @@ -4782,6 +4812,7 @@ func TestUpdateStorageClusterBasedOnStorageNodeStatuses(t *testing.T) { driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() driver.EXPECT().GetKVDBMembers(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetNodesSelectedForUpgrade(gomock.Any(), gomock.Any(), gomock.Any()).Return(nodeResponse, nil).AnyTimes() // This will create a revision which we will map to our pre-created pods rev1Hash, err := createRevision(k8sClient, cluster, driverName) @@ -4984,14 +5015,23 @@ func TestUpdateStorageClusterWithOpenshiftUpgrade(t *testing.T) { kubevirt: testutil.NoopKubevirtManager(mockCtrl), } clusterRef := metav1.NewControllerRef(cluster, controllerKind) - + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -5123,14 +5163,47 @@ func TestUpdateStorageClusterShouldNotExceedMaxUnavailable(t *testing.T) { kubevirt: testutil.NoopKubevirtManager(mockCtrl), } clusterRef := metav1.NewControllerRef(cluster, controllerKind) - + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node-1", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + { + Id: "node2", + SchedulerNodeName: "k8s-node-2", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + { + Id: "node3", + SchedulerNodeName: "k8s-node-3", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + { + Id: "node4", + SchedulerNodeName: "k8s-node-4", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -5335,14 +5408,47 @@ func TestUpdateStorageClusterWithPercentageMaxUnavailable(t *testing.T) { kubevirt: testutil.NoopKubevirtManager(mockCtrl), } clusterRef := metav1.NewControllerRef(cluster, controllerKind) - + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node-1", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + { + Id: "node2", + SchedulerNodeName: "k8s-node-2", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + { + Id: "node3", + SchedulerNodeName: "k8s-node-3", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + { + Id: "node4", + SchedulerNodeName: "k8s-node-4", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -5568,14 +5674,23 @@ func TestUpdateStorageClusterWhenDriverReportsPodNotUpdated(t *testing.T) { nodeInfoMap: maps.MakeSyncMap[string, *k8s.NodeInfo](), kubevirt: testutil.NoopKubevirtManager(mockCtrl), } - + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(false).AnyTimes() @@ -5638,14 +5753,23 @@ func TestUpdateStorageClusterShouldRestartPodIfItDoesNotHaveAnyHash(t *testing.T nodeInfoMap: maps.MakeSyncMap[string, *k8s.NodeInfo](), kubevirt: testutil.NoopKubevirtManager(mockCtrl), } - + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -5702,14 +5826,23 @@ func TestUpdateStorageClusterImagePullSecret(t *testing.T) { nodeInfoMap: maps.MakeSyncMap[string, *k8s.NodeInfo](), kubevirt: testutil.NoopKubevirtManager(mockCtrl), } - + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -5813,14 +5946,23 @@ func TestUpdateStorageClusterCustomImageRegistry(t *testing.T) { nodeInfoMap: maps.MakeSyncMap[string, *k8s.NodeInfo](), kubevirt: testutil.NoopKubevirtManager(mockCtrl), } - + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -5922,14 +6064,23 @@ func TestUpdateStorageClusterKvdbSpec(t *testing.T) { nodeInfoMap: maps.MakeSyncMap[string, *k8s.NodeInfo](), kubevirt: testutil.NoopKubevirtManager(mockCtrl), } - + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -6044,14 +6195,23 @@ func TestUpdateStorageClusterResourceRequirements(t *testing.T) { nodeInfoMap: maps.MakeSyncMap[string, *k8s.NodeInfo](), kubevirt: testutil.NoopKubevirtManager(mockCtrl), } - + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -6162,14 +6322,23 @@ func TestUpdateStorageClusterCloudStorageSpec(t *testing.T) { nodeInfoMap: maps.MakeSyncMap[string, *k8s.NodeInfo](), kubevirt: testutil.NoopKubevirtManager(mockCtrl), } - + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -6437,14 +6606,23 @@ func TestUpdateStorageClusterStorageSpec(t *testing.T) { nodeInfoMap: maps.MakeSyncMap[string, *k8s.NodeInfo](), kubevirt: testutil.NoopKubevirtManager(mockCtrl), } - + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -6665,6 +6843,16 @@ func TestUpdateStorageClusterNetworkSpec(t *testing.T) { nodeInfoMap: maps.MakeSyncMap[string, *k8s.NodeInfo](), kubevirt: testutil.NoopKubevirtManager(mockCtrl), } + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() @@ -6672,7 +6860,7 @@ func TestUpdateStorageClusterNetworkSpec(t *testing.T) { driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -6760,14 +6948,23 @@ func TestUpdateStorageClusterEnvVariables(t *testing.T) { nodeInfoMap: maps.MakeSyncMap[string, *k8s.NodeInfo](), kubevirt: testutil.NoopKubevirtManager(mockCtrl), } - + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -6857,6 +7054,16 @@ func TestUpdateStorageClusterRuntimeOptions(t *testing.T) { nodeInfoMap: maps.MakeSyncMap[string, *k8s.NodeInfo](), kubevirt: testutil.NoopKubevirtManager(mockCtrl), } + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() @@ -6864,7 +7071,7 @@ func TestUpdateStorageClusterRuntimeOptions(t *testing.T) { driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -6951,14 +7158,23 @@ func TestUpdateStorageClusterVolumes(t *testing.T) { nodeInfoMap: maps.MakeSyncMap[string, *k8s.NodeInfo](), kubevirt: testutil.NoopKubevirtManager(mockCtrl), } - + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -7216,14 +7432,23 @@ func TestUpdateStorageClusterSecretsProvider(t *testing.T) { nodeInfoMap: maps.MakeSyncMap[string, *k8s.NodeInfo](), kubevirt: testutil.NoopKubevirtManager(mockCtrl), } - + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -7309,14 +7534,23 @@ func TestUpdateStorageClusterStartPort(t *testing.T) { nodeInfoMap: maps.MakeSyncMap[string, *k8s.NodeInfo](), kubevirt: testutil.NoopKubevirtManager(mockCtrl), } - + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -7405,14 +7639,23 @@ func TestUpdateStorageClusterCSISpec(t *testing.T) { nodeInfoMap: maps.MakeSyncMap[string, *k8s.NodeInfo](), kubevirt: testutil.NoopKubevirtManager(mockCtrl), } - + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -7582,17 +7825,20 @@ func TestUpdateCloudStorageClusterNodeSpec(t *testing.T) { nodeInfoMap: maps.MakeSyncMap[string, *k8s.NodeInfo](), kubevirt: testutil.NoopKubevirtManager(mockCtrl), } - + var storageNodes []*storageapi.StorageNode + storageNodes = append(storageNodes, createStorageNode("k8s-node", true, "3.1.2")) + nodeResponse := []string{"k8s-node"} driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodes, nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() + driver.EXPECT().GetNodesSelectedForUpgrade(gomock.Any(), gomock.Any(), gomock.Any()).Return(nodeResponse, nil).AnyTimes() // This will create a revision which we will map to our pre-created pods rev1Hash, err := createRevision(k8sClient, cluster, driverName) @@ -7683,7 +7929,7 @@ func TestUpdateCloudStorageClusterNodeSpec(t *testing.T) { err = k8sClient.Update(context.TODO(), cluster) require.NoError(t, err) - //Change existing pod's hash to latest revision, to simulate new pod with latest spec + // Change existing pod's hash to latest revision, to simulate new pod with latest spec revs := &appsv1.ControllerRevisionList{} err = k8sClient.List(context.TODO(), revs, &client.ListOptions{}) require.NoError(t, err) @@ -7733,13 +7979,22 @@ func TestUpdateStorageClusterNodeSpec(t *testing.T) { nodeInfoMap: maps.MakeSyncMap[string, *k8s.NodeInfo](), kubevirt: testutil.NoopKubevirtManager(mockCtrl), } - + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() @@ -8175,14 +8430,23 @@ func TestUpdateStorageClusterK8sNodeChanges(t *testing.T) { nodeInfoMap: maps.MakeSyncMap[string, *k8s.NodeInfo](), kubevirt: testutil.NoopKubevirtManager(mockCtrl), } - + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -8442,14 +8706,23 @@ func TestUpdateStorageClusterShouldRestartPodIfItsHistoryHasInvalidSpec(t *testi nodeInfoMap: maps.MakeSyncMap[string, *k8s.NodeInfo](), kubevirt: testutil.NoopKubevirtManager(mockCtrl), } - + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -8527,14 +8800,23 @@ func TestUpdateStorageClusterSecurity(t *testing.T) { nodeInfoMap: maps.MakeSyncMap[string, *k8s.NodeInfo](), kubevirt: testutil.NoopKubevirtManager(mockCtrl), } - + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -9808,14 +10090,23 @@ func TestDoesTelemetryMatch(t *testing.T) { nodeInfoMap: maps.MakeSyncMap[string, *k8s.NodeInfo](), kubevirt: testutil.NoopKubevirtManager(mockCtrl), } - + storageNodeList := []*storageapi.StorageNode{ + { + Id: "node1", + SchedulerNodeName: "k8s-node", + NodeLabels: map[string]string{ + "PX Version": "3.0.0", + }, + Status: storageapi.Status_STATUS_OK, + }, + } driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() driver.EXPECT().String().Return(driverName).AnyTimes() driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() - driver.EXPECT().GetStorageNodes(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodeList, nil).AnyTimes() driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() @@ -10313,6 +10604,165 @@ func TestRequiredSCCAnnotationOnPortworxPods(t *testing.T) { require.Empty(t, podControl.Templates[0].Annotations) } +func TestNonDisruptiveRollingUpdate(t *testing.T) { + mockCtrl := gomock.NewController(t) + defer mockCtrl.Finish() + + mockNodeServer := mock.NewMockOpenStorageNodeServer(mockCtrl) + mockClusterDomainServer := mock.NewMockOpenStorageClusterDomainsServer(mockCtrl) + sdkServerIP := "127.0.0.1" + sdkServerPort := 21883 + mockSdk := mock.NewSdkServer(mock.SdkServers{ + Node: mockNodeServer, + ClusterDomains: mockClusterDomainServer, + }) + err := mockSdk.StartOnAddress(sdkServerIP, strconv.Itoa(sdkServerPort)) + require.NoError(t, err) + defer mockSdk.Stop() + + testutil.SetupEtcHosts(t, sdkServerIP, pxutil.PortworxServiceName+".kube-test") + defer testutil.RestoreEtcHosts(t) + driverName := "mock-driver" + cluster := createStorageCluster() + maxUnavailable := intstr.FromInt(2) + cluster.Spec.UpdateStrategy.RollingUpdate.MaxUnavailable = &maxUnavailable + k8sVersion, _ := version.NewVersion(minSupportedK8sVersion) + driver := testutil.MockDriver(mockCtrl) + fakeK8sNodes := &v1.NodeList{Items: []v1.Node{ + {ObjectMeta: metav1.ObjectMeta{Name: "node1"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "node2"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "node3"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "node4"}}, + {ObjectMeta: metav1.ObjectMeta{Name: "node5"}}, + }, + } + k8sClient := testutil.FakeK8sClient(&v1.Service{ + ObjectMeta: metav1.ObjectMeta{ + Name: pxutil.PortworxServiceName, + Namespace: cluster.Namespace, + }, + Spec: v1.ServiceSpec{ + ClusterIP: sdkServerIP, + Ports: []v1.ServicePort{ + { + Name: pxutil.PortworxSDKPortName, + Port: int32(sdkServerPort), + }, + }, + }, + }, cluster, fakeK8sNodes) + coreops.SetInstance(coreops.New(fakek8sclient.NewSimpleClientset())) + + podControl := &k8scontroller.FakePodControl{} + recorder := record.NewFakeRecorder(10) + controller := Controller{ + client: k8sClient, + Driver: driver, + podControl: podControl, + recorder: recorder, + kubernetesVersion: k8sVersion, + nodeInfoMap: maps.MakeSyncMap[string, *k8s.NodeInfo](), + kubevirt: testutil.NoopKubevirtManager(mockCtrl), + } + storageLabels := map[string]string{ + constants.LabelKeyClusterName: cluster.Name, + constants.LabelKeyDriverName: driverName, + } + + var storageNodes []*storageapi.StorageNode + storageNodes = append(storageNodes, createStorageNode("node1", true, "3.1.2")) + storageNodes = append(storageNodes, createStorageNode("node2", true, "3.1.2")) + storageNodes = append(storageNodes, createStorageNode("node3", true, "3.1.2")) + storageNodes = append(storageNodes, createStorageNode("node4", true, "3.1.2")) + storageNodes = append(storageNodes, createStorageNode("node5", true, "3.1.2")) + nodeResponse := []string{"node1", "node3", "node4"} + driver.EXPECT().Validate(gomock.Any()).Return(nil).AnyTimes() + driver.EXPECT().SetDefaultsOnStorageCluster(gomock.Any()).AnyTimes() + driver.EXPECT().GetSelectorLabels().Return(nil).AnyTimes() + driver.EXPECT().String().Return(driverName).AnyTimes() + driver.EXPECT().PreInstall(gomock.Any()).Return(nil).AnyTimes() + driver.EXPECT().UpdateDriver(gomock.Any()).Return(nil).AnyTimes() + driver.EXPECT().GetStorageNodes(gomock.Any()).Return(storageNodes, nil).AnyTimes() + driver.EXPECT().GetStoragePodSpec(gomock.Any(), gomock.Any()).Return(v1.PodSpec{}, nil).AnyTimes() + driver.EXPECT().UpdateStorageClusterStatus(gomock.Any(), gomock.Any()).Return(nil).AnyTimes() + driver.EXPECT().IsPodUpdated(gomock.Any(), gomock.Any()).Return(true).AnyTimes() + driver.EXPECT().GetKVDBMembers(gomock.Any()).Return(nil, nil).AnyTimes() + driver.EXPECT().GetNodesSelectedForUpgrade(gomock.Any(), gomock.Any(), gomock.Any()).Return(nodeResponse, nil).Times(1) + rev1Hash, err := createRevision(k8sClient, cluster, driverName) + require.NoError(t, err) + storageLabels[util.DefaultStorageClusterUniqueLabelKey] = rev1Hash + for i := 0; i < 5; i++ { + k8sname := "node" + strconv.Itoa(i+1) + storagePod := createStoragePod(cluster, fmt.Sprintf("storage-pod-%d", i+1), k8sname, storageLabels) + storagePod.Status.Conditions = []v1.PodCondition{ + { + Type: v1.PodReady, + Status: v1.ConditionTrue, + }, + } + err = k8sClient.Create(context.TODO(), storagePod) + require.NoError(t, err) + } + + request := reconcile.Request{ + NamespacedName: types.NamespacedName{ + Name: cluster.Name, + Namespace: cluster.Namespace, + }, + } + result, err := controller.Reconcile(context.TODO(), request) + require.NoError(t, err) + require.Empty(t, result) + + err = testutil.Get(k8sClient, cluster, cluster.Name, cluster.Namespace) + require.NoError(t, err) + cluster.Spec.Image = "new/image" + err = k8sClient.Update(context.TODO(), cluster) + require.NoError(t, err) + + result, err = controller.Reconcile(context.TODO(), request) + require.NoError(t, err) + require.Empty(t, result) + + require.NotEmpty(t, podControl.DeletePodName) + require.Len(t, podControl.DeletePodName, 2) + require.ElementsMatch(t, []string{"storage-pod-1", "storage-pod-3"}, podControl.DeletePodName) + + // When the FilterNonOverlappingNodes API response only contains 1 node + podControl.DeletePodName = nil + nodeResponse = []string{"node4"} + driver.EXPECT().GetNodesSelectedForUpgrade(gomock.Any(), gomock.Any(), gomock.Any()).Return(nodeResponse, nil).Times(1) + + err = testutil.Get(k8sClient, cluster, cluster.Name, cluster.Namespace) + require.NoError(t, err) + cluster.Spec.Image = "new/image2" + err = k8sClient.Update(context.TODO(), cluster) + require.NoError(t, err) + + result, err = controller.Reconcile(context.TODO(), request) + require.NoError(t, err) + require.Empty(t, result) + + require.NotEmpty(t, podControl.DeletePodName) + require.Len(t, podControl.DeletePodName, 1) + require.ElementsMatch(t, []string{"storage-pod-4"}, podControl.DeletePodName) + + // When the API returns an error, return error and stop rolling upgrade + podControl.DeletePodName = nil + driver.EXPECT().GetNodesSelectedForUpgrade(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil, fmt.Errorf("test error")).Times(1) + err = testutil.Get(k8sClient, cluster, cluster.Name, cluster.Namespace) + require.NoError(t, err) + cluster.Spec.Image = "new/image3" + err = k8sClient.Update(context.TODO(), cluster) + require.NoError(t, err) + + result, err = controller.Reconcile(context.TODO(), request) + require.Error(t, err) + require.Empty(t, result) + require.Contains(t, err.Error(), "cannot upgrade nodes in parallel: test error") + +} + func TestStorageSpecValidation(t *testing.T) { mockCtrl := gomock.NewController(t) cluster := &corev1.StorageCluster{ @@ -10321,7 +10771,7 @@ func TestStorageSpecValidation(t *testing.T) { Namespace: "ns", }, } - //Testcase: Cluster has both storage types and no node specs + // Testcase: Cluster has both storage types and no node specs useAllDevices := true cluster.Spec.Storage = &corev1.StorageSpec{ UseAll: &useAllDevices, @@ -10364,7 +10814,7 @@ func TestStorageSpecValidation(t *testing.T) { require.Error(t, err) require.Empty(t, result) - //Testcase: Validate node having both storage and cloudstorage and cluster has cloudstorage + // Testcase: Validate node having both storage and cloudstorage and cluster has cloudstorage err = testutil.Get(k8sClient, cluster, cluster.Name, cluster.Namespace) require.NoError(t, err) @@ -10408,7 +10858,7 @@ func TestStorageSpecValidation(t *testing.T) { require.Error(t, err) require.Empty(t, result) - //Testcase: Node has both specs and cluster has storage + // Testcase: Node has both specs and cluster has storage err = testutil.Get(k8sClient, cluster, cluster.Name, cluster.Namespace) require.NoError(t, err) @@ -10431,7 +10881,7 @@ func TestStorageSpecValidation(t *testing.T) { require.Error(t, err) require.Empty(t, result) - //Testcase: Validate when cluster has both specs and node has cloud + // Testcase: Validate when cluster has both specs and node has cloud err = testutil.Get(k8sClient, cluster, cluster.Name, cluster.Namespace) require.NoError(t, err) @@ -10473,7 +10923,7 @@ func TestStorageSpecValidation(t *testing.T) { require.Error(t, err) require.Empty(t, result) - //Testcase: When cluster has both and node has storage + // Testcase: When cluster has both and node has storage err = testutil.Get(k8sClient, cluster, cluster.Name, cluster.Namespace) require.NoError(t, err) @@ -10507,7 +10957,7 @@ func TestStorageSpecValidation(t *testing.T) { require.Error(t, err) require.Empty(t, result) - //Update specs to have no error + // Update specs to have no error err = testutil.Get(k8sClient, cluster, cluster.Name, cluster.Namespace) require.NoError(t, err) @@ -10541,7 +10991,7 @@ func TestStorageSpecValidation(t *testing.T) { require.NoError(t, err) require.Empty(t, result) - //Another valid case + // Another valid case err = testutil.Get(k8sClient, cluster, cluster.Name, cluster.Namespace) require.NoError(t, err) @@ -10730,7 +11180,7 @@ func createStoragePod( } } -func createStorageNode(nodeName string, healthy bool) *storageapi.StorageNode { +func createStorageNode(nodeName string, healthy bool, version string) *storageapi.StorageNode { status := storageapi.Status_STATUS_OK if !healthy { status = storageapi.Status_STATUS_ERROR @@ -10739,6 +11189,9 @@ func createStorageNode(nodeName string, healthy bool) *storageapi.StorageNode { Status: status, SchedulerNodeName: nodeName, Id: nodeName, + NodeLabels: map[string]string{ + "PX Version": version, + }, } } diff --git a/pkg/controller/storagecluster/storagecluster.go b/pkg/controller/storagecluster/storagecluster.go index f07c5876b6..cbe169114e 100644 --- a/pkg/controller/storagecluster/storagecluster.go +++ b/pkg/controller/storagecluster/storagecluster.go @@ -241,7 +241,6 @@ func (c *Controller) Reconcile(ctx context.Context, request reconcile.Request) ( // Error reading the object - requeue the request. return reconcile.Result{}, err } - if err := c.validate(cluster); err != nil { k8s.WarningEvent(c.recorder, cluster, util.FailedValidationReason, err.Error()) if updateErr := util.UpdateLiveStorageClusterLifecycle(c.client, cluster, corev1.ClusterStateDegraded); updateErr != nil { @@ -1433,6 +1432,7 @@ func (c *Controller) CreatePodTemplate( podSpec.NodeName = node.Name labels := c.StorageClusterSelectorLabels(cluster) labels[constants.OperatorLabelManagedByKey] = constants.OperatorLabelManagedByValue + labels[constants.OperatorLabelNodeNameKey] = node.Name newTemplate := v1.PodTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Namespace: cluster.Namespace, diff --git a/pkg/controller/storagecluster/update.go b/pkg/controller/storagecluster/update.go index bcb6dfdd54..63fb804e96 100644 --- a/pkg/controller/storagecluster/update.go +++ b/pkg/controller/storagecluster/update.go @@ -63,10 +63,21 @@ func (c *Controller) rollingUpdate(cluster *corev1.StorageCluster, hash string, cluster.Name, err) } _, oldPods := c.groupStorageClusterPods(cluster, nodeToStoragePods, hash) - maxUnavailable, numUnavailable, availablePods, err := c.getPodAvailability(cluster, nodeToStoragePods) + + var storageNodeList []*storageapi.StorageNode + if storagePodsEnabled(cluster) { + storageNodeList, err = c.Driver.GetStorageNodes(cluster) + if err != nil { + return fmt.Errorf("couldn't get list of storage nodes during rolling "+ + "update of storage cluster %s/%s: %v", cluster.Namespace, cluster.Name, err) + } + } + + maxUnavailable, unavailableNodes, availablePods, err := c.getPodAvailability(cluster, nodeToStoragePods, storageNodeList) if err != nil { return fmt.Errorf("couldn't get unavailable numbers: %v", err) } + numUnavailable := len(unavailableNodes) oldPodsMap := map[string]*v1.Pod{} for _, pod := range oldPods { oldPodsMap[pod.Name] = pod @@ -117,6 +128,14 @@ func (c *Controller) rollingUpdate(cluster *corev1.StorageCluster, hash string, nodesMarkedUnschedulable[node.Name] = true } } + // Non disruptive upgrade of nodes only if update strategy is rolling and if allow disruption is false + if cluster.Spec.UpdateStrategy.RollingUpdate == nil || cluster.Spec.UpdateStrategy.RollingUpdate.Disruption == nil || !cluster.Spec.UpdateStrategy.RollingUpdate.Disruption.Allow { + oldAvailablePods, err = c.parallelUpgradeNodesList(cluster, oldAvailablePods, unavailableNodes, storageNodeList) + if err != nil { + return err + } + } + logrus.Debugf("Marking old pods for deletion") // sort the pods such that the pods on the nodes that we marked unschedulable are deleted first // Otherwise, we will end up marking too many nodes as unschedulable (or ping-ponging VMs between the nodes). @@ -332,6 +351,49 @@ func (c *Controller) getKVDBNodeAvailability(cluster *corev1.StorageCluster) (in } +func (c *Controller) parallelUpgradeNodesList(cluster *corev1.StorageCluster, pods []*v1.Pod, unavailableNodes []string, storageNodeList []*storageapi.StorageNode) ([]*v1.Pod, error) { + if len(pods) == 0 { + return pods, nil + } + + if storagePodsEnabled(cluster) { + if !util.ClusterSupportsParallelUpgrade(storageNodeList) { + logrus.Infof("Skipping parallel upgrade as not all nodes are running minimum required version : 3.1.2") + return pods, nil + } + nodeNameToIdMap := make(map[string]string) + nodesToUpgrade := make([]string, 0) + nodeIdToPodMap := make(map[string]*v1.Pod) + for _, storageNode := range storageNodeList { + nodeNameToIdMap[storageNode.SchedulerNodeName] = storageNode.Id + } + + for _, pod := range pods { + if nodeId, ok := nodeNameToIdMap[pod.Spec.NodeName]; ok { + nodesToUpgrade = append(nodesToUpgrade, nodeId) + nodeIdToPodMap[nodeId] = pod + } + + } + + nodesSelectedForUpgrade, err := c.Driver.GetNodesSelectedForUpgrade(cluster, nodesToUpgrade, unavailableNodes) + if err != nil { + return nil, fmt.Errorf("cannot upgrade nodes in parallel: %v", err) + } + + podsToUpgrade := make([]*v1.Pod, 0) + for _, nodeId := range nodesSelectedForUpgrade { + if pod, ok := nodeIdToPodMap[nodeId]; ok { + podsToUpgrade = append(podsToUpgrade, pod) + } + } + return podsToUpgrade, nil + } + + return pods, nil + +} + // annotateStoragePod annotate storage pods with custom annotations along with known annotations, // if no custom annotations created, only known annotations will be retained. // this function will not update the pod right away, actual update will be handled outside @@ -637,13 +699,15 @@ func (c *Controller) groupStorageClusterPods( func (c *Controller) getPodAvailability( cluster *corev1.StorageCluster, nodeToStoragePods map[string][]*v1.Pod, -) (int, int, map[string]*v1.Pod, error) { + storageNodeList []*storageapi.StorageNode, +) (int, []string, map[string]*v1.Pod, error) { logrus.Debugf("Getting unavailable numbers") availablePods := map[string]*v1.Pod{} nodeList := &v1.NodeList{} + unavailableNodes := []string{} err := c.client.List(context.TODO(), nodeList, &client.ListOptions{}) if err != nil { - return -1, -1, nil, fmt.Errorf("couldn't get list of nodes during rolling "+ + return -1, unavailableNodes, nil, fmt.Errorf("couldn't get list of nodes during rolling "+ "update of storage cluster %s/%s: %v", cluster.Namespace, cluster.Name, err) } @@ -651,11 +715,6 @@ func (c *Controller) getPodAvailability( var nonK8sStorageNodes []*storageapi.StorageNode if storagePodsEnabled(cluster) { - storageNodeList, err := c.Driver.GetStorageNodes(cluster) - if err != nil { - return -1, -1, nil, fmt.Errorf("couldn't get list of storage nodes during rolling "+ - "update of storage cluster %s/%s: %v", cluster.Namespace, cluster.Name, err) - } for _, storageNode := range storageNodeList { if len(storageNode.SchedulerNodeName) == 0 { nonK8sStorageNodes = append(nonK8sStorageNodes, storageNode) @@ -676,7 +735,6 @@ func (c *Controller) getPodAvailability( } } } - var numUnavailable, desiredNumberScheduled int for _, node := range nodeList.Items { // If the node has a storage node and it is not healthy. @@ -687,6 +745,7 @@ func (c *Controller) getPodAvailability( logrus.WithField("StorageNode", fmt.Sprintf("%s/%s", cluster.Namespace, node.Name)). Info("Storage node is not healthy") numUnavailable++ + unavailableNodes = append(unavailableNodes, storageNode.Id) continue } } @@ -698,7 +757,7 @@ func (c *Controller) getPodAvailability( "storageNodeExists": storageNodeExists, }).WithError(err).Debug("check node should run storage pod") if err != nil { - return -1, -1, nil, err + return -1, unavailableNodes, nil, err } if !wantToRun { @@ -709,6 +768,9 @@ func (c *Controller) getPodAvailability( storagePods, exists := nodeToStoragePods[node.Name] if !exists { numUnavailable++ + if storageNodeExists { + unavailableNodes = append(unavailableNodes, storageNode.Id) + } continue } available := false @@ -728,6 +790,9 @@ func (c *Controller) getPodAvailability( } } if !available { + if storageNodeExists { + unavailableNodes = append(unavailableNodes, storageNode.Id) + } numUnavailable++ } } @@ -741,6 +806,7 @@ func (c *Controller) getPodAvailability( if storageNode.Status != storageapi.Status_STATUS_OK { logrus.WithField("StorageNode", storageNode).Info("Storage node is not healthy") numUnavailable++ + unavailableNodes = append(unavailableNodes, storageNode.Id) } } @@ -750,11 +816,11 @@ func (c *Controller) getPodAvailability( true, ) if err != nil { - return -1, -1, nil, fmt.Errorf("invalid value for MaxUnavailable: %v", err) + return -1, unavailableNodes, nil, fmt.Errorf("invalid value for MaxUnavailable: %v", err) } logrus.Debugf("StorageCluster %s/%s, maxUnavailable: %d, numUnavailable: %d", cluster.Namespace, cluster.Name, maxUnavailable, numUnavailable) - return maxUnavailable, numUnavailable, availablePods, nil + return maxUnavailable, unavailableNodes, availablePods, nil } func (c *Controller) cleanupHistory( diff --git a/pkg/controller/storagenode/storagenode.go b/pkg/controller/storagenode/storagenode.go index 31143bbc2a..9eb29109d5 100644 --- a/pkg/controller/storagenode/storagenode.go +++ b/pkg/controller/storagenode/storagenode.go @@ -510,7 +510,7 @@ func (c *Controller) isStorageNode(storageNode *corev1.StorageNode, cluster *cor } nodeClient := api.NewOpenStorageNodeClient(c.sdkConn) - ctx, err := pxutil.SetupContextWithToken(context.Background(), cluster, c.client, false) + ctx, err := pxutil.SetupContextWithToken(context.Background(), cluster, c.client) if err != nil { logrus.Errorf("failed to setup context with token: %v", err) return false, err diff --git a/pkg/mock/openstoragesdk.mock.go b/pkg/mock/openstoragesdk.mock.go index 2e564c603d..ee808ace6a 100644 --- a/pkg/mock/openstoragesdk.mock.go +++ b/pkg/mock/openstoragesdk.mock.go @@ -194,6 +194,21 @@ func (mr *MockOpenStorageNodeServerMockRecorder) EnumerateWithFilters(arg0, arg1 return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EnumerateWithFilters", reflect.TypeOf((*MockOpenStorageNodeServer)(nil).EnumerateWithFilters), arg0, arg1) } +// FilterNonOverlappingNodes mocks base method. +func (m *MockOpenStorageNodeServer) FilterNonOverlappingNodes(arg0 context.Context, arg1 *api.SdkFilterNonOverlappingNodesRequest) (*api.SdkFilterNonOverlappingNodesResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FilterNonOverlappingNodes", arg0, arg1) + ret0, _ := ret[0].(*api.SdkFilterNonOverlappingNodesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// FilterNonOverlappingNodes indicates an expected call of FilterNonOverlappingNodes. +func (mr *MockOpenStorageNodeServerMockRecorder) FilterNonOverlappingNodes(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FilterNonOverlappingNodes", reflect.TypeOf((*MockOpenStorageNodeServer)(nil).FilterNonOverlappingNodes), arg0, arg1) +} + // Inspect mocks base method. func (m *MockOpenStorageNodeServer) Inspect(arg0 context.Context, arg1 *api.SdkNodeInspectRequest) (*api.SdkNodeInspectResponse, error) { m.ctrl.T.Helper() @@ -224,21 +239,6 @@ func (mr *MockOpenStorageNodeServerMockRecorder) InspectCurrent(arg0, arg1 inter return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InspectCurrent", reflect.TypeOf((*MockOpenStorageNodeServer)(nil).InspectCurrent), arg0, arg1) } -// RelaxedReclaimPurge mocks base method. -func (m *MockOpenStorageNodeServer) RelaxedReclaimPurge(arg0 context.Context, arg1 *api.SdkNodeRelaxedReclaimPurgeRequest) (*api.SdkNodeRelaxedReclaimPurgeResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RelaxedReclaimPurge", arg0, arg1) - ret0, _ := ret[0].(*api.SdkNodeRelaxedReclaimPurgeResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// RelaxedReclaimPurge indicates an expected call of RelaxedReclaimPurge. -func (mr *MockOpenStorageNodeServerMockRecorder) RelaxedReclaimPurge(arg0, arg1 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RelaxedReclaimPurge", reflect.TypeOf((*MockOpenStorageNodeServer)(nil).RelaxedReclaimPurge), arg0, arg1) -} - // UncordonAttachments mocks base method. func (m *MockOpenStorageNodeServer) UncordonAttachments(arg0 context.Context, arg1 *api.SdkNodeUncordonAttachmentsRequest) (*api.SdkNodeUncordonAttachmentsResponse, error) { m.ctrl.T.Helper() @@ -425,6 +425,26 @@ func (mr *MockOpenStorageNodeClientMockRecorder) EnumerateWithFilters(arg0, arg1 return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EnumerateWithFilters", reflect.TypeOf((*MockOpenStorageNodeClient)(nil).EnumerateWithFilters), varargs...) } +// FilterNonOverlappingNodes mocks base method. +func (m *MockOpenStorageNodeClient) FilterNonOverlappingNodes(arg0 context.Context, arg1 *api.SdkFilterNonOverlappingNodesRequest, arg2 ...grpc.CallOption) (*api.SdkFilterNonOverlappingNodesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "FilterNonOverlappingNodes", varargs...) + ret0, _ := ret[0].(*api.SdkFilterNonOverlappingNodesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// FilterNonOverlappingNodes indicates an expected call of FilterNonOverlappingNodes. +func (mr *MockOpenStorageNodeClientMockRecorder) FilterNonOverlappingNodes(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FilterNonOverlappingNodes", reflect.TypeOf((*MockOpenStorageNodeClient)(nil).FilterNonOverlappingNodes), varargs...) +} + // Inspect mocks base method. func (m *MockOpenStorageNodeClient) Inspect(arg0 context.Context, arg1 *api.SdkNodeInspectRequest, arg2 ...grpc.CallOption) (*api.SdkNodeInspectResponse, error) { m.ctrl.T.Helper() @@ -465,26 +485,6 @@ func (mr *MockOpenStorageNodeClientMockRecorder) InspectCurrent(arg0, arg1 inter return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InspectCurrent", reflect.TypeOf((*MockOpenStorageNodeClient)(nil).InspectCurrent), varargs...) } -// RelaxedReclaimPurge mocks base method. -func (m *MockOpenStorageNodeClient) RelaxedReclaimPurge(arg0 context.Context, arg1 *api.SdkNodeRelaxedReclaimPurgeRequest, arg2 ...grpc.CallOption) (*api.SdkNodeRelaxedReclaimPurgeResponse, error) { - m.ctrl.T.Helper() - varargs := []interface{}{arg0, arg1} - for _, a := range arg2 { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "RelaxedReclaimPurge", varargs...) - ret0, _ := ret[0].(*api.SdkNodeRelaxedReclaimPurgeResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// RelaxedReclaimPurge indicates an expected call of RelaxedReclaimPurge. -func (mr *MockOpenStorageNodeClientMockRecorder) RelaxedReclaimPurge(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{arg0, arg1}, arg2...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RelaxedReclaimPurge", reflect.TypeOf((*MockOpenStorageNodeClient)(nil).RelaxedReclaimPurge), varargs...) -} - // UncordonAttachments mocks base method. func (m *MockOpenStorageNodeClient) UncordonAttachments(arg0 context.Context, arg1 *api.SdkNodeUncordonAttachmentsRequest, arg2 ...grpc.CallOption) (*api.SdkNodeUncordonAttachmentsResponse, error) { m.ctrl.T.Helper() diff --git a/pkg/mock/sdkserver.go b/pkg/mock/sdkserver.go index ff43bdf727..fa7f4921c1 100644 --- a/pkg/mock/sdkserver.go +++ b/pkg/mock/sdkserver.go @@ -18,6 +18,7 @@ type SdkServers struct { Cluster *MockOpenStorageClusterServer Node *MockOpenStorageNodeServer Role *MockOpenStorageRoleServer + Volume *MockOpenStorageVolumeServer PortworxService *MockPortworxServiceServer ClusterDomains *MockOpenStorageClusterDomainsServer } @@ -55,6 +56,9 @@ func (m *SdkServer) StartOnAddress(ip, port string) error { if m.servers.Node != nil { api.RegisterOpenStorageNodeServer(m.server, m.servers.Node) } + if m.servers.Volume != nil { + api.RegisterOpenStorageVolumeServer(m.server, m.servers.Volume) + } if m.servers.Role != nil { api.RegisterOpenStorageRoleServer(m.server, m.servers.Role) } diff --git a/pkg/mock/storagedriver.mock.go b/pkg/mock/storagedriver.mock.go index c0c99ca3a2..9d9fc09b5f 100644 --- a/pkg/mock/storagedriver.mock.go +++ b/pkg/mock/storagedriver.mock.go @@ -85,6 +85,21 @@ func (mr *MockDriverMockRecorder) GetKVDBPodSpec(arg0, arg1 interface{}) *gomock return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetKVDBPodSpec", reflect.TypeOf((*MockDriver)(nil).GetKVDBPodSpec), arg0, arg1) } +// GetNodesSelectedForUpgrade mocks base method. +func (m *MockDriver) GetNodesSelectedForUpgrade(arg0 *v1.StorageCluster, arg1, arg2 []string) ([]string, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetNodesSelectedForUpgrade", arg0, arg1, arg2) + ret0, _ := ret[0].([]string) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetNodesSelectedForUpgrade indicates an expected call of GetNodesSelectedForUpgrade. +func (mr *MockDriverMockRecorder) GetNodesSelectedForUpgrade(arg0, arg1, arg2 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNodesSelectedForUpgrade", reflect.TypeOf((*MockDriver)(nil).GetNodesSelectedForUpgrade), arg0, arg1, arg2) +} + // GetSelectorLabels mocks base method. func (m *MockDriver) GetSelectorLabels() map[string]string { m.ctrl.T.Helper() diff --git a/pkg/util/k8s/k8s.go b/pkg/util/k8s/k8s.go index f5e78d1bea..df6b917017 100644 --- a/pkg/util/k8s/k8s.go +++ b/pkg/util/k8s/k8s.go @@ -1786,6 +1786,25 @@ func DeletePodDisruptionBudget( return k8sClient.Update(context.TODO(), pdb) } +// ListPodDisruptionBudgets returns a list of PodDisruptionBudgets for the given namespace +func ListPodDisruptionBudgets( + k8sClient client.Client, + namespace string, +) (*policyv1.PodDisruptionBudgetList, error) { + pdbList := &policyv1.PodDisruptionBudgetList{} + err := k8sClient.List( + context.TODO(), + pdbList, + &client.ListOptions{ + Namespace: namespace, + }, + ) + if err != nil { + return nil, err + } + return pdbList, nil +} + // CreateOrUpdateConsolePlugin creates a ConsolePlougin instance of ConsolePlugin CRD if not present, else updates it func CreateOrUpdateConsolePlugin( k8sClient client.Client, diff --git a/pkg/util/test/util.go b/pkg/util/test/util.go index 8794098c42..dc9fc89df2 100644 --- a/pkg/util/test/util.go +++ b/pkg/util/test/util.go @@ -26,6 +26,7 @@ import ( "github.com/golang/mock/gomock" "github.com/libopenstorage/openstorage/api" + "github.com/libopenstorage/operator/pkg/apis" ocp_configv1 "github.com/openshift/api/config/v1" appops "github.com/portworx/sched-ops/k8s/apps" coreops "github.com/portworx/sched-ops/k8s/core" @@ -116,7 +117,7 @@ func NoopKubevirtManager(mockCtrl *gomock.Controller) *mock.MockKubevirtManager // adds the CRDs defined in this repository to the scheme func FakeK8sClient(initObjects ...runtime.Object) client.Client { s := scheme.Scheme - if err := corev1.AddToScheme(s); err != nil { + if err := apis.AddToScheme(s); err != nil { logrus.Error(err) } if err := monitoringv1.AddToScheme(s); err != nil { @@ -923,6 +924,18 @@ func validatePortworxTokenRefresh(cluster *corev1.StorageCluster, timeout, inter logrus.Infof("pxVersion: %v, opVersion: 24.2.0. Skip verification because px token refresh is not supported with these versions.", pxVersion) return nil } + pidEnabled, err := strconv.ParseBool(cluster.Annotations["portworx.io/host-pid"]) + if err != nil || !pidEnabled { + pxSaSecret, err := coreops.Instance().GetSecret(pxSaTokenSecretName, cluster.Namespace) + if err != nil { + return fmt.Errorf("failed to get px serviceaccount secret [%s] in namespace [%s]. Err: %w", pxSaTokenSecretName, cluster.Namespace, err) + } + if len(pxSaSecret.Data[core.ServiceAccountTokenKey]) == 0 { + return fmt.Errorf("px serviceaccount token validation failed. Token doesn't exist or length is 0") + } + logrus.Infof("Annotation `host-pid: true` is required for verifying token refresh because we need to run command inside px runc container. Thus Skipping verification.") + return nil + } logrus.Infof("Verifying px runc container token...") // Get one Portworx pod to run commands inside the px runc container on the same node pxPods, err := coreops.Instance().GetPods(cluster.Namespace, map[string]string{"name": "portworx"}) diff --git a/tools.go b/tools.go index 84a9b7d508..fc62789da1 100644 --- a/tools.go +++ b/tools.go @@ -6,6 +6,8 @@ package tools import ( // Needed to generate client code for APIs _ "k8s.io/code-generator" + // Needed to generate CRD manifests and deepcopy functions for objects + _ "sigs.k8s.io/controller-tools/cmd/controller-gen" // Needed because of https://github.com/golang/mock/tree/v1.6.0#reflect-vendoring-error _ "github.com/golang/mock/mockgen/model" ) diff --git a/vendor/github.com/dgrijalva/jwt-go/.gitignore b/vendor/github.com/dgrijalva/jwt-go/.gitignore new file mode 100644 index 0000000000..80bed650ec --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/.gitignore @@ -0,0 +1,4 @@ +.DS_Store +bin + + diff --git a/vendor/github.com/dgrijalva/jwt-go/.travis.yml b/vendor/github.com/dgrijalva/jwt-go/.travis.yml new file mode 100644 index 0000000000..1027f56cd9 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/.travis.yml @@ -0,0 +1,13 @@ +language: go + +script: + - go vet ./... + - go test -v ./... + +go: + - 1.3 + - 1.4 + - 1.5 + - 1.6 + - 1.7 + - tip diff --git a/vendor/github.com/dgrijalva/jwt-go/LICENSE b/vendor/github.com/dgrijalva/jwt-go/LICENSE new file mode 100644 index 0000000000..df83a9c2f0 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/LICENSE @@ -0,0 +1,8 @@ +Copyright (c) 2012 Dave Grijalva + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/vendor/github.com/dgrijalva/jwt-go/MIGRATION_GUIDE.md b/vendor/github.com/dgrijalva/jwt-go/MIGRATION_GUIDE.md new file mode 100644 index 0000000000..7fc1f793cb --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/MIGRATION_GUIDE.md @@ -0,0 +1,97 @@ +## Migration Guide from v2 -> v3 + +Version 3 adds several new, frequently requested features. To do so, it introduces a few breaking changes. We've worked to keep these as minimal as possible. This guide explains the breaking changes and how you can quickly update your code. + +### `Token.Claims` is now an interface type + +The most requested feature from the 2.0 verison of this library was the ability to provide a custom type to the JSON parser for claims. This was implemented by introducing a new interface, `Claims`, to replace `map[string]interface{}`. We also included two concrete implementations of `Claims`: `MapClaims` and `StandardClaims`. + +`MapClaims` is an alias for `map[string]interface{}` with built in validation behavior. It is the default claims type when using `Parse`. The usage is unchanged except you must type cast the claims property. + +The old example for parsing a token looked like this.. + +```go + if token, err := jwt.Parse(tokenString, keyLookupFunc); err == nil { + fmt.Printf("Token for user %v expires %v", token.Claims["user"], token.Claims["exp"]) + } +``` + +is now directly mapped to... + +```go + if token, err := jwt.Parse(tokenString, keyLookupFunc); err == nil { + claims := token.Claims.(jwt.MapClaims) + fmt.Printf("Token for user %v expires %v", claims["user"], claims["exp"]) + } +``` + +`StandardClaims` is designed to be embedded in your custom type. You can supply a custom claims type with the new `ParseWithClaims` function. Here's an example of using a custom claims type. + +```go + type MyCustomClaims struct { + User string + *StandardClaims + } + + if token, err := jwt.ParseWithClaims(tokenString, &MyCustomClaims{}, keyLookupFunc); err == nil { + claims := token.Claims.(*MyCustomClaims) + fmt.Printf("Token for user %v expires %v", claims.User, claims.StandardClaims.ExpiresAt) + } +``` + +### `ParseFromRequest` has been moved + +To keep this library focused on the tokens without becoming overburdened with complex request processing logic, `ParseFromRequest` and its new companion `ParseFromRequestWithClaims` have been moved to a subpackage, `request`. The method signatues have also been augmented to receive a new argument: `Extractor`. + +`Extractors` do the work of picking the token string out of a request. The interface is simple and composable. + +This simple parsing example: + +```go + if token, err := jwt.ParseFromRequest(tokenString, req, keyLookupFunc); err == nil { + fmt.Printf("Token for user %v expires %v", token.Claims["user"], token.Claims["exp"]) + } +``` + +is directly mapped to: + +```go + if token, err := request.ParseFromRequest(req, request.OAuth2Extractor, keyLookupFunc); err == nil { + claims := token.Claims.(jwt.MapClaims) + fmt.Printf("Token for user %v expires %v", claims["user"], claims["exp"]) + } +``` + +There are several concrete `Extractor` types provided for your convenience: + +* `HeaderExtractor` will search a list of headers until one contains content. +* `ArgumentExtractor` will search a list of keys in request query and form arguments until one contains content. +* `MultiExtractor` will try a list of `Extractors` in order until one returns content. +* `AuthorizationHeaderExtractor` will look in the `Authorization` header for a `Bearer` token. +* `OAuth2Extractor` searches the places an OAuth2 token would be specified (per the spec): `Authorization` header and `access_token` argument +* `PostExtractionFilter` wraps an `Extractor`, allowing you to process the content before it's parsed. A simple example is stripping the `Bearer ` text from a header + + +### RSA signing methods no longer accept `[]byte` keys + +Due to a [critical vulnerability](https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/), we've decided the convenience of accepting `[]byte` instead of `rsa.PublicKey` or `rsa.PrivateKey` isn't worth the risk of misuse. + +To replace this behavior, we've added two helper methods: `ParseRSAPrivateKeyFromPEM(key []byte) (*rsa.PrivateKey, error)` and `ParseRSAPublicKeyFromPEM(key []byte) (*rsa.PublicKey, error)`. These are just simple helpers for unpacking PEM encoded PKCS1 and PKCS8 keys. If your keys are encoded any other way, all you need to do is convert them to the `crypto/rsa` package's types. + +```go + func keyLookupFunc(*Token) (interface{}, error) { + // Don't forget to validate the alg is what you expect: + if _, ok := token.Method.(*jwt.SigningMethodRSA); !ok { + return nil, fmt.Errorf("Unexpected signing method: %v", token.Header["alg"]) + } + + // Look up key + key, err := lookupPublicKey(token.Header["kid"]) + if err != nil { + return nil, err + } + + // Unpack key from PEM encoded PKCS8 + return jwt.ParseRSAPublicKeyFromPEM(key) + } +``` diff --git a/vendor/github.com/dgrijalva/jwt-go/README.md b/vendor/github.com/dgrijalva/jwt-go/README.md new file mode 100644 index 0000000000..add0103779 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/README.md @@ -0,0 +1,100 @@ +# jwt-go + +[![Build Status](https://travis-ci.org/dgrijalva/jwt-go.svg?branch=master)](https://travis-ci.org/dgrijalva/jwt-go) +[![GoDoc](https://godoc.org/github.com/dgrijalva/jwt-go?status.svg)](https://godoc.org/github.com/dgrijalva/jwt-go) + +A [go](http://www.golang.org) (or 'golang' for search engine friendliness) implementation of [JSON Web Tokens](http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html) + +**NEW VERSION COMING:** There have been a lot of improvements suggested since the version 3.0.0 released in 2016. I'm working now on cutting two different releases: 3.2.0 will contain any non-breaking changes or enhancements. 4.0.0 will follow shortly which will include breaking changes. See the 4.0.0 milestone to get an idea of what's coming. If you have other ideas, or would like to participate in 4.0.0, now's the time. If you depend on this library and don't want to be interrupted, I recommend you use your dependency mangement tool to pin to version 3. + +**SECURITY NOTICE:** Some older versions of Go have a security issue in the cryotp/elliptic. Recommendation is to upgrade to at least 1.8.3. See issue #216 for more detail. + +**SECURITY NOTICE:** It's important that you [validate the `alg` presented is what you expect](https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/). This library attempts to make it easy to do the right thing by requiring key types match the expected alg, but you should take the extra step to verify it in your usage. See the examples provided. + +## What the heck is a JWT? + +JWT.io has [a great introduction](https://jwt.io/introduction) to JSON Web Tokens. + +In short, it's a signed JSON object that does something useful (for example, authentication). It's commonly used for `Bearer` tokens in Oauth 2. A token is made of three parts, separated by `.`'s. The first two parts are JSON objects, that have been [base64url](http://tools.ietf.org/html/rfc4648) encoded. The last part is the signature, encoded the same way. + +The first part is called the header. It contains the necessary information for verifying the last part, the signature. For example, which encryption method was used for signing and what key was used. + +The part in the middle is the interesting bit. It's called the Claims and contains the actual stuff you care about. Refer to [the RFC](http://self-issued.info/docs/draft-jones-json-web-token.html) for information about reserved keys and the proper way to add your own. + +## What's in the box? + +This library supports the parsing and verification as well as the generation and signing of JWTs. Current supported signing algorithms are HMAC SHA, RSA, RSA-PSS, and ECDSA, though hooks are present for adding your own. + +## Examples + +See [the project documentation](https://godoc.org/github.com/dgrijalva/jwt-go) for examples of usage: + +* [Simple example of parsing and validating a token](https://godoc.org/github.com/dgrijalva/jwt-go#example-Parse--Hmac) +* [Simple example of building and signing a token](https://godoc.org/github.com/dgrijalva/jwt-go#example-New--Hmac) +* [Directory of Examples](https://godoc.org/github.com/dgrijalva/jwt-go#pkg-examples) + +## Extensions + +This library publishes all the necessary components for adding your own signing methods. Simply implement the `SigningMethod` interface and register a factory method using `RegisterSigningMethod`. + +Here's an example of an extension that integrates with the Google App Engine signing tools: https://github.com/someone1/gcp-jwt-go + +## Compliance + +This library was last reviewed to comply with [RTF 7519](http://www.rfc-editor.org/info/rfc7519) dated May 2015 with a few notable differences: + +* In order to protect against accidental use of [Unsecured JWTs](http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html#UnsecuredJWT), tokens using `alg=none` will only be accepted if the constant `jwt.UnsafeAllowNoneSignatureType` is provided as the key. + +## Project Status & Versioning + +This library is considered production ready. Feedback and feature requests are appreciated. The API should be considered stable. There should be very few backwards-incompatible changes outside of major version updates (and only with good reason). + +This project uses [Semantic Versioning 2.0.0](http://semver.org). Accepted pull requests will land on `master`. Periodically, versions will be tagged from `master`. You can find all the releases on [the project releases page](https://github.com/dgrijalva/jwt-go/releases). + +While we try to make it obvious when we make breaking changes, there isn't a great mechanism for pushing announcements out to users. You may want to use this alternative package include: `gopkg.in/dgrijalva/jwt-go.v3`. It will do the right thing WRT semantic versioning. + +**BREAKING CHANGES:*** +* Version 3.0.0 includes _a lot_ of changes from the 2.x line, including a few that break the API. We've tried to break as few things as possible, so there should just be a few type signature changes. A full list of breaking changes is available in `VERSION_HISTORY.md`. See `MIGRATION_GUIDE.md` for more information on updating your code. + +## Usage Tips + +### Signing vs Encryption + +A token is simply a JSON object that is signed by its author. this tells you exactly two things about the data: + +* The author of the token was in the possession of the signing secret +* The data has not been modified since it was signed + +It's important to know that JWT does not provide encryption, which means anyone who has access to the token can read its contents. If you need to protect (encrypt) the data, there is a companion spec, `JWE`, that provides this functionality. JWE is currently outside the scope of this library. + +### Choosing a Signing Method + +There are several signing methods available, and you should probably take the time to learn about the various options before choosing one. The principal design decision is most likely going to be symmetric vs asymmetric. + +Symmetric signing methods, such as HSA, use only a single secret. This is probably the simplest signing method to use since any `[]byte` can be used as a valid secret. They are also slightly computationally faster to use, though this rarely is enough to matter. Symmetric signing methods work the best when both producers and consumers of tokens are trusted, or even the same system. Since the same secret is used to both sign and validate tokens, you can't easily distribute the key for validation. + +Asymmetric signing methods, such as RSA, use different keys for signing and verifying tokens. This makes it possible to produce tokens with a private key, and allow any consumer to access the public key for verification. + +### Signing Methods and Key Types + +Each signing method expects a different object type for its signing keys. See the package documentation for details. Here are the most common ones: + +* The [HMAC signing method](https://godoc.org/github.com/dgrijalva/jwt-go#SigningMethodHMAC) (`HS256`,`HS384`,`HS512`) expect `[]byte` values for signing and validation +* The [RSA signing method](https://godoc.org/github.com/dgrijalva/jwt-go#SigningMethodRSA) (`RS256`,`RS384`,`RS512`) expect `*rsa.PrivateKey` for signing and `*rsa.PublicKey` for validation +* The [ECDSA signing method](https://godoc.org/github.com/dgrijalva/jwt-go#SigningMethodECDSA) (`ES256`,`ES384`,`ES512`) expect `*ecdsa.PrivateKey` for signing and `*ecdsa.PublicKey` for validation + +### JWT and OAuth + +It's worth mentioning that OAuth and JWT are not the same thing. A JWT token is simply a signed JSON object. It can be used anywhere such a thing is useful. There is some confusion, though, as JWT is the most common type of bearer token used in OAuth2 authentication. + +Without going too far down the rabbit hole, here's a description of the interaction of these technologies: + +* OAuth is a protocol for allowing an identity provider to be separate from the service a user is logging in to. For example, whenever you use Facebook to log into a different service (Yelp, Spotify, etc), you are using OAuth. +* OAuth defines several options for passing around authentication data. One popular method is called a "bearer token". A bearer token is simply a string that _should_ only be held by an authenticated user. Thus, simply presenting this token proves your identity. You can probably derive from here why a JWT might make a good bearer token. +* Because bearer tokens are used for authentication, it's important they're kept secret. This is why transactions that use bearer tokens typically happen over SSL. + +## More + +Documentation can be found [on godoc.org](http://godoc.org/github.com/dgrijalva/jwt-go). + +The command line utility included in this project (cmd/jwt) provides a straightforward example of token creation and parsing as well as a useful tool for debugging your own integration. You'll also find several implementation examples in the documentation. diff --git a/vendor/github.com/dgrijalva/jwt-go/VERSION_HISTORY.md b/vendor/github.com/dgrijalva/jwt-go/VERSION_HISTORY.md new file mode 100644 index 0000000000..6370298313 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/VERSION_HISTORY.md @@ -0,0 +1,118 @@ +## `jwt-go` Version History + +#### 3.2.0 + +* Added method `ParseUnverified` to allow users to split up the tasks of parsing and validation +* HMAC signing method returns `ErrInvalidKeyType` instead of `ErrInvalidKey` where appropriate +* Added options to `request.ParseFromRequest`, which allows for an arbitrary list of modifiers to parsing behavior. Initial set include `WithClaims` and `WithParser`. Existing usage of this function will continue to work as before. +* Deprecated `ParseFromRequestWithClaims` to simplify API in the future. + +#### 3.1.0 + +* Improvements to `jwt` command line tool +* Added `SkipClaimsValidation` option to `Parser` +* Documentation updates + +#### 3.0.0 + +* **Compatibility Breaking Changes**: See MIGRATION_GUIDE.md for tips on updating your code + * Dropped support for `[]byte` keys when using RSA signing methods. This convenience feature could contribute to security vulnerabilities involving mismatched key types with signing methods. + * `ParseFromRequest` has been moved to `request` subpackage and usage has changed + * The `Claims` property on `Token` is now type `Claims` instead of `map[string]interface{}`. The default value is type `MapClaims`, which is an alias to `map[string]interface{}`. This makes it possible to use a custom type when decoding claims. +* Other Additions and Changes + * Added `Claims` interface type to allow users to decode the claims into a custom type + * Added `ParseWithClaims`, which takes a third argument of type `Claims`. Use this function instead of `Parse` if you have a custom type you'd like to decode into. + * Dramatically improved the functionality and flexibility of `ParseFromRequest`, which is now in the `request` subpackage + * Added `ParseFromRequestWithClaims` which is the `FromRequest` equivalent of `ParseWithClaims` + * Added new interface type `Extractor`, which is used for extracting JWT strings from http requests. Used with `ParseFromRequest` and `ParseFromRequestWithClaims`. + * Added several new, more specific, validation errors to error type bitmask + * Moved examples from README to executable example files + * Signing method registry is now thread safe + * Added new property to `ValidationError`, which contains the raw error returned by calls made by parse/verify (such as those returned by keyfunc or json parser) + +#### 2.7.0 + +This will likely be the last backwards compatible release before 3.0.0, excluding essential bug fixes. + +* Added new option `-show` to the `jwt` command that will just output the decoded token without verifying +* Error text for expired tokens includes how long it's been expired +* Fixed incorrect error returned from `ParseRSAPublicKeyFromPEM` +* Documentation updates + +#### 2.6.0 + +* Exposed inner error within ValidationError +* Fixed validation errors when using UseJSONNumber flag +* Added several unit tests + +#### 2.5.0 + +* Added support for signing method none. You shouldn't use this. The API tries to make this clear. +* Updated/fixed some documentation +* Added more helpful error message when trying to parse tokens that begin with `BEARER ` + +#### 2.4.0 + +* Added new type, Parser, to allow for configuration of various parsing parameters + * You can now specify a list of valid signing methods. Anything outside this set will be rejected. + * You can now opt to use the `json.Number` type instead of `float64` when parsing token JSON +* Added support for [Travis CI](https://travis-ci.org/dgrijalva/jwt-go) +* Fixed some bugs with ECDSA parsing + +#### 2.3.0 + +* Added support for ECDSA signing methods +* Added support for RSA PSS signing methods (requires go v1.4) + +#### 2.2.0 + +* Gracefully handle a `nil` `Keyfunc` being passed to `Parse`. Result will now be the parsed token and an error, instead of a panic. + +#### 2.1.0 + +Backwards compatible API change that was missed in 2.0.0. + +* The `SignedString` method on `Token` now takes `interface{}` instead of `[]byte` + +#### 2.0.0 + +There were two major reasons for breaking backwards compatibility with this update. The first was a refactor required to expand the width of the RSA and HMAC-SHA signing implementations. There will likely be no required code changes to support this change. + +The second update, while unfortunately requiring a small change in integration, is required to open up this library to other signing methods. Not all keys used for all signing methods have a single standard on-disk representation. Requiring `[]byte` as the type for all keys proved too limiting. Additionally, this implementation allows for pre-parsed tokens to be reused, which might matter in an application that parses a high volume of tokens with a small set of keys. Backwards compatibilty has been maintained for passing `[]byte` to the RSA signing methods, but they will also accept `*rsa.PublicKey` and `*rsa.PrivateKey`. + +It is likely the only integration change required here will be to change `func(t *jwt.Token) ([]byte, error)` to `func(t *jwt.Token) (interface{}, error)` when calling `Parse`. + +* **Compatibility Breaking Changes** + * `SigningMethodHS256` is now `*SigningMethodHMAC` instead of `type struct` + * `SigningMethodRS256` is now `*SigningMethodRSA` instead of `type struct` + * `KeyFunc` now returns `interface{}` instead of `[]byte` + * `SigningMethod.Sign` now takes `interface{}` instead of `[]byte` for the key + * `SigningMethod.Verify` now takes `interface{}` instead of `[]byte` for the key +* Renamed type `SigningMethodHS256` to `SigningMethodHMAC`. Specific sizes are now just instances of this type. + * Added public package global `SigningMethodHS256` + * Added public package global `SigningMethodHS384` + * Added public package global `SigningMethodHS512` +* Renamed type `SigningMethodRS256` to `SigningMethodRSA`. Specific sizes are now just instances of this type. + * Added public package global `SigningMethodRS256` + * Added public package global `SigningMethodRS384` + * Added public package global `SigningMethodRS512` +* Moved sample private key for HMAC tests from an inline value to a file on disk. Value is unchanged. +* Refactored the RSA implementation to be easier to read +* Exposed helper methods `ParseRSAPrivateKeyFromPEM` and `ParseRSAPublicKeyFromPEM` + +#### 1.0.2 + +* Fixed bug in parsing public keys from certificates +* Added more tests around the parsing of keys for RS256 +* Code refactoring in RS256 implementation. No functional changes + +#### 1.0.1 + +* Fixed panic if RS256 signing method was passed an invalid key + +#### 1.0.0 + +* First versioned release +* API stabilized +* Supports creating, signing, parsing, and validating JWT tokens +* Supports RS256 and HS256 signing methods \ No newline at end of file diff --git a/vendor/github.com/dgrijalva/jwt-go/claims.go b/vendor/github.com/dgrijalva/jwt-go/claims.go new file mode 100644 index 0000000000..f0228f02e0 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/claims.go @@ -0,0 +1,134 @@ +package jwt + +import ( + "crypto/subtle" + "fmt" + "time" +) + +// For a type to be a Claims object, it must just have a Valid method that determines +// if the token is invalid for any supported reason +type Claims interface { + Valid() error +} + +// Structured version of Claims Section, as referenced at +// https://tools.ietf.org/html/rfc7519#section-4.1 +// See examples for how to use this with your own claim types +type StandardClaims struct { + Audience string `json:"aud,omitempty"` + ExpiresAt int64 `json:"exp,omitempty"` + Id string `json:"jti,omitempty"` + IssuedAt int64 `json:"iat,omitempty"` + Issuer string `json:"iss,omitempty"` + NotBefore int64 `json:"nbf,omitempty"` + Subject string `json:"sub,omitempty"` +} + +// Validates time based claims "exp, iat, nbf". +// There is no accounting for clock skew. +// As well, if any of the above claims are not in the token, it will still +// be considered a valid claim. +func (c StandardClaims) Valid() error { + vErr := new(ValidationError) + now := TimeFunc().Unix() + + // The claims below are optional, by default, so if they are set to the + // default value in Go, let's not fail the verification for them. + if c.VerifyExpiresAt(now, false) == false { + delta := time.Unix(now, 0).Sub(time.Unix(c.ExpiresAt, 0)) + vErr.Inner = fmt.Errorf("token is expired by %v", delta) + vErr.Errors |= ValidationErrorExpired + } + + if c.VerifyIssuedAt(now, false) == false { + vErr.Inner = fmt.Errorf("Token used before issued") + vErr.Errors |= ValidationErrorIssuedAt + } + + if c.VerifyNotBefore(now, false) == false { + vErr.Inner = fmt.Errorf("token is not valid yet") + vErr.Errors |= ValidationErrorNotValidYet + } + + if vErr.valid() { + return nil + } + + return vErr +} + +// Compares the aud claim against cmp. +// If required is false, this method will return true if the value matches or is unset +func (c *StandardClaims) VerifyAudience(cmp string, req bool) bool { + return verifyAud(c.Audience, cmp, req) +} + +// Compares the exp claim against cmp. +// If required is false, this method will return true if the value matches or is unset +func (c *StandardClaims) VerifyExpiresAt(cmp int64, req bool) bool { + return verifyExp(c.ExpiresAt, cmp, req) +} + +// Compares the iat claim against cmp. +// If required is false, this method will return true if the value matches or is unset +func (c *StandardClaims) VerifyIssuedAt(cmp int64, req bool) bool { + return verifyIat(c.IssuedAt, cmp, req) +} + +// Compares the iss claim against cmp. +// If required is false, this method will return true if the value matches or is unset +func (c *StandardClaims) VerifyIssuer(cmp string, req bool) bool { + return verifyIss(c.Issuer, cmp, req) +} + +// Compares the nbf claim against cmp. +// If required is false, this method will return true if the value matches or is unset +func (c *StandardClaims) VerifyNotBefore(cmp int64, req bool) bool { + return verifyNbf(c.NotBefore, cmp, req) +} + +// ----- helpers + +func verifyAud(aud string, cmp string, required bool) bool { + if aud == "" { + return !required + } + if subtle.ConstantTimeCompare([]byte(aud), []byte(cmp)) != 0 { + return true + } else { + return false + } +} + +func verifyExp(exp int64, now int64, required bool) bool { + if exp == 0 { + return !required + } + return now <= exp +} + +func verifyIat(iat int64, now int64, required bool) bool { + if iat == 0 { + return !required + } + return now >= iat +} + +func verifyIss(iss string, cmp string, required bool) bool { + if iss == "" { + return !required + } + if subtle.ConstantTimeCompare([]byte(iss), []byte(cmp)) != 0 { + return true + } else { + return false + } +} + +func verifyNbf(nbf int64, now int64, required bool) bool { + if nbf == 0 { + return !required + } + return now >= nbf +} diff --git a/vendor/github.com/dgrijalva/jwt-go/doc.go b/vendor/github.com/dgrijalva/jwt-go/doc.go new file mode 100644 index 0000000000..a86dc1a3b3 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/doc.go @@ -0,0 +1,4 @@ +// Package jwt is a Go implementation of JSON Web Tokens: http://self-issued.info/docs/draft-jones-json-web-token.html +// +// See README.md for more info. +package jwt diff --git a/vendor/github.com/dgrijalva/jwt-go/ecdsa.go b/vendor/github.com/dgrijalva/jwt-go/ecdsa.go new file mode 100644 index 0000000000..f977381240 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/ecdsa.go @@ -0,0 +1,148 @@ +package jwt + +import ( + "crypto" + "crypto/ecdsa" + "crypto/rand" + "errors" + "math/big" +) + +var ( + // Sadly this is missing from crypto/ecdsa compared to crypto/rsa + ErrECDSAVerification = errors.New("crypto/ecdsa: verification error") +) + +// Implements the ECDSA family of signing methods signing methods +// Expects *ecdsa.PrivateKey for signing and *ecdsa.PublicKey for verification +type SigningMethodECDSA struct { + Name string + Hash crypto.Hash + KeySize int + CurveBits int +} + +// Specific instances for EC256 and company +var ( + SigningMethodES256 *SigningMethodECDSA + SigningMethodES384 *SigningMethodECDSA + SigningMethodES512 *SigningMethodECDSA +) + +func init() { + // ES256 + SigningMethodES256 = &SigningMethodECDSA{"ES256", crypto.SHA256, 32, 256} + RegisterSigningMethod(SigningMethodES256.Alg(), func() SigningMethod { + return SigningMethodES256 + }) + + // ES384 + SigningMethodES384 = &SigningMethodECDSA{"ES384", crypto.SHA384, 48, 384} + RegisterSigningMethod(SigningMethodES384.Alg(), func() SigningMethod { + return SigningMethodES384 + }) + + // ES512 + SigningMethodES512 = &SigningMethodECDSA{"ES512", crypto.SHA512, 66, 521} + RegisterSigningMethod(SigningMethodES512.Alg(), func() SigningMethod { + return SigningMethodES512 + }) +} + +func (m *SigningMethodECDSA) Alg() string { + return m.Name +} + +// Implements the Verify method from SigningMethod +// For this verify method, key must be an ecdsa.PublicKey struct +func (m *SigningMethodECDSA) Verify(signingString, signature string, key interface{}) error { + var err error + + // Decode the signature + var sig []byte + if sig, err = DecodeSegment(signature); err != nil { + return err + } + + // Get the key + var ecdsaKey *ecdsa.PublicKey + switch k := key.(type) { + case *ecdsa.PublicKey: + ecdsaKey = k + default: + return ErrInvalidKeyType + } + + if len(sig) != 2*m.KeySize { + return ErrECDSAVerification + } + + r := big.NewInt(0).SetBytes(sig[:m.KeySize]) + s := big.NewInt(0).SetBytes(sig[m.KeySize:]) + + // Create hasher + if !m.Hash.Available() { + return ErrHashUnavailable + } + hasher := m.Hash.New() + hasher.Write([]byte(signingString)) + + // Verify the signature + if verifystatus := ecdsa.Verify(ecdsaKey, hasher.Sum(nil), r, s); verifystatus == true { + return nil + } else { + return ErrECDSAVerification + } +} + +// Implements the Sign method from SigningMethod +// For this signing method, key must be an ecdsa.PrivateKey struct +func (m *SigningMethodECDSA) Sign(signingString string, key interface{}) (string, error) { + // Get the key + var ecdsaKey *ecdsa.PrivateKey + switch k := key.(type) { + case *ecdsa.PrivateKey: + ecdsaKey = k + default: + return "", ErrInvalidKeyType + } + + // Create the hasher + if !m.Hash.Available() { + return "", ErrHashUnavailable + } + + hasher := m.Hash.New() + hasher.Write([]byte(signingString)) + + // Sign the string and return r, s + if r, s, err := ecdsa.Sign(rand.Reader, ecdsaKey, hasher.Sum(nil)); err == nil { + curveBits := ecdsaKey.Curve.Params().BitSize + + if m.CurveBits != curveBits { + return "", ErrInvalidKey + } + + keyBytes := curveBits / 8 + if curveBits%8 > 0 { + keyBytes += 1 + } + + // We serialize the outpus (r and s) into big-endian byte arrays and pad + // them with zeros on the left to make sure the sizes work out. Both arrays + // must be keyBytes long, and the output must be 2*keyBytes long. + rBytes := r.Bytes() + rBytesPadded := make([]byte, keyBytes) + copy(rBytesPadded[keyBytes-len(rBytes):], rBytes) + + sBytes := s.Bytes() + sBytesPadded := make([]byte, keyBytes) + copy(sBytesPadded[keyBytes-len(sBytes):], sBytes) + + out := append(rBytesPadded, sBytesPadded...) + + return EncodeSegment(out), nil + } else { + return "", err + } +} diff --git a/vendor/github.com/dgrijalva/jwt-go/ecdsa_utils.go b/vendor/github.com/dgrijalva/jwt-go/ecdsa_utils.go new file mode 100644 index 0000000000..d19624b726 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/ecdsa_utils.go @@ -0,0 +1,67 @@ +package jwt + +import ( + "crypto/ecdsa" + "crypto/x509" + "encoding/pem" + "errors" +) + +var ( + ErrNotECPublicKey = errors.New("Key is not a valid ECDSA public key") + ErrNotECPrivateKey = errors.New("Key is not a valid ECDSA private key") +) + +// Parse PEM encoded Elliptic Curve Private Key Structure +func ParseECPrivateKeyFromPEM(key []byte) (*ecdsa.PrivateKey, error) { + var err error + + // Parse PEM block + var block *pem.Block + if block, _ = pem.Decode(key); block == nil { + return nil, ErrKeyMustBePEMEncoded + } + + // Parse the key + var parsedKey interface{} + if parsedKey, err = x509.ParseECPrivateKey(block.Bytes); err != nil { + return nil, err + } + + var pkey *ecdsa.PrivateKey + var ok bool + if pkey, ok = parsedKey.(*ecdsa.PrivateKey); !ok { + return nil, ErrNotECPrivateKey + } + + return pkey, nil +} + +// Parse PEM encoded PKCS1 or PKCS8 public key +func ParseECPublicKeyFromPEM(key []byte) (*ecdsa.PublicKey, error) { + var err error + + // Parse PEM block + var block *pem.Block + if block, _ = pem.Decode(key); block == nil { + return nil, ErrKeyMustBePEMEncoded + } + + // Parse the key + var parsedKey interface{} + if parsedKey, err = x509.ParsePKIXPublicKey(block.Bytes); err != nil { + if cert, err := x509.ParseCertificate(block.Bytes); err == nil { + parsedKey = cert.PublicKey + } else { + return nil, err + } + } + + var pkey *ecdsa.PublicKey + var ok bool + if pkey, ok = parsedKey.(*ecdsa.PublicKey); !ok { + return nil, ErrNotECPublicKey + } + + return pkey, nil +} diff --git a/vendor/github.com/dgrijalva/jwt-go/errors.go b/vendor/github.com/dgrijalva/jwt-go/errors.go new file mode 100644 index 0000000000..1c93024aad --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/errors.go @@ -0,0 +1,59 @@ +package jwt + +import ( + "errors" +) + +// Error constants +var ( + ErrInvalidKey = errors.New("key is invalid") + ErrInvalidKeyType = errors.New("key is of invalid type") + ErrHashUnavailable = errors.New("the requested hash function is unavailable") +) + +// The errors that might occur when parsing and validating a token +const ( + ValidationErrorMalformed uint32 = 1 << iota // Token is malformed + ValidationErrorUnverifiable // Token could not be verified because of signing problems + ValidationErrorSignatureInvalid // Signature validation failed + + // Standard Claim validation errors + ValidationErrorAudience // AUD validation failed + ValidationErrorExpired // EXP validation failed + ValidationErrorIssuedAt // IAT validation failed + ValidationErrorIssuer // ISS validation failed + ValidationErrorNotValidYet // NBF validation failed + ValidationErrorId // JTI validation failed + ValidationErrorClaimsInvalid // Generic claims validation error +) + +// Helper for constructing a ValidationError with a string error message +func NewValidationError(errorText string, errorFlags uint32) *ValidationError { + return &ValidationError{ + text: errorText, + Errors: errorFlags, + } +} + +// The error from Parse if token is not valid +type ValidationError struct { + Inner error // stores the error returned by external dependencies, i.e.: KeyFunc + Errors uint32 // bitfield. see ValidationError... constants + text string // errors that do not have a valid error just have text +} + +// Validation error is an error type +func (e ValidationError) Error() string { + if e.Inner != nil { + return e.Inner.Error() + } else if e.text != "" { + return e.text + } else { + return "token is invalid" + } +} + +// No errors +func (e *ValidationError) valid() bool { + return e.Errors == 0 +} diff --git a/vendor/github.com/dgrijalva/jwt-go/hmac.go b/vendor/github.com/dgrijalva/jwt-go/hmac.go new file mode 100644 index 0000000000..addbe5d401 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/hmac.go @@ -0,0 +1,95 @@ +package jwt + +import ( + "crypto" + "crypto/hmac" + "errors" +) + +// Implements the HMAC-SHA family of signing methods signing methods +// Expects key type of []byte for both signing and validation +type SigningMethodHMAC struct { + Name string + Hash crypto.Hash +} + +// Specific instances for HS256 and company +var ( + SigningMethodHS256 *SigningMethodHMAC + SigningMethodHS384 *SigningMethodHMAC + SigningMethodHS512 *SigningMethodHMAC + ErrSignatureInvalid = errors.New("signature is invalid") +) + +func init() { + // HS256 + SigningMethodHS256 = &SigningMethodHMAC{"HS256", crypto.SHA256} + RegisterSigningMethod(SigningMethodHS256.Alg(), func() SigningMethod { + return SigningMethodHS256 + }) + + // HS384 + SigningMethodHS384 = &SigningMethodHMAC{"HS384", crypto.SHA384} + RegisterSigningMethod(SigningMethodHS384.Alg(), func() SigningMethod { + return SigningMethodHS384 + }) + + // HS512 + SigningMethodHS512 = &SigningMethodHMAC{"HS512", crypto.SHA512} + RegisterSigningMethod(SigningMethodHS512.Alg(), func() SigningMethod { + return SigningMethodHS512 + }) +} + +func (m *SigningMethodHMAC) Alg() string { + return m.Name +} + +// Verify the signature of HSXXX tokens. Returns nil if the signature is valid. +func (m *SigningMethodHMAC) Verify(signingString, signature string, key interface{}) error { + // Verify the key is the right type + keyBytes, ok := key.([]byte) + if !ok { + return ErrInvalidKeyType + } + + // Decode signature, for comparison + sig, err := DecodeSegment(signature) + if err != nil { + return err + } + + // Can we use the specified hashing method? + if !m.Hash.Available() { + return ErrHashUnavailable + } + + // This signing method is symmetric, so we validate the signature + // by reproducing the signature from the signing string and key, then + // comparing that against the provided signature. + hasher := hmac.New(m.Hash.New, keyBytes) + hasher.Write([]byte(signingString)) + if !hmac.Equal(sig, hasher.Sum(nil)) { + return ErrSignatureInvalid + } + + // No validation errors. Signature is good. + return nil +} + +// Implements the Sign method from SigningMethod for this signing method. +// Key must be []byte +func (m *SigningMethodHMAC) Sign(signingString string, key interface{}) (string, error) { + if keyBytes, ok := key.([]byte); ok { + if !m.Hash.Available() { + return "", ErrHashUnavailable + } + + hasher := hmac.New(m.Hash.New, keyBytes) + hasher.Write([]byte(signingString)) + + return EncodeSegment(hasher.Sum(nil)), nil + } + + return "", ErrInvalidKeyType +} diff --git a/vendor/github.com/dgrijalva/jwt-go/map_claims.go b/vendor/github.com/dgrijalva/jwt-go/map_claims.go new file mode 100644 index 0000000000..291213c460 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/map_claims.go @@ -0,0 +1,94 @@ +package jwt + +import ( + "encoding/json" + "errors" + // "fmt" +) + +// Claims type that uses the map[string]interface{} for JSON decoding +// This is the default claims type if you don't supply one +type MapClaims map[string]interface{} + +// Compares the aud claim against cmp. +// If required is false, this method will return true if the value matches or is unset +func (m MapClaims) VerifyAudience(cmp string, req bool) bool { + aud, _ := m["aud"].(string) + return verifyAud(aud, cmp, req) +} + +// Compares the exp claim against cmp. +// If required is false, this method will return true if the value matches or is unset +func (m MapClaims) VerifyExpiresAt(cmp int64, req bool) bool { + switch exp := m["exp"].(type) { + case float64: + return verifyExp(int64(exp), cmp, req) + case json.Number: + v, _ := exp.Int64() + return verifyExp(v, cmp, req) + } + return req == false +} + +// Compares the iat claim against cmp. +// If required is false, this method will return true if the value matches or is unset +func (m MapClaims) VerifyIssuedAt(cmp int64, req bool) bool { + switch iat := m["iat"].(type) { + case float64: + return verifyIat(int64(iat), cmp, req) + case json.Number: + v, _ := iat.Int64() + return verifyIat(v, cmp, req) + } + return req == false +} + +// Compares the iss claim against cmp. +// If required is false, this method will return true if the value matches or is unset +func (m MapClaims) VerifyIssuer(cmp string, req bool) bool { + iss, _ := m["iss"].(string) + return verifyIss(iss, cmp, req) +} + +// Compares the nbf claim against cmp. +// If required is false, this method will return true if the value matches or is unset +func (m MapClaims) VerifyNotBefore(cmp int64, req bool) bool { + switch nbf := m["nbf"].(type) { + case float64: + return verifyNbf(int64(nbf), cmp, req) + case json.Number: + v, _ := nbf.Int64() + return verifyNbf(v, cmp, req) + } + return req == false +} + +// Validates time based claims "exp, iat, nbf". +// There is no accounting for clock skew. +// As well, if any of the above claims are not in the token, it will still +// be considered a valid claim. +func (m MapClaims) Valid() error { + vErr := new(ValidationError) + now := TimeFunc().Unix() + + if m.VerifyExpiresAt(now, false) == false { + vErr.Inner = errors.New("Token is expired") + vErr.Errors |= ValidationErrorExpired + } + + if m.VerifyIssuedAt(now, false) == false { + vErr.Inner = errors.New("Token used before issued") + vErr.Errors |= ValidationErrorIssuedAt + } + + if m.VerifyNotBefore(now, false) == false { + vErr.Inner = errors.New("Token is not valid yet") + vErr.Errors |= ValidationErrorNotValidYet + } + + if vErr.valid() { + return nil + } + + return vErr +} diff --git a/vendor/github.com/dgrijalva/jwt-go/none.go b/vendor/github.com/dgrijalva/jwt-go/none.go new file mode 100644 index 0000000000..f04d189d06 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/none.go @@ -0,0 +1,52 @@ +package jwt + +// Implements the none signing method. This is required by the spec +// but you probably should never use it. +var SigningMethodNone *signingMethodNone + +const UnsafeAllowNoneSignatureType unsafeNoneMagicConstant = "none signing method allowed" + +var NoneSignatureTypeDisallowedError error + +type signingMethodNone struct{} +type unsafeNoneMagicConstant string + +func init() { + SigningMethodNone = &signingMethodNone{} + NoneSignatureTypeDisallowedError = NewValidationError("'none' signature type is not allowed", ValidationErrorSignatureInvalid) + + RegisterSigningMethod(SigningMethodNone.Alg(), func() SigningMethod { + return SigningMethodNone + }) +} + +func (m *signingMethodNone) Alg() string { + return "none" +} + +// Only allow 'none' alg type if UnsafeAllowNoneSignatureType is specified as the key +func (m *signingMethodNone) Verify(signingString, signature string, key interface{}) (err error) { + // Key must be UnsafeAllowNoneSignatureType to prevent accidentally + // accepting 'none' signing method + if _, ok := key.(unsafeNoneMagicConstant); !ok { + return NoneSignatureTypeDisallowedError + } + // If signing method is none, signature must be an empty string + if signature != "" { + return NewValidationError( + "'none' signing method with non-empty signature", + ValidationErrorSignatureInvalid, + ) + } + + // Accept 'none' signing method. + return nil +} + +// Only allow 'none' signing if UnsafeAllowNoneSignatureType is specified as the key +func (m *signingMethodNone) Sign(signingString string, key interface{}) (string, error) { + if _, ok := key.(unsafeNoneMagicConstant); ok { + return "", nil + } + return "", NoneSignatureTypeDisallowedError +} diff --git a/vendor/github.com/dgrijalva/jwt-go/parser.go b/vendor/github.com/dgrijalva/jwt-go/parser.go new file mode 100644 index 0000000000..d6901d9adb --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/parser.go @@ -0,0 +1,148 @@ +package jwt + +import ( + "bytes" + "encoding/json" + "fmt" + "strings" +) + +type Parser struct { + ValidMethods []string // If populated, only these methods will be considered valid + UseJSONNumber bool // Use JSON Number format in JSON decoder + SkipClaimsValidation bool // Skip claims validation during token parsing +} + +// Parse, validate, and return a token. +// keyFunc will receive the parsed token and should return the key for validating. +// If everything is kosher, err will be nil +func (p *Parser) Parse(tokenString string, keyFunc Keyfunc) (*Token, error) { + return p.ParseWithClaims(tokenString, MapClaims{}, keyFunc) +} + +func (p *Parser) ParseWithClaims(tokenString string, claims Claims, keyFunc Keyfunc) (*Token, error) { + token, parts, err := p.ParseUnverified(tokenString, claims) + if err != nil { + return token, err + } + + // Verify signing method is in the required set + if p.ValidMethods != nil { + var signingMethodValid = false + var alg = token.Method.Alg() + for _, m := range p.ValidMethods { + if m == alg { + signingMethodValid = true + break + } + } + if !signingMethodValid { + // signing method is not in the listed set + return token, NewValidationError(fmt.Sprintf("signing method %v is invalid", alg), ValidationErrorSignatureInvalid) + } + } + + // Lookup key + var key interface{} + if keyFunc == nil { + // keyFunc was not provided. short circuiting validation + return token, NewValidationError("no Keyfunc was provided.", ValidationErrorUnverifiable) + } + if key, err = keyFunc(token); err != nil { + // keyFunc returned an error + if ve, ok := err.(*ValidationError); ok { + return token, ve + } + return token, &ValidationError{Inner: err, Errors: ValidationErrorUnverifiable} + } + + vErr := &ValidationError{} + + // Validate Claims + if !p.SkipClaimsValidation { + if err := token.Claims.Valid(); err != nil { + + // If the Claims Valid returned an error, check if it is a validation error, + // If it was another error type, create a ValidationError with a generic ClaimsInvalid flag set + if e, ok := err.(*ValidationError); !ok { + vErr = &ValidationError{Inner: err, Errors: ValidationErrorClaimsInvalid} + } else { + vErr = e + } + } + } + + // Perform validation + token.Signature = parts[2] + if err = token.Method.Verify(strings.Join(parts[0:2], "."), token.Signature, key); err != nil { + vErr.Inner = err + vErr.Errors |= ValidationErrorSignatureInvalid + } + + if vErr.valid() { + token.Valid = true + return token, nil + } + + return token, vErr +} + +// WARNING: Don't use this method unless you know what you're doing +// +// This method parses the token but doesn't validate the signature. It's only +// ever useful in cases where you know the signature is valid (because it has +// been checked previously in the stack) and you want to extract values from +// it. +func (p *Parser) ParseUnverified(tokenString string, claims Claims) (token *Token, parts []string, err error) { + parts = strings.Split(tokenString, ".") + if len(parts) != 3 { + return nil, parts, NewValidationError("token contains an invalid number of segments", ValidationErrorMalformed) + } + + token = &Token{Raw: tokenString} + + // parse Header + var headerBytes []byte + if headerBytes, err = DecodeSegment(parts[0]); err != nil { + if strings.HasPrefix(strings.ToLower(tokenString), "bearer ") { + return token, parts, NewValidationError("tokenstring should not contain 'bearer '", ValidationErrorMalformed) + } + return token, parts, &ValidationError{Inner: err, Errors: ValidationErrorMalformed} + } + if err = json.Unmarshal(headerBytes, &token.Header); err != nil { + return token, parts, &ValidationError{Inner: err, Errors: ValidationErrorMalformed} + } + + // parse Claims + var claimBytes []byte + token.Claims = claims + + if claimBytes, err = DecodeSegment(parts[1]); err != nil { + return token, parts, &ValidationError{Inner: err, Errors: ValidationErrorMalformed} + } + dec := json.NewDecoder(bytes.NewBuffer(claimBytes)) + if p.UseJSONNumber { + dec.UseNumber() + } + // JSON Decode. Special case for map type to avoid weird pointer behavior + if c, ok := token.Claims.(MapClaims); ok { + err = dec.Decode(&c) + } else { + err = dec.Decode(&claims) + } + // Handle decode error + if err != nil { + return token, parts, &ValidationError{Inner: err, Errors: ValidationErrorMalformed} + } + + // Lookup signature method + if method, ok := token.Header["alg"].(string); ok { + if token.Method = GetSigningMethod(method); token.Method == nil { + return token, parts, NewValidationError("signing method (alg) is unavailable.", ValidationErrorUnverifiable) + } + } else { + return token, parts, NewValidationError("signing method (alg) is unspecified.", ValidationErrorUnverifiable) + } + + return token, parts, nil +} diff --git a/vendor/github.com/dgrijalva/jwt-go/rsa.go b/vendor/github.com/dgrijalva/jwt-go/rsa.go new file mode 100644 index 0000000000..e4caf1ca4a --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/rsa.go @@ -0,0 +1,101 @@ +package jwt + +import ( + "crypto" + "crypto/rand" + "crypto/rsa" +) + +// Implements the RSA family of signing methods signing methods +// Expects *rsa.PrivateKey for signing and *rsa.PublicKey for validation +type SigningMethodRSA struct { + Name string + Hash crypto.Hash +} + +// Specific instances for RS256 and company +var ( + SigningMethodRS256 *SigningMethodRSA + SigningMethodRS384 *SigningMethodRSA + SigningMethodRS512 *SigningMethodRSA +) + +func init() { + // RS256 + SigningMethodRS256 = &SigningMethodRSA{"RS256", crypto.SHA256} + RegisterSigningMethod(SigningMethodRS256.Alg(), func() SigningMethod { + return SigningMethodRS256 + }) + + // RS384 + SigningMethodRS384 = &SigningMethodRSA{"RS384", crypto.SHA384} + RegisterSigningMethod(SigningMethodRS384.Alg(), func() SigningMethod { + return SigningMethodRS384 + }) + + // RS512 + SigningMethodRS512 = &SigningMethodRSA{"RS512", crypto.SHA512} + RegisterSigningMethod(SigningMethodRS512.Alg(), func() SigningMethod { + return SigningMethodRS512 + }) +} + +func (m *SigningMethodRSA) Alg() string { + return m.Name +} + +// Implements the Verify method from SigningMethod +// For this signing method, must be an *rsa.PublicKey structure. +func (m *SigningMethodRSA) Verify(signingString, signature string, key interface{}) error { + var err error + + // Decode the signature + var sig []byte + if sig, err = DecodeSegment(signature); err != nil { + return err + } + + var rsaKey *rsa.PublicKey + var ok bool + + if rsaKey, ok = key.(*rsa.PublicKey); !ok { + return ErrInvalidKeyType + } + + // Create hasher + if !m.Hash.Available() { + return ErrHashUnavailable + } + hasher := m.Hash.New() + hasher.Write([]byte(signingString)) + + // Verify the signature + return rsa.VerifyPKCS1v15(rsaKey, m.Hash, hasher.Sum(nil), sig) +} + +// Implements the Sign method from SigningMethod +// For this signing method, must be an *rsa.PrivateKey structure. +func (m *SigningMethodRSA) Sign(signingString string, key interface{}) (string, error) { + var rsaKey *rsa.PrivateKey + var ok bool + + // Validate type of key + if rsaKey, ok = key.(*rsa.PrivateKey); !ok { + return "", ErrInvalidKey + } + + // Create the hasher + if !m.Hash.Available() { + return "", ErrHashUnavailable + } + + hasher := m.Hash.New() + hasher.Write([]byte(signingString)) + + // Sign the string and return the encoded bytes + if sigBytes, err := rsa.SignPKCS1v15(rand.Reader, rsaKey, m.Hash, hasher.Sum(nil)); err == nil { + return EncodeSegment(sigBytes), nil + } else { + return "", err + } +} diff --git a/vendor/github.com/dgrijalva/jwt-go/rsa_pss.go b/vendor/github.com/dgrijalva/jwt-go/rsa_pss.go new file mode 100644 index 0000000000..10ee9db8a4 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/rsa_pss.go @@ -0,0 +1,126 @@ +// +build go1.4 + +package jwt + +import ( + "crypto" + "crypto/rand" + "crypto/rsa" +) + +// Implements the RSAPSS family of signing methods signing methods +type SigningMethodRSAPSS struct { + *SigningMethodRSA + Options *rsa.PSSOptions +} + +// Specific instances for RS/PS and company +var ( + SigningMethodPS256 *SigningMethodRSAPSS + SigningMethodPS384 *SigningMethodRSAPSS + SigningMethodPS512 *SigningMethodRSAPSS +) + +func init() { + // PS256 + SigningMethodPS256 = &SigningMethodRSAPSS{ + &SigningMethodRSA{ + Name: "PS256", + Hash: crypto.SHA256, + }, + &rsa.PSSOptions{ + SaltLength: rsa.PSSSaltLengthAuto, + Hash: crypto.SHA256, + }, + } + RegisterSigningMethod(SigningMethodPS256.Alg(), func() SigningMethod { + return SigningMethodPS256 + }) + + // PS384 + SigningMethodPS384 = &SigningMethodRSAPSS{ + &SigningMethodRSA{ + Name: "PS384", + Hash: crypto.SHA384, + }, + &rsa.PSSOptions{ + SaltLength: rsa.PSSSaltLengthAuto, + Hash: crypto.SHA384, + }, + } + RegisterSigningMethod(SigningMethodPS384.Alg(), func() SigningMethod { + return SigningMethodPS384 + }) + + // PS512 + SigningMethodPS512 = &SigningMethodRSAPSS{ + &SigningMethodRSA{ + Name: "PS512", + Hash: crypto.SHA512, + }, + &rsa.PSSOptions{ + SaltLength: rsa.PSSSaltLengthAuto, + Hash: crypto.SHA512, + }, + } + RegisterSigningMethod(SigningMethodPS512.Alg(), func() SigningMethod { + return SigningMethodPS512 + }) +} + +// Implements the Verify method from SigningMethod +// For this verify method, key must be an rsa.PublicKey struct +func (m *SigningMethodRSAPSS) Verify(signingString, signature string, key interface{}) error { + var err error + + // Decode the signature + var sig []byte + if sig, err = DecodeSegment(signature); err != nil { + return err + } + + var rsaKey *rsa.PublicKey + switch k := key.(type) { + case *rsa.PublicKey: + rsaKey = k + default: + return ErrInvalidKey + } + + // Create hasher + if !m.Hash.Available() { + return ErrHashUnavailable + } + hasher := m.Hash.New() + hasher.Write([]byte(signingString)) + + return rsa.VerifyPSS(rsaKey, m.Hash, hasher.Sum(nil), sig, m.Options) +} + +// Implements the Sign method from SigningMethod +// For this signing method, key must be an rsa.PrivateKey struct +func (m *SigningMethodRSAPSS) Sign(signingString string, key interface{}) (string, error) { + var rsaKey *rsa.PrivateKey + + switch k := key.(type) { + case *rsa.PrivateKey: + rsaKey = k + default: + return "", ErrInvalidKeyType + } + + // Create the hasher + if !m.Hash.Available() { + return "", ErrHashUnavailable + } + + hasher := m.Hash.New() + hasher.Write([]byte(signingString)) + + // Sign the string and return the encoded bytes + if sigBytes, err := rsa.SignPSS(rand.Reader, rsaKey, m.Hash, hasher.Sum(nil), m.Options); err == nil { + return EncodeSegment(sigBytes), nil + } else { + return "", err + } +} diff --git a/vendor/github.com/dgrijalva/jwt-go/rsa_utils.go b/vendor/github.com/dgrijalva/jwt-go/rsa_utils.go new file mode 100644 index 0000000000..a5ababf956 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/rsa_utils.go @@ -0,0 +1,101 @@ +package jwt + +import ( + "crypto/rsa" + "crypto/x509" + "encoding/pem" + "errors" +) + +var ( + ErrKeyMustBePEMEncoded = errors.New("Invalid Key: Key must be PEM encoded PKCS1 or PKCS8 private key") + ErrNotRSAPrivateKey = errors.New("Key is not a valid RSA private key") + ErrNotRSAPublicKey = errors.New("Key is not a valid RSA public key") +) + +// Parse PEM encoded PKCS1 or PKCS8 private key +func ParseRSAPrivateKeyFromPEM(key []byte) (*rsa.PrivateKey, error) { + var err error + + // Parse PEM block + var block *pem.Block + if block, _ = pem.Decode(key); block == nil { + return nil, ErrKeyMustBePEMEncoded + } + + var parsedKey interface{} + if parsedKey, err = x509.ParsePKCS1PrivateKey(block.Bytes); err != nil { + if parsedKey, err = x509.ParsePKCS8PrivateKey(block.Bytes); err != nil { + return nil, err + } + } + + var pkey *rsa.PrivateKey + var ok bool + if pkey, ok = parsedKey.(*rsa.PrivateKey); !ok { + return nil, ErrNotRSAPrivateKey + } + + return pkey, nil +} + +// Parse PEM encoded PKCS1 or PKCS8 private key protected with password +func ParseRSAPrivateKeyFromPEMWithPassword(key []byte, password string) (*rsa.PrivateKey, error) { + var err error + + // Parse PEM block + var block *pem.Block + if block, _ = pem.Decode(key); block == nil { + return nil, ErrKeyMustBePEMEncoded + } + + var parsedKey interface{} + + var blockDecrypted []byte + if blockDecrypted, err = x509.DecryptPEMBlock(block, []byte(password)); err != nil { + return nil, err + } + + if parsedKey, err = x509.ParsePKCS1PrivateKey(blockDecrypted); err != nil { + if parsedKey, err = x509.ParsePKCS8PrivateKey(blockDecrypted); err != nil { + return nil, err + } + } + + var pkey *rsa.PrivateKey + var ok bool + if pkey, ok = parsedKey.(*rsa.PrivateKey); !ok { + return nil, ErrNotRSAPrivateKey + } + + return pkey, nil +} + +// Parse PEM encoded PKCS1 or PKCS8 public key +func ParseRSAPublicKeyFromPEM(key []byte) (*rsa.PublicKey, error) { + var err error + + // Parse PEM block + var block *pem.Block + if block, _ = pem.Decode(key); block == nil { + return nil, ErrKeyMustBePEMEncoded + } + + // Parse the key + var parsedKey interface{} + if parsedKey, err = x509.ParsePKIXPublicKey(block.Bytes); err != nil { + if cert, err := x509.ParseCertificate(block.Bytes); err == nil { + parsedKey = cert.PublicKey + } else { + return nil, err + } + } + + var pkey *rsa.PublicKey + var ok bool + if pkey, ok = parsedKey.(*rsa.PublicKey); !ok { + return nil, ErrNotRSAPublicKey + } + + return pkey, nil +} diff --git a/vendor/github.com/dgrijalva/jwt-go/signing_method.go b/vendor/github.com/dgrijalva/jwt-go/signing_method.go new file mode 100644 index 0000000000..ed1f212b21 --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/signing_method.go @@ -0,0 +1,35 @@ +package jwt + +import ( + "sync" +) + +var signingMethods = map[string]func() SigningMethod{} +var signingMethodLock = new(sync.RWMutex) + +// Implement SigningMethod to add new methods for signing or verifying tokens. +type SigningMethod interface { + Verify(signingString, signature string, key interface{}) error // Returns nil if signature is valid + Sign(signingString string, key interface{}) (string, error) // Returns encoded signature or error + Alg() string // returns the alg identifier for this method (example: 'HS256') +} + +// Register the "alg" name and a factory function for signing method. +// This is typically done during init() in the method's implementation +func RegisterSigningMethod(alg string, f func() SigningMethod) { + signingMethodLock.Lock() + defer signingMethodLock.Unlock() + + signingMethods[alg] = f +} + +// Get a signing method from an "alg" string +func GetSigningMethod(alg string) (method SigningMethod) { + signingMethodLock.RLock() + defer signingMethodLock.RUnlock() + + if methodF, ok := signingMethods[alg]; ok { + method = methodF() + } + return +} diff --git a/vendor/github.com/dgrijalva/jwt-go/token.go b/vendor/github.com/dgrijalva/jwt-go/token.go new file mode 100644 index 0000000000..d637e0867c --- /dev/null +++ b/vendor/github.com/dgrijalva/jwt-go/token.go @@ -0,0 +1,108 @@ +package jwt + +import ( + "encoding/base64" + "encoding/json" + "strings" + "time" +) + +// TimeFunc provides the current time when parsing token to validate "exp" claim (expiration time). +// You can override it to use another time value. This is useful for testing or if your +// server uses a different time zone than your tokens. +var TimeFunc = time.Now + +// Parse methods use this callback function to supply +// the key for verification. The function receives the parsed, +// but unverified Token. This allows you to use properties in the +// Header of the token (such as `kid`) to identify which key to use. +type Keyfunc func(*Token) (interface{}, error) + +// A JWT Token. Different fields will be used depending on whether you're +// creating or parsing/verifying a token. +type Token struct { + Raw string // The raw token. Populated when you Parse a token + Method SigningMethod // The signing method used or to be used + Header map[string]interface{} // The first segment of the token + Claims Claims // The second segment of the token + Signature string // The third segment of the token. Populated when you Parse a token + Valid bool // Is the token valid? Populated when you Parse/Verify a token +} + +// Create a new Token. Takes a signing method +func New(method SigningMethod) *Token { + return NewWithClaims(method, MapClaims{}) +} + +func NewWithClaims(method SigningMethod, claims Claims) *Token { + return &Token{ + Header: map[string]interface{}{ + "typ": "JWT", + "alg": method.Alg(), + }, + Claims: claims, + Method: method, + } +} + +// Get the complete, signed token +func (t *Token) SignedString(key interface{}) (string, error) { + var sig, sstr string + var err error + if sstr, err = t.SigningString(); err != nil { + return "", err + } + if sig, err = t.Method.Sign(sstr, key); err != nil { + return "", err + } + return strings.Join([]string{sstr, sig}, "."), nil +} + +// Generate the signing string. This is the +// most expensive part of the whole deal. Unless you +// need this for something special, just go straight for +// the SignedString. +func (t *Token) SigningString() (string, error) { + var err error + parts := make([]string, 2) + for i, _ := range parts { + var jsonValue []byte + if i == 0 { + if jsonValue, err = json.Marshal(t.Header); err != nil { + return "", err + } + } else { + if jsonValue, err = json.Marshal(t.Claims); err != nil { + return "", err + } + } + + parts[i] = EncodeSegment(jsonValue) + } + return strings.Join(parts, "."), nil +} + +// Parse, validate, and return a token. +// keyFunc will receive the parsed token and should return the key for validating. +// If everything is kosher, err will be nil +func Parse(tokenString string, keyFunc Keyfunc) (*Token, error) { + return new(Parser).Parse(tokenString, keyFunc) +} + +func ParseWithClaims(tokenString string, claims Claims, keyFunc Keyfunc) (*Token, error) { + return new(Parser).ParseWithClaims(tokenString, claims, keyFunc) +} + +// Encode JWT specific base64url encoding with padding stripped +func EncodeSegment(seg []byte) string { + return strings.TrimRight(base64.URLEncoding.EncodeToString(seg), "=") +} + +// Decode JWT specific base64url encoding with padding stripped +func DecodeSegment(seg string) ([]byte, error) { + if l := len(seg) % 4; l > 0 { + seg += strings.Repeat("=", 4-l) + } + + return base64.URLEncoding.DecodeString(seg) +} diff --git a/vendor/github.com/gobuffalo/flect/.gitignore b/vendor/github.com/gobuffalo/flect/.gitignore new file mode 100644 index 0000000000..3689718594 --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/.gitignore @@ -0,0 +1,29 @@ +*.log +.DS_Store +doc +tmp +pkg +*.gem +*.pid +coverage +coverage.data +build/* +*.pbxuser +*.mode1v3 +.svn +profile +.console_history +.sass-cache/* +.rake_tasks~ +*.log.lck +solr/ +.jhw-cache/ +jhw.* +*.sublime* +node_modules/ +dist/ +generated/ +.vendor/ +bin/* +gin-bin +.idea/ diff --git a/vendor/github.com/gobuffalo/flect/.gometalinter.json b/vendor/github.com/gobuffalo/flect/.gometalinter.json new file mode 100644 index 0000000000..e4f65a36e8 --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/.gometalinter.json @@ -0,0 +1,3 @@ +{ + "Enable": ["vet", "golint", "goimports", "deadcode", "gotype", "ineffassign", "misspell", "nakedret", "unconvert", "megacheck", "varcheck"] +} diff --git a/vendor/github.com/gobuffalo/flect/LICENSE b/vendor/github.com/gobuffalo/flect/LICENSE new file mode 100644 index 0000000000..649efd4372 --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2019 Mark Bates + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/github.com/gobuffalo/flect/Makefile b/vendor/github.com/gobuffalo/flect/Makefile new file mode 100644 index 0000000000..0ac539f1c2 --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/Makefile @@ -0,0 +1,61 @@ +TAGS ?= "" +GO_BIN ?= "go" + +install: + $(GO_BIN) install -tags ${TAGS} -v . + make tidy + +tidy: +ifeq ($(GO111MODULE),on) + $(GO_BIN) mod tidy +else + echo skipping go mod tidy +endif + +deps: + $(GO_BIN) get -tags ${TAGS} -t ./... + make tidy + +build: + $(GO_BIN) build -v . + make tidy + +test: + $(GO_BIN) test -cover -tags ${TAGS} ./... + make tidy + +ci-deps: + $(GO_BIN) get -tags ${TAGS} -t ./... + +ci-test: + $(GO_BIN) test -tags ${TAGS} -race ./... + +lint: + go get github.com/golangci/golangci-lint/cmd/golangci-lint + golangci-lint run --enable-all + make tidy + +update: +ifeq ($(GO111MODULE),on) + rm go.* + $(GO_BIN) mod init + $(GO_BIN) mod tidy +else + $(GO_BIN) get -u -tags ${TAGS} +endif + make test + make install + make tidy + +release-test: + $(GO_BIN) test -tags ${TAGS} -race ./... + make tidy + +release: + $(GO_BIN) get github.com/gobuffalo/release + make tidy + release -y -f version.go --skip-packr + make tidy + + + diff --git a/vendor/github.com/gobuffalo/flect/README.md b/vendor/github.com/gobuffalo/flect/README.md new file mode 100644 index 0000000000..2d9a1bd3b6 --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/README.md @@ -0,0 +1,36 @@ +# Flect + +

+GoDoc +CI +Go Report Card +

+ +This is a new inflection engine to replace [https://github.com/markbates/inflect](https://github.com/markbates/inflect) designed to be more modular, more readable, and easier to fix issues on than the original. + +## Installation + +```bash +$ go get -u -v github.com/gobuffalo/flect +``` + +## `github.com/gobuffalo/flect` +GoDoc + +The `github.com/gobuffalo/flect` package contains "basic" inflection tools, like pluralization, singularization, etc... + +### The `Ident` Type + +In addition to helpful methods that take in a `string` and return a `string`, there is an `Ident` type that can be used to create new, custom, inflection rules. + +The `Ident` type contains two fields. + +* `Original` - This is the original `string` that was used to create the `Ident` +* `Parts` - This is a `[]string` that represents all of the "parts" of the string, that have been split apart, making the segments easier to work with + +Examples of creating new inflection rules using `Ident` can be found in the `github.com/gobuffalo/flect/name` package. + +## `github.com/gobuffalo/flect/name` +GoDoc + +The `github.com/gobuffalo/flect/name` package contains more "business" inflection rules like creating proper names, table names, etc... diff --git a/vendor/github.com/gobuffalo/flect/SHOULDERS.md b/vendor/github.com/gobuffalo/flect/SHOULDERS.md new file mode 100644 index 0000000000..8c359f157e --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/SHOULDERS.md @@ -0,0 +1,10 @@ +# github.com/gobuffalo/flect Stands on the Shoulders of Giants + +github.com/gobuffalo/flect does not try to reinvent the wheel! Instead, it uses the already great wheels developed by the Go community and puts them all together in the best way possible. Without these giants, this project would not be possible. Please make sure to check them out and thank them for all of their hard work. + +Thank you to the following **GIANTS**: + + +* [github.com/davecgh/go-spew](https://godoc.org/github.com/davecgh/go-spew) + +* [github.com/stretchr/testify](https://godoc.org/github.com/stretchr/testify) diff --git a/vendor/github.com/gobuffalo/flect/acronyms.go b/vendor/github.com/gobuffalo/flect/acronyms.go new file mode 100644 index 0000000000..b169724a4c --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/acronyms.go @@ -0,0 +1,152 @@ +package flect + +import "sync" + +var acronymsMoot = &sync.RWMutex{} + +var baseAcronyms = map[string]bool{ + "OK": true, + "UTF8": true, + "HTML": true, + "JSON": true, + "JWT": true, + "ID": true, + "UUID": true, + "SQL": true, + "ACK": true, + "ACL": true, + "ADSL": true, + "AES": true, + "ANSI": true, + "API": true, + "ARP": true, + "ATM": true, + "BGP": true, + "BSS": true, + "CCITT": true, + "CHAP": true, + "CIDR": true, + "CIR": true, + "CLI": true, + "CPE": true, + "CPU": true, + "CRC": true, + "CRT": true, + "CSMA": true, + "CMOS": true, + "DCE": true, + "DEC": true, + "DES": true, + "DHCP": true, + "DNS": true, + "DRAM": true, + "DSL": true, + "DSLAM": true, + "DTE": true, + "DMI": true, + "EHA": true, + "EIA": true, + "EIGRP": true, + "EOF": true, + "ESS": true, + "FCC": true, + "FCS": true, + "FDDI": true, + "FTP": true, + "GBIC": true, + "gbps": true, + "GEPOF": true, + "HDLC": true, + "HTTP": true, + "HTTPS": true, + "IANA": true, + "ICMP": true, + "IDF": true, + "IDS": true, + "IEEE": true, + "IETF": true, + "IMAP": true, + "IP": true, + "IPS": true, + "ISDN": true, + "ISP": true, + "kbps": true, + "LACP": true, + "LAN": true, + "LAPB": true, + "LAPF": true, + "LLC": true, + "MAC": true, + "Mbps": true, + "MC": true, + "MDF": true, + "MIB": true, + "MoCA": true, + "MPLS": true, + "MTU": true, + "NAC": true, + "NAT": true, + "NBMA": true, + "NIC": true, + "NRZ": true, + "NRZI": true, + "NVRAM": true, + "OSI": true, + "OSPF": true, + "OUI": true, + "PAP": true, + "PAT": true, + "PC": true, + "PIM": true, + "PCM": true, + "PDU": true, + "POP3": true, + "POTS": true, + "PPP": true, + "PPTP": true, + "PTT": true, + "PVST": true, + "RAM": true, + "RARP": true, + "RFC": true, + "RIP": true, + "RLL": true, + "ROM": true, + "RSTP": true, + "RTP": true, + "RCP": true, + "SDLC": true, + "SFD": true, + "SFP": true, + "SLARP": true, + "SLIP": true, + "SMTP": true, + "SNA": true, + "SNAP": true, + "SNMP": true, + "SOF": true, + "SRAM": true, + "SSH": true, + "SSID": true, + "STP": true, + "SYN": true, + "TDM": true, + "TFTP": true, + "TIA": true, + "TOFU": true, + "UDP": true, + "URL": true, + "URI": true, + "USB": true, + "UTP": true, + "VC": true, + "VLAN": true, + "VLSM": true, + "VPN": true, + "W3C": true, + "WAN": true, + "WEP": true, + "WiFi": true, + "WPA": true, + "WWW": true, +} diff --git a/vendor/github.com/gobuffalo/flect/camelize.go b/vendor/github.com/gobuffalo/flect/camelize.go new file mode 100644 index 0000000000..d8851c8f5e --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/camelize.go @@ -0,0 +1,44 @@ +package flect + +import ( + "strings" + "unicode" +) + +// Camelize returns a camelize version of a string +// bob dylan = bobDylan +// widget_id = widgetID +// WidgetID = widgetID +func Camelize(s string) string { + return New(s).Camelize().String() +} + +// Camelize returns a camelize version of a string +// bob dylan = bobDylan +// widget_id = widgetID +// WidgetID = widgetID +func (i Ident) Camelize() Ident { + var out []string + for i, part := range i.Parts { + var x string + var capped bool + for _, c := range part { + if unicode.IsLetter(c) || unicode.IsDigit(c) { + if i == 0 { + x += string(unicode.ToLower(c)) + continue + } + if !capped { + capped = true + x += string(unicode.ToUpper(c)) + continue + } + x += string(c) + } + } + if x != "" { + out = append(out, x) + } + } + return New(strings.Join(out, "")) +} diff --git a/vendor/github.com/gobuffalo/flect/capitalize.go b/vendor/github.com/gobuffalo/flect/capitalize.go new file mode 100644 index 0000000000..78334fc0f9 --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/capitalize.go @@ -0,0 +1,24 @@ +package flect + +import "unicode" + +// Capitalize will cap the first letter of string +// user = User +// bob dylan = Bob dylan +// widget_id = Widget_id +func Capitalize(s string) string { + return New(s).Capitalize().String() +} + +// Capitalize will cap the first letter of string +// user = User +// bob dylan = Bob dylan +// widget_id = Widget_id +func (i Ident) Capitalize() Ident { + if len(i.Parts) == 0 { + return New("") + } + runes := []rune(i.Original) + runes[0] = unicode.ToTitle(runes[0]) + return New(string(runes)) +} diff --git a/vendor/github.com/gobuffalo/flect/custom_data.go b/vendor/github.com/gobuffalo/flect/custom_data.go new file mode 100644 index 0000000000..efb445f671 --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/custom_data.go @@ -0,0 +1,88 @@ +package flect + +import ( + "bytes" + "encoding/json" + "fmt" + "io" + "io/ioutil" + "os" + "path/filepath" + "strings" +) + +func init() { + loadCustomData("inflections.json", "INFLECT_PATH", "could not read inflection file", LoadInflections) + loadCustomData("acronyms.json", "ACRONYMS_PATH", "could not read acronyms file", LoadAcronyms) +} + +//CustomDataParser are functions that parse data like acronyms or +//plurals in the shape of a io.Reader it receives. +type CustomDataParser func(io.Reader) error + +func loadCustomData(defaultFile, env, readErrorMessage string, parser CustomDataParser) { + pwd, _ := os.Getwd() + path, found := os.LookupEnv(env) + if !found { + path = filepath.Join(pwd, defaultFile) + } + + if _, err := os.Stat(path); err != nil { + return + } + + b, err := ioutil.ReadFile(path) + if err != nil { + fmt.Printf("%s %s (%s)\n", readErrorMessage, path, err) + return + } + + if err = parser(bytes.NewReader(b)); err != nil { + fmt.Println(err) + } +} + +//LoadAcronyms loads rules from io.Reader param +func LoadAcronyms(r io.Reader) error { + m := []string{} + err := json.NewDecoder(r).Decode(&m) + + if err != nil { + return fmt.Errorf("could not decode acronyms JSON from reader: %s", err) + } + + acronymsMoot.Lock() + defer acronymsMoot.Unlock() + + for _, acronym := range m { + baseAcronyms[acronym] = true + } + + return nil +} + +//LoadInflections loads rules from io.Reader param +func LoadInflections(r io.Reader) error { + m := map[string]string{} + + err := json.NewDecoder(r).Decode(&m) + if err != nil { + return fmt.Errorf("could not decode inflection JSON from reader: %s", err) + } + + pluralMoot.Lock() + defer pluralMoot.Unlock() + singularMoot.Lock() + defer singularMoot.Unlock() + + for s, p := range m { + if strings.Contains(s, " ") || strings.Contains(p, " ") { + // flect works with parts, so multi-words should not be allowed + return fmt.Errorf("inflection elements should be a single word") + } + singleToPlural[s] = p + pluralToSingle[p] = s + } + + return nil +} diff --git a/vendor/github.com/gobuffalo/flect/dasherize.go b/vendor/github.com/gobuffalo/flect/dasherize.go new file mode 100644 index 0000000000..c7a8a33e36 --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/dasherize.go @@ -0,0 +1,34 @@ +package flect + +import ( + "strings" + "unicode" +) + +// Dasherize returns an alphanumeric, lowercased, dashed string +// Donald E. Knuth = donald-e-knuth +// Test with + sign = test-with-sign +// admin/WidgetID = admin-widget-id +func Dasherize(s string) string { + return New(s).Dasherize().String() +} + +// Dasherize returns an alphanumeric, lowercased, dashed string +// Donald E. Knuth = donald-e-knuth +// Test with + sign = test-with-sign +// admin/WidgetID = admin-widget-id +func (i Ident) Dasherize() Ident { + var parts []string + + for _, part := range i.Parts { + var x string + for _, c := range part { + if unicode.IsLetter(c) || unicode.IsDigit(c) { + x += string(c) + } + } + parts = xappend(parts, x) + } + + return New(strings.ToLower(strings.Join(parts, "-"))) +} diff --git a/vendor/github.com/gobuffalo/flect/flect.go b/vendor/github.com/gobuffalo/flect/flect.go new file mode 100644 index 0000000000..ee81b6f2bc --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/flect.go @@ -0,0 +1,43 @@ +/* +Package flect is a new inflection engine to replace [https://github.com/markbates/inflect](https://github.com/markbates/inflect) designed to be more modular, more readable, and easier to fix issues on than the original. +*/ +package flect + +import ( + "strings" + "unicode" +) + +var spaces = []rune{'_', ' ', ':', '-', '/'} + +func isSpace(c rune) bool { + for _, r := range spaces { + if r == c { + return true + } + } + return unicode.IsSpace(c) +} + +func xappend(a []string, ss ...string) []string { + for _, s := range ss { + s = strings.TrimSpace(s) + for _, x := range spaces { + s = strings.Trim(s, string(x)) + } + if _, ok := baseAcronyms[strings.ToUpper(s)]; ok { + s = strings.ToUpper(s) + } + if s != "" { + a = append(a, s) + } + } + return a +} + +func abs(x int) int { + if x < 0 { + return -x + } + return x +} diff --git a/vendor/github.com/gobuffalo/flect/humanize.go b/vendor/github.com/gobuffalo/flect/humanize.go new file mode 100644 index 0000000000..6a0b75af7b --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/humanize.go @@ -0,0 +1,35 @@ +package flect + +import ( + "strings" +) + +// Humanize returns first letter of sentence capitalized. +// Common acronyms are capitalized as well. +// Other capital letters in string are left as provided. +// employee_salary = Employee salary +// employee_id = employee ID +// employee_mobile_number = Employee mobile number +// first_Name = First Name +// firstName = First Name +func Humanize(s string) string { + return New(s).Humanize().String() +} + +// Humanize First letter of sentence capitalized +func (i Ident) Humanize() Ident { + if len(i.Original) == 0 { + return New("") + } + + var parts []string + for index, part := range i.Parts { + if index == 0 { + part = strings.Title(i.Parts[0]) + } + + parts = xappend(parts, part) + } + + return New(strings.Join(parts, " ")) +} diff --git a/vendor/github.com/gobuffalo/flect/ident.go b/vendor/github.com/gobuffalo/flect/ident.go new file mode 100644 index 0000000000..9189e9a39b --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/ident.go @@ -0,0 +1,122 @@ +package flect + +import ( + "encoding" + "strings" + "unicode" + "unicode/utf8" +) + +// Ident represents the string and it's parts +type Ident struct { + Original string + Parts []string +} + +// String implements fmt.Stringer and returns the original string +func (i Ident) String() string { + return i.Original +} + +// New creates a new Ident from the string +func New(s string) Ident { + i := Ident{ + Original: s, + Parts: toParts(s), + } + + return i +} + +func toParts(s string) []string { + parts := []string{} + s = strings.TrimSpace(s) + if len(s) == 0 { + return parts + } + if _, ok := baseAcronyms[strings.ToUpper(s)]; ok { + return []string{strings.ToUpper(s)} + } + var prev rune + var x strings.Builder + x.Grow(len(s)) + for _, c := range s { + // fmt.Println("### cs ->", cs) + // fmt.Println("### unicode.IsControl(c) ->", unicode.IsControl(c)) + // fmt.Println("### unicode.IsDigit(c) ->", unicode.IsDigit(c)) + // fmt.Println("### unicode.IsGraphic(c) ->", unicode.IsGraphic(c)) + // fmt.Println("### unicode.IsLetter(c) ->", unicode.IsLetter(c)) + // fmt.Println("### unicode.IsLower(c) ->", unicode.IsLower(c)) + // fmt.Println("### unicode.IsMark(c) ->", unicode.IsMark(c)) + // fmt.Println("### unicode.IsPrint(c) ->", unicode.IsPrint(c)) + // fmt.Println("### unicode.IsPunct(c) ->", unicode.IsPunct(c)) + // fmt.Println("### unicode.IsSpace(c) ->", unicode.IsSpace(c)) + // fmt.Println("### unicode.IsTitle(c) ->", unicode.IsTitle(c)) + // fmt.Println("### unicode.IsUpper(c) ->", unicode.IsUpper(c)) + if !utf8.ValidRune(c) { + continue + } + + if isSpace(c) { + parts = xappend(parts, x.String()) + x.Reset() + x.WriteRune(c) + prev = c + continue + } + + if unicode.IsUpper(c) && !unicode.IsUpper(prev) { + parts = xappend(parts, x.String()) + x.Reset() + x.WriteRune(c) + prev = c + continue + } + if unicode.IsUpper(c) && baseAcronyms[strings.ToUpper(x.String())] { + parts = xappend(parts, x.String()) + x.Reset() + x.WriteRune(c) + prev = c + continue + } + if unicode.IsLetter(c) || unicode.IsDigit(c) || unicode.IsPunct(c) || c == '`' { + prev = c + x.WriteRune(c) + continue + } + + parts = xappend(parts, x.String()) + x.Reset() + prev = c + } + parts = xappend(parts, x.String()) + + return parts +} + +var _ encoding.TextUnmarshaler = &Ident{} +var _ encoding.TextMarshaler = &Ident{} + +// LastPart returns the last part/word of the original string +func (i *Ident) LastPart() string { + if len(i.Parts) == 0 { + return "" + } + return i.Parts[len(i.Parts)-1] +} + +// ReplaceSuffix creates a new Ident with the original suffix replaced by new +func (i Ident) ReplaceSuffix(orig, new string) Ident { + return New(strings.TrimSuffix(i.Original, orig) + new) +} + +//UnmarshalText unmarshalls byte array into the Ident +func (i *Ident) UnmarshalText(data []byte) error { + (*i) = New(string(data)) + return nil +} + +//MarshalText marshals Ident into byte array +func (i Ident) MarshalText() ([]byte, error) { + return []byte(i.Original), nil +} diff --git a/vendor/github.com/gobuffalo/flect/lower_upper.go b/vendor/github.com/gobuffalo/flect/lower_upper.go new file mode 100644 index 0000000000..930da58d8c --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/lower_upper.go @@ -0,0 +1,13 @@ +package flect + +import "strings" + +// ToUpper is a convience wrapper for strings.ToUpper +func (i Ident) ToUpper() Ident { + return New(strings.ToUpper(i.Original)) +} + +// ToLower is a convience wrapper for strings.ToLower +func (i Ident) ToLower() Ident { + return New(strings.ToLower(i.Original)) +} diff --git a/vendor/github.com/gobuffalo/flect/ordinalize.go b/vendor/github.com/gobuffalo/flect/ordinalize.go new file mode 100644 index 0000000000..1ce27b3a0d --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/ordinalize.go @@ -0,0 +1,43 @@ +package flect + +import ( + "fmt" + "strconv" +) + +// Ordinalize converts a number to an ordinal version +// 42 = 42nd +// 45 = 45th +// 1 = 1st +func Ordinalize(s string) string { + return New(s).Ordinalize().String() +} + +// Ordinalize converts a number to an ordinal version +// 42 = 42nd +// 45 = 45th +// 1 = 1st +func (i Ident) Ordinalize() Ident { + number, err := strconv.Atoi(i.Original) + if err != nil { + return i + } + var s string + switch abs(number) % 100 { + case 11, 12, 13: + s = fmt.Sprintf("%dth", number) + default: + switch abs(number) % 10 { + case 1: + s = fmt.Sprintf("%dst", number) + case 2: + s = fmt.Sprintf("%dnd", number) + case 3: + s = fmt.Sprintf("%drd", number) + } + } + if s != "" { + return New(s) + } + return New(fmt.Sprintf("%dth", number)) +} diff --git a/vendor/github.com/gobuffalo/flect/pascalize.go b/vendor/github.com/gobuffalo/flect/pascalize.go new file mode 100644 index 0000000000..6396d0d4e7 --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/pascalize.go @@ -0,0 +1,32 @@ +package flect + +import ( + "strings" +) + +// Pascalize returns a string with each segment capitalized +// user = User +// bob dylan = BobDylan +// widget_id = WidgetID +func Pascalize(s string) string { + return New(s).Pascalize().String() +} + +// Pascalize returns a string with each segment capitalized +// user = User +// bob dylan = BobDylan +// widget_id = WidgetID +func (i Ident) Pascalize() Ident { + c := i.Camelize() + if len(c.String()) == 0 { + return c + } + if len(i.Parts) == 0 { + return i + } + capLen := 1 + if _, ok := baseAcronyms[strings.ToUpper(i.Parts[0])]; ok { + capLen = len(i.Parts[0]) + } + return New(string(strings.ToUpper(c.Original[0:capLen])) + c.Original[capLen:]) +} diff --git a/vendor/github.com/gobuffalo/flect/plural_rules.go b/vendor/github.com/gobuffalo/flect/plural_rules.go new file mode 100644 index 0000000000..7205ec028a --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/plural_rules.go @@ -0,0 +1,286 @@ +package flect + +var pluralRules = []rule{} + +// AddPlural adds a rule that will replace the given suffix with the replacement suffix. +func AddPlural(suffix string, repl string) { + pluralMoot.Lock() + defer pluralMoot.Unlock() + pluralRules = append([]rule{{ + suffix: suffix, + fn: func(s string) string { + s = s[:len(s)-len(suffix)] + return s + repl + }, + }}, pluralRules...) + + pluralRules = append([]rule{{ + suffix: repl, + fn: noop, + }}, pluralRules...) +} + +var singleToPlural = map[string]string{ + "aircraft": "aircraft", + "alias": "aliases", + "alumna": "alumnae", + "alumnus": "alumni", + "analysis": "analyses", + "antenna": "antennas", + "antithesis": "antitheses", + "apex": "apexes", + "appendix": "appendices", + "axis": "axes", + "bacillus": "bacilli", + "bacterium": "bacteria", + "basis": "bases", + "beau": "beaus", + "bison": "bison", + "bureau": "bureaus", + "bus": "buses", + "campus": "campuses", + "caucus": "caucuses", + "child": "children", + "château": "châteaux", + "circus": "circuses", + "codex": "codices", + "concerto": "concertos", + "corpus": "corpora", + "crisis": "crises", + "criterion": "criteria", + "curriculum": "curriculums", + "datum": "data", + "deer": "deer", + "diagnosis": "diagnoses", + "die": "dice", + "dwarf": "dwarves", + "ellipsis": "ellipses", + "equipment": "equipment", + "erratum": "errata", + "fez": "fezzes", + "fish": "fish", + "focus": "foci", + "foo": "foos", + "foot": "feet", + "formula": "formulas", + "fungus": "fungi", + "genus": "genera", + "goose": "geese", + "graffito": "graffiti", + "grouse": "grouse", + "half": "halves", + "halo": "halos", + "hoof": "hooves", + "human": "humans", + "hypothesis": "hypotheses", + "index": "indices", + "information": "information", + "jeans": "jeans", + "larva": "larvae", + "libretto": "librettos", + "loaf": "loaves", + "locus": "loci", + "louse": "lice", + "matrix": "matrices", + "medium": "media", + "minutia": "minutiae", + "money": "money", + "moose": "moose", + "mouse": "mice", + "nebula": "nebulae", + "news": "news", + "nucleus": "nuclei", + "oasis": "oases", + "octopus": "octopi", + "offspring": "offspring", + "opus": "opera", + "ovum": "ova", + "ox": "oxen", + "parenthesis": "parentheses", + "person": "people", + "phenomenon": "phenomena", + "photo": "photos", + "phylum": "phyla", + "piano": "pianos", + "plus": "pluses", + "police": "police", + "prognosis": "prognoses", + "prometheus": "prometheuses", + "quiz": "quizzes", + "quota": "quotas", + "radius": "radiuses", + "referendum": "referendums", + "ress": "resses", + "rice": "rice", + "salmon": "salmon", + "sex": "sexes", + "series": "series", + "sheep": "sheep", + "shoe": "shoes", + "shrimp": "shrimp", + "species": "species", + "stimulus": "stimuli", + "stratum": "strata", + "swine": "swine", + "syllabus": "syllabi", + "symposium": "symposiums", + "synapse": "synapses", + "synopsis": "synopses", + "tableau": "tableaus", + "testis": "testes", + "thesis": "theses", + "thief": "thieves", + "tooth": "teeth", + "trout": "trout", + "tuna": "tuna", + "vedalia": "vedalias", + "vertebra": "vertebrae", + "vertix": "vertices", + "vita": "vitae", + "vortex": "vortices", + "wharf": "wharves", + "wife": "wives", + "woman": "women", + "wolf": "wolves", + "you": "you", +} + +var pluralToSingle = map[string]string{} + +func init() { + for k, v := range singleToPlural { + pluralToSingle[v] = k + } +} + +type singularToPluralSuffix struct { + singular string + plural string +} + +var singularToPluralSuffixList = []singularToPluralSuffix{ + {"campus", "campuses"}, + {"person", "people"}, + {"phylum", "phyla"}, + {"randum", "randa"}, + {"actus", "acti"}, + {"adium", "adia"}, + {"basis", "basis"}, + {"child", "children"}, + {"chive", "chives"}, + {"focus", "foci"}, + {"genus", "genera"}, + {"hello", "hellos"}, + {"jeans", "jeans"}, + {"louse", "lice"}, + {"media", "media"}, + {"mouse", "mice"}, + {"movie", "movies"}, + {"oasis", "oasis"}, + {"atum", "ata"}, + {"atus", "atuses"}, + {"base", "bases"}, + {"cess", "cesses"}, + {"dium", "diums"}, + {"eses", "esis"}, + {"half", "halves"}, + {"hive", "hives"}, + {"iano", "ianos"}, + {"irus", "iri"}, + {"isis", "ises"}, + {"leus", "li"}, + {"mnus", "mni"}, + {"move", "moves"}, + {"news", "news"}, + {"odex", "odice"}, + {"oose", "eese"}, + {"ouse", "ouses"}, + {"ovum", "ova"}, + {"shoe", "shoes"}, + {"stis", "stes"}, + {"tive", "tives"}, + {"vice", "vices"}, + {"wife", "wives"}, + {"afe", "aves"}, + {"bfe", "bves"}, + {"box", "boxes"}, + {"cfe", "cves"}, + {"dfe", "dves"}, + {"dge", "dges"}, + {"efe", "eves"}, + {"gfe", "gves"}, + {"hfe", "hves"}, + {"ife", "ives"}, + {"itz", "itzes"}, + {"ium", "ia"}, + {"ize", "izes"}, + {"jfe", "jves"}, + {"kfe", "kves"}, + {"man", "men"}, + {"mfe", "mves"}, + {"nfe", "nves"}, + {"nna", "nnas"}, + {"oaf", "oaves"}, + {"oci", "ocus"}, + {"ode", "odes"}, + {"ofe", "oves"}, + {"pfe", "pves"}, + {"qfe", "qves"}, + {"quy", "quies"}, + {"rfe", "rves"}, + {"sfe", "sves"}, + {"tfe", "tves"}, + {"tum", "ta"}, + {"tus", "tuses"}, + {"ufe", "uves"}, + {"ula", "ulae"}, + {"ula", "ulas"}, + {"uli", "ulus"}, + {"use", "uses"}, + {"uss", "usses"}, + {"vfe", "vves"}, + {"wfe", "wves"}, + {"xfe", "xves"}, + {"yfe", "yves"}, + {"you", "you"}, + {"zfe", "zves"}, + {"by", "bies"}, + {"ch", "ches"}, + {"cy", "cies"}, + {"dy", "dies"}, + {"ex", "ices"}, + {"fy", "fies"}, + {"gy", "gies"}, + {"hy", "hies"}, + {"io", "ios"}, + {"jy", "jies"}, + {"ky", "kies"}, + {"lf", "lves"}, + {"ly", "lies"}, + {"my", "mies"}, + {"ny", "nies"}, + {"py", "pies"}, + {"qy", "qies"}, + {"rf", "rves"}, + {"ry", "ries"}, + {"sh", "shes"}, + {"ss", "sses"}, + {"sy", "sies"}, + {"ty", "ties"}, + {"tz", "tzes"}, + {"va", "vae"}, + {"vy", "vies"}, + {"wy", "wies"}, + {"xy", "xies"}, + {"zy", "zies"}, + {"zz", "zzes"}, + {"o", "oes"}, + {"x", "xes"}, +} + +func init() { + for i := len(singularToPluralSuffixList) - 1; i >= 0; i-- { + AddPlural(singularToPluralSuffixList[i].singular, singularToPluralSuffixList[i].plural) + AddSingular(singularToPluralSuffixList[i].plural, singularToPluralSuffixList[i].singular) + } +} diff --git a/vendor/github.com/gobuffalo/flect/pluralize.go b/vendor/github.com/gobuffalo/flect/pluralize.go new file mode 100644 index 0000000000..88f9ec5545 --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/pluralize.go @@ -0,0 +1,62 @@ +package flect + +import ( + "strings" + "sync" +) + +var pluralMoot = &sync.RWMutex{} + +// Pluralize returns a plural version of the string +// user = users +// person = people +// datum = data +func Pluralize(s string) string { + return New(s).Pluralize().String() +} + +// PluralizeWithSize will pluralize a string taking a number number into account. +// PluralizeWithSize("user", 1) = user +// PluralizeWithSize("user", 2) = users +func PluralizeWithSize(s string, i int) string { + if i == 1 || i == -1 { + return New(s).Singularize().String() + } + return New(s).Pluralize().String() +} + +// Pluralize returns a plural version of the string +// user = users +// person = people +// datum = data +func (i Ident) Pluralize() Ident { + s := i.LastPart() + if len(s) == 0 { + return New("") + } + + pluralMoot.RLock() + defer pluralMoot.RUnlock() + + ls := strings.ToLower(s) + if _, ok := pluralToSingle[ls]; ok { + return i + } + if p, ok := singleToPlural[ls]; ok { + if s == Capitalize(s) { + p = Capitalize(p) + } + return i.ReplaceSuffix(s, p) + } + for _, r := range pluralRules { + if strings.HasSuffix(ls, r.suffix) { + return i.ReplaceSuffix(s, r.fn(s)) + } + } + + if strings.HasSuffix(ls, "s") { + return i + } + + return New(i.String() + "s") +} diff --git a/vendor/github.com/gobuffalo/flect/rule.go b/vendor/github.com/gobuffalo/flect/rule.go new file mode 100644 index 0000000000..dc616b337d --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/rule.go @@ -0,0 +1,10 @@ +package flect + +type ruleFn func(string) string + +type rule struct { + suffix string + fn ruleFn +} + +func noop(s string) string { return s } diff --git a/vendor/github.com/gobuffalo/flect/singular_rules.go b/vendor/github.com/gobuffalo/flect/singular_rules.go new file mode 100644 index 0000000000..9b85a873b9 --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/singular_rules.go @@ -0,0 +1,23 @@ +package flect + +var singularRules = []rule{} + +// AddSingular adds a rule that will replace the given suffix with the replacement suffix. +func AddSingular(ext string, repl string) { + singularMoot.Lock() + defer singularMoot.Unlock() + singularRules = append([]rule{{ + suffix: ext, + fn: func(s string) string { + s = s[:len(s)-len(ext)] + return s + repl + }, + }}, singularRules...) + + singularRules = append([]rule{{ + suffix: repl, + fn: func(s string) string { + return s + }, + }}, singularRules...) +} diff --git a/vendor/github.com/gobuffalo/flect/singularize.go b/vendor/github.com/gobuffalo/flect/singularize.go new file mode 100644 index 0000000000..244e382c3c --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/singularize.go @@ -0,0 +1,61 @@ +package flect + +import ( + "strings" + "sync" +) + +var singularMoot = &sync.RWMutex{} + +// Singularize returns a singular version of the string +// users = user +// data = datum +// people = person +func Singularize(s string) string { + return New(s).Singularize().String() +} + +// SingularizeWithSize will singular a string taking a number number into account. +// SingularizeWithSize("user", 1) = user +// SingularizeWithSize("user", 2) = users +func SingularizeWithSize(s string, i int) string { + if i == 1 || i == -1 { + return New(s).Singularize().String() + } + return New(s).Pluralize().String() +} + +// Singularize returns a singular version of the string +// users = user +// data = datum +// people = person +func (i Ident) Singularize() Ident { + s := i.LastPart() + if len(s) == 0 { + return i + } + + singularMoot.RLock() + defer singularMoot.RUnlock() + + ls := strings.ToLower(s) + if p, ok := pluralToSingle[ls]; ok { + if s == Capitalize(s) { + p = Capitalize(p) + } + return i.ReplaceSuffix(s, p) + } + if _, ok := singleToPlural[ls]; ok { + return i + } + for _, r := range singularRules { + if strings.HasSuffix(ls, r.suffix) { + return i.ReplaceSuffix(s, r.fn(s)) + } + } + + if strings.HasSuffix(s, "s") { + return i.ReplaceSuffix("s", "") + } + return i +} diff --git a/vendor/github.com/gobuffalo/flect/titleize.go b/vendor/github.com/gobuffalo/flect/titleize.go new file mode 100644 index 0000000000..cbbf08a5aa --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/titleize.go @@ -0,0 +1,30 @@ +package flect + +import ( + "strings" + "unicode" +) + +// Titleize will capitalize the start of each part +// "Nice to see you!" = "Nice To See You!" +// "i've read a book! have you?" = "I've Read A Book! Have You?" +// "This is `code` ok" = "This Is `code` OK" +func Titleize(s string) string { + return New(s).Titleize().String() +} + +// Titleize will capitalize the start of each part +// "Nice to see you!" = "Nice To See You!" +// "i've read a book! have you?" = "I've Read A Book! Have You?" +// "This is `code` ok" = "This Is `code` OK" +func (i Ident) Titleize() Ident { + var parts []string + for _, part := range i.Parts { + x := string(unicode.ToTitle(rune(part[0]))) + if len(part) > 1 { + x += part[1:] + } + parts = append(parts, x) + } + return New(strings.Join(parts, " ")) +} diff --git a/vendor/github.com/gobuffalo/flect/underscore.go b/vendor/github.com/gobuffalo/flect/underscore.go new file mode 100644 index 0000000000..d42859a59a --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/underscore.go @@ -0,0 +1,35 @@ +package flect + +import ( + "strings" + "unicode" +) + +// Underscore a string +// bob dylan --> bob_dylan +// Nice to see you! --> nice_to_see_you +// widgetID --> widget_id +func Underscore(s string) string { + return New(s).Underscore().String() +} + +// Underscore a string +// bob dylan --> bob_dylan +// Nice to see you! --> nice_to_see_you +// widgetID --> widget_id +func (i Ident) Underscore() Ident { + out := make([]string, 0, len(i.Parts)) + for _, part := range i.Parts { + var x strings.Builder + x.Grow(len(part)) + for _, c := range part { + if unicode.IsLetter(c) || unicode.IsDigit(c) { + x.WriteRune(c) + } + } + if x.Len() > 0 { + out = append(out, x.String()) + } + } + return New(strings.ToLower(strings.Join(out, "_"))) +} diff --git a/vendor/github.com/gobuffalo/flect/version.go b/vendor/github.com/gobuffalo/flect/version.go new file mode 100644 index 0000000000..9624d5df2d --- /dev/null +++ b/vendor/github.com/gobuffalo/flect/version.go @@ -0,0 +1,4 @@ +package flect + +//Version holds Flect version number +const Version = "v0.1.6" diff --git a/vendor/github.com/inconshreveable/mousetrap/LICENSE b/vendor/github.com/inconshreveable/mousetrap/LICENSE new file mode 100644 index 0000000000..5f920e9732 --- /dev/null +++ b/vendor/github.com/inconshreveable/mousetrap/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2022 Alan Shreve (@inconshreveable) + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/inconshreveable/mousetrap/README.md b/vendor/github.com/inconshreveable/mousetrap/README.md new file mode 100644 index 0000000000..7a950d1774 --- /dev/null +++ b/vendor/github.com/inconshreveable/mousetrap/README.md @@ -0,0 +1,23 @@ +# mousetrap + +mousetrap is a tiny library that answers a single question. + +On a Windows machine, was the process invoked by someone double clicking on +the executable file while browsing in explorer? + +### Motivation + +Windows developers unfamiliar with command line tools will often "double-click" +the executable for a tool. Because most CLI tools print the help and then exit +when invoked without arguments, this is often very frustrating for those users. + +mousetrap provides a way to detect these invocations so that you can provide +more helpful behavior and instructions on how to run the CLI tool. To see what +this looks like, both from an organizational and a technical perspective, see +https://inconshreveable.com/09-09-2014/sweat-the-small-stuff/ + +### The interface + +The library exposes a single interface: + + func StartedByExplorer() (bool) diff --git a/vendor/github.com/inconshreveable/mousetrap/trap_others.go b/vendor/github.com/inconshreveable/mousetrap/trap_others.go new file mode 100644 index 0000000000..06a91f0868 --- /dev/null +++ b/vendor/github.com/inconshreveable/mousetrap/trap_others.go @@ -0,0 +1,16 @@ +//go:build !windows +// +build !windows + +package mousetrap + +// StartedByExplorer returns true if the program was invoked by the user +// double-clicking on the executable from explorer.exe +// +// It is conservative and returns false if any of the internal calls fail. +// It does not guarantee that the program was run from a terminal. It only can tell you +// whether it was launched from explorer.exe +// +// On non-Windows platforms, it always returns false. +func StartedByExplorer() bool { + return false +} diff --git a/vendor/github.com/inconshreveable/mousetrap/trap_windows.go b/vendor/github.com/inconshreveable/mousetrap/trap_windows.go new file mode 100644 index 0000000000..0c56880216 --- /dev/null +++ b/vendor/github.com/inconshreveable/mousetrap/trap_windows.go @@ -0,0 +1,42 @@ +package mousetrap + +import ( + "syscall" + "unsafe" +) + +func getProcessEntry(pid int) (*syscall.ProcessEntry32, error) { + snapshot, err := syscall.CreateToolhelp32Snapshot(syscall.TH32CS_SNAPPROCESS, 0) + if err != nil { + return nil, err + } + defer syscall.CloseHandle(snapshot) + var procEntry syscall.ProcessEntry32 + procEntry.Size = uint32(unsafe.Sizeof(procEntry)) + if err = syscall.Process32First(snapshot, &procEntry); err != nil { + return nil, err + } + for { + if procEntry.ProcessID == uint32(pid) { + return &procEntry, nil + } + err = syscall.Process32Next(snapshot, &procEntry) + if err != nil { + return nil, err + } + } +} + +// StartedByExplorer returns true if the program was invoked by the user double-clicking +// on the executable from explorer.exe +// +// It is conservative and returns false if any of the internal calls fail. +// It does not guarantee that the program was run from a terminal. It only can tell you +// whether it was launched from explorer.exe +func StartedByExplorer() bool { + pe, err := getProcessEntry(syscall.Getppid()) + if err != nil { + return false + } + return "explorer.exe" == syscall.UTF16ToString(pe.ExeFile[:]) +} diff --git a/vendor/github.com/libopenstorage/openstorage/api/api.go b/vendor/github.com/libopenstorage/openstorage/api/api.go index 996304cf58..66a816734c 100644 --- a/vendor/github.com/libopenstorage/openstorage/api/api.go +++ b/vendor/github.com/libopenstorage/openstorage/api/api.go @@ -10,7 +10,6 @@ import ( "github.com/golang/protobuf/ptypes" "github.com/mohae/deepcopy" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" "github.com/libopenstorage/openstorage/pkg/auth" ) @@ -65,17 +64,17 @@ const ( SpecExportOptions = "export_options" SpecExportOptionsEmpty = "empty_export_options" SpecMountOptions = "mount_options" + SpecCSIMountOptions = "csi_mount_options" + SpecSharedv4MountOptions = "sharedv4_mount_options" // spec key cannot change due to parity with existing PSO storageclasses - SpecFsFormatOptions = "createoptions" - SpecCSIMountOptions = "csi_mount_options" - SpecSharedv4MountOptions = "sharedv4_mount_options" - SpecProxyProtocolS3 = "s3" - SpecProxyProtocolPXD = "pxd" - SpecProxyProtocolNFS = "nfs" - SpecProxyEndpoint = "proxy_endpoint" - SpecProxyNFSSubPath = "proxy_nfs_subpath" - SpecProxyNFSExportPath = "proxy_nfs_exportpath" - SpecProxyS3Bucket = "proxy_s3_bucket" + SpecFsFormatOptions = "createoptions" + SpecProxyProtocolS3 = "s3" + SpecProxyProtocolPXD = "pxd" + SpecProxyProtocolNFS = "nfs" + SpecProxyEndpoint = "proxy_endpoint" + SpecProxyNFSSubPath = "proxy_nfs_subpath" + SpecProxyNFSExportPath = "proxy_nfs_exportpath" + SpecProxyS3Bucket = "proxy_s3_bucket" // SpecBestEffortLocationProvisioning default is false. If set provisioning request will succeed // even if specified data location parameters could not be satisfied. SpecBestEffortLocationProvisioning = "best_effort_location_provisioning" @@ -94,6 +93,7 @@ const ( SpecScanPolicyTrigger = "scan_policy_trigger" SpecScanPolicyAction = "scan_policy_action" SpecProxyWrite = "proxy_write" + SpecFastpath = "fastpath" SpecSharedv4ServiceType = "sharedv4_svc_type" SpecSharedv4ServiceName = "sharedv4_svc_name" SpecSharedv4FailoverStrategy = "sharedv4_failover_strategy" @@ -101,19 +101,18 @@ const ( SpecSharedv4FailoverStrategyAggressive = "aggressive" SpecSharedv4FailoverStrategyUnspecified = "" SpecSharedv4ExternalAccess = "sharedv4_external_access" - SpecFastpath = "fastpath" SpecAutoFstrim = "auto_fstrim" SpecBackendVolName = "pure_vol_name" SpecBackendType = "backend" SpecBackendPureBlock = "pure_block" SpecBackendPureFile = "pure_file" SpecPureFileExportRules = "pure_export_rules" + SpecPureNFSEnpoint = "pure_nfs_endpoint" + SpecPurePodName = "pure_fa_pod_name" SpecIoThrottleRdIOPS = "io_throttle_rd_iops" SpecIoThrottleWrIOPS = "io_throttle_wr_iops" SpecIoThrottleRdBW = "io_throttle_rd_bw" SpecIoThrottleWrBW = "io_throttle_wr_bw" - SpecReadahead = "readahead" - SpecWinshare = "winshare" ) // OptionKey specifies a set of recognized query params. @@ -369,7 +368,7 @@ type CloudBackupCreateRequest struct { // Labels are list of key value pairs to tag the cloud backup. These labels // are stored in the metadata associated with the backup. Labels map[string]string - // FullBackupFrequency indicates number of incremental backup after which + // FullBackupFrequency indicates number of incremental backup after whcih // a fullbackup must be created. This is to override the default value for // manual/user triggerred backups and not applicable for scheduled backups. // Value of 0 retains the default behavior. @@ -455,8 +454,8 @@ type CloudBackupGenericRequest struct { // MetadataFilter indicates backups whose metadata has these kv pairs MetadataFilter map[string]string // CloudBackupID must be specified if one needs to enumerate known single - // backup (format is clusteruuidORBucketName/srcVolId-SnapId(-incr). If t\ - // this is specified, everything else n the command is ignored + // backup (format is clusteruuidORBucketName/srcVolId-SnapId(-incr). If + // this is specified, everything else in the command is ignored CloudBackupID string // MissingSrcVol set to true enumerates cloudbackups for which srcVol is not // present in the cluster. Either the source volume is deleted or the @@ -483,7 +482,7 @@ type CloudBackupInfo struct { Status string // ClusterType indicates if the cloudbackup was uploaded by this // cluster. Could be unknown with older version cloudbackups - ClusterType SdkCloudBackupClusterType + ClusterType SdkCloudBackupClusterType_Value // Namespace to which this cloudbackup belongs to Namespace string } @@ -672,7 +671,7 @@ type CloudBackupScheduleInfo struct { SrcVolumeID string // CredentialUUID is the cloud credential used with this schedule CredentialUUID string - // Schedule is the frequencies of backup + // Schedule is the frequence of backup Schedule string // MaxBackups are the maximum number of backups retained // in cloud.Older backups are deleted @@ -1496,24 +1495,6 @@ func (s *ProxySpec) GetPureFullVolumeName() string { return "" } -// GetAllEnumInfo returns an EnumInfo for every proto enum -func GetAllEnumInfo() []protoimpl.EnumInfo { - return file_api_api_proto_enumTypes -} - -// Constants defined for proxy mounts -const ( - // OptProxyCaller is an option to pass NodeID of the client requesting a sharedv4 - // mount from the server - OptProxyCaller = "caller" - // OptProxyCallerIP is an option to pass NodeIP of the client requesting a sharedv4 - // mount from the server - OptProxyCallerIP = "caller_ip" - // OptMountID is an option to pass mount path of the client requesting a sharedv4 - // mount from the server - OptMountID = "mountID" -) - const ( // SharedVolExportPrefix is the export path where shared volumes are mounted SharedVolExportPrefix = "/var/lib/osd/pxns" diff --git a/vendor/github.com/libopenstorage/openstorage/api/api.pb.go b/vendor/github.com/libopenstorage/openstorage/api/api.pb.go index 7635a9143d..db6185dfce 100644 --- a/vendor/github.com/libopenstorage/openstorage/api/api.pb.go +++ b/vendor/github.com/libopenstorage/openstorage/api/api.pb.go @@ -1,41 +1,29 @@ -/// Please use the following editor setup for this file: -// Tab size=2; Tabs as spaces; Clean up trailing whitepsace -// -// In vim add: au FileType proto setl sw=2 ts=2 expandtab list -// -// Note, the documentation provided here for can be created in -// markdown format plus the use of 'codetabs' are supported. The documentation -// will then be rendered by github.com/openstoreage/libopenstoreage.github.io and -// provided on https://libopenstorage.github.io -// - // Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.26.0 -// protoc v3.14.0 // source: api/api.proto package api +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import timestamp "github.com/golang/protobuf/ptypes/timestamp" +import _ "google.golang.org/genproto/googleapis/api/annotations" + import ( - context "context" - _ "google.golang.org/genproto/googleapis/api/annotations" + context "golang.org/x/net/context" grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - reflect "reflect" - sync "sync" ) -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package type Status int32 @@ -59,71 +47,48 @@ const ( Status_STATUS_MAX Status = 15 ) -// Enum value maps for Status. -var ( - Status_name = map[int32]string{ - 0: "STATUS_NONE", - 1: "STATUS_INIT", - 2: "STATUS_OK", - 3: "STATUS_OFFLINE", - 4: "STATUS_ERROR", - 5: "STATUS_NOT_IN_QUORUM", - 6: "STATUS_DECOMMISSION", - 7: "STATUS_MAINTENANCE", - 8: "STATUS_STORAGE_DOWN", - 9: "STATUS_STORAGE_DEGRADED", - 10: "STATUS_NEEDS_REBOOT", - 11: "STATUS_STORAGE_REBALANCE", - 12: "STATUS_STORAGE_DRIVE_REPLACE", - 13: "STATUS_NOT_IN_QUORUM_NO_STORAGE", - 14: "STATUS_POOLMAINTENANCE", - 15: "STATUS_MAX", - } - Status_value = map[string]int32{ - "STATUS_NONE": 0, - "STATUS_INIT": 1, - "STATUS_OK": 2, - "STATUS_OFFLINE": 3, - "STATUS_ERROR": 4, - "STATUS_NOT_IN_QUORUM": 5, - "STATUS_DECOMMISSION": 6, - "STATUS_MAINTENANCE": 7, - "STATUS_STORAGE_DOWN": 8, - "STATUS_STORAGE_DEGRADED": 9, - "STATUS_NEEDS_REBOOT": 10, - "STATUS_STORAGE_REBALANCE": 11, - "STATUS_STORAGE_DRIVE_REPLACE": 12, - "STATUS_NOT_IN_QUORUM_NO_STORAGE": 13, - "STATUS_POOLMAINTENANCE": 14, - "STATUS_MAX": 15, - } -) - -func (x Status) Enum() *Status { - p := new(Status) - *p = x - return p +var Status_name = map[int32]string{ + 0: "STATUS_NONE", + 1: "STATUS_INIT", + 2: "STATUS_OK", + 3: "STATUS_OFFLINE", + 4: "STATUS_ERROR", + 5: "STATUS_NOT_IN_QUORUM", + 6: "STATUS_DECOMMISSION", + 7: "STATUS_MAINTENANCE", + 8: "STATUS_STORAGE_DOWN", + 9: "STATUS_STORAGE_DEGRADED", + 10: "STATUS_NEEDS_REBOOT", + 11: "STATUS_STORAGE_REBALANCE", + 12: "STATUS_STORAGE_DRIVE_REPLACE", + 13: "STATUS_NOT_IN_QUORUM_NO_STORAGE", + 14: "STATUS_POOLMAINTENANCE", + 15: "STATUS_MAX", +} +var Status_value = map[string]int32{ + "STATUS_NONE": 0, + "STATUS_INIT": 1, + "STATUS_OK": 2, + "STATUS_OFFLINE": 3, + "STATUS_ERROR": 4, + "STATUS_NOT_IN_QUORUM": 5, + "STATUS_DECOMMISSION": 6, + "STATUS_MAINTENANCE": 7, + "STATUS_STORAGE_DOWN": 8, + "STATUS_STORAGE_DEGRADED": 9, + "STATUS_NEEDS_REBOOT": 10, + "STATUS_STORAGE_REBALANCE": 11, + "STATUS_STORAGE_DRIVE_REPLACE": 12, + "STATUS_NOT_IN_QUORUM_NO_STORAGE": 13, + "STATUS_POOLMAINTENANCE": 14, + "STATUS_MAX": 15, } func (x Status) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Status) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[0].Descriptor() -} - -func (Status) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[0] -} - -func (x Status) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) + return proto.EnumName(Status_name, int32(x)) } - -// Deprecated: Use Status.Descriptor instead. func (Status) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{0} + return fileDescriptor_api_bc0eb0e06839944e, []int{0} } type DriverType int32 @@ -137,51 +102,28 @@ const ( DriverType_DRIVER_TYPE_GRAPH DriverType = 5 ) -// Enum value maps for DriverType. -var ( - DriverType_name = map[int32]string{ - 0: "DRIVER_TYPE_NONE", - 1: "DRIVER_TYPE_FILE", - 2: "DRIVER_TYPE_BLOCK", - 3: "DRIVER_TYPE_OBJECT", - 4: "DRIVER_TYPE_CLUSTERED", - 5: "DRIVER_TYPE_GRAPH", - } - DriverType_value = map[string]int32{ - "DRIVER_TYPE_NONE": 0, - "DRIVER_TYPE_FILE": 1, - "DRIVER_TYPE_BLOCK": 2, - "DRIVER_TYPE_OBJECT": 3, - "DRIVER_TYPE_CLUSTERED": 4, - "DRIVER_TYPE_GRAPH": 5, - } -) - -func (x DriverType) Enum() *DriverType { - p := new(DriverType) - *p = x - return p -} - -func (x DriverType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (DriverType) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[1].Descriptor() +var DriverType_name = map[int32]string{ + 0: "DRIVER_TYPE_NONE", + 1: "DRIVER_TYPE_FILE", + 2: "DRIVER_TYPE_BLOCK", + 3: "DRIVER_TYPE_OBJECT", + 4: "DRIVER_TYPE_CLUSTERED", + 5: "DRIVER_TYPE_GRAPH", } - -func (DriverType) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[1] +var DriverType_value = map[string]int32{ + "DRIVER_TYPE_NONE": 0, + "DRIVER_TYPE_FILE": 1, + "DRIVER_TYPE_BLOCK": 2, + "DRIVER_TYPE_OBJECT": 3, + "DRIVER_TYPE_CLUSTERED": 4, + "DRIVER_TYPE_GRAPH": 5, } -func (x DriverType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x DriverType) String() string { + return proto.EnumName(DriverType_name, int32(x)) } - -// Deprecated: Use DriverType.Descriptor instead. func (DriverType) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{1} + return fileDescriptor_api_bc0eb0e06839944e, []int{1} } type FSType int32 @@ -198,57 +140,34 @@ const ( FSType_FS_TYPE_XFSv2 FSType = 8 ) -// Enum value maps for FSType. -var ( - FSType_name = map[int32]string{ - 0: "FS_TYPE_NONE", - 1: "FS_TYPE_BTRFS", - 2: "FS_TYPE_EXT4", - 3: "FS_TYPE_FUSE", - 4: "FS_TYPE_NFS", - 5: "FS_TYPE_VFS", - 6: "FS_TYPE_XFS", - 7: "FS_TYPE_ZFS", - 8: "FS_TYPE_XFSv2", - } - FSType_value = map[string]int32{ - "FS_TYPE_NONE": 0, - "FS_TYPE_BTRFS": 1, - "FS_TYPE_EXT4": 2, - "FS_TYPE_FUSE": 3, - "FS_TYPE_NFS": 4, - "FS_TYPE_VFS": 5, - "FS_TYPE_XFS": 6, - "FS_TYPE_ZFS": 7, - "FS_TYPE_XFSv2": 8, - } -) - -func (x FSType) Enum() *FSType { - p := new(FSType) - *p = x - return p +var FSType_name = map[int32]string{ + 0: "FS_TYPE_NONE", + 1: "FS_TYPE_BTRFS", + 2: "FS_TYPE_EXT4", + 3: "FS_TYPE_FUSE", + 4: "FS_TYPE_NFS", + 5: "FS_TYPE_VFS", + 6: "FS_TYPE_XFS", + 7: "FS_TYPE_ZFS", + 8: "FS_TYPE_XFSv2", +} +var FSType_value = map[string]int32{ + "FS_TYPE_NONE": 0, + "FS_TYPE_BTRFS": 1, + "FS_TYPE_EXT4": 2, + "FS_TYPE_FUSE": 3, + "FS_TYPE_NFS": 4, + "FS_TYPE_VFS": 5, + "FS_TYPE_XFS": 6, + "FS_TYPE_ZFS": 7, + "FS_TYPE_XFSv2": 8, } func (x FSType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FSType) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[2].Descriptor() -} - -func (FSType) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[2] -} - -func (x FSType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) + return proto.EnumName(FSType_name, int32(x)) } - -// Deprecated: Use FSType.Descriptor instead. func (FSType) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{2} + return fileDescriptor_api_bc0eb0e06839944e, []int{2} } type GraphDriverChangeType int32 @@ -260,47 +179,24 @@ const ( GraphDriverChangeType_GRAPH_DRIVER_CHANGE_TYPE_DELETED GraphDriverChangeType = 3 ) -// Enum value maps for GraphDriverChangeType. -var ( - GraphDriverChangeType_name = map[int32]string{ - 0: "GRAPH_DRIVER_CHANGE_TYPE_NONE", - 1: "GRAPH_DRIVER_CHANGE_TYPE_MODIFIED", - 2: "GRAPH_DRIVER_CHANGE_TYPE_ADDED", - 3: "GRAPH_DRIVER_CHANGE_TYPE_DELETED", - } - GraphDriverChangeType_value = map[string]int32{ - "GRAPH_DRIVER_CHANGE_TYPE_NONE": 0, - "GRAPH_DRIVER_CHANGE_TYPE_MODIFIED": 1, - "GRAPH_DRIVER_CHANGE_TYPE_ADDED": 2, - "GRAPH_DRIVER_CHANGE_TYPE_DELETED": 3, - } -) - -func (x GraphDriverChangeType) Enum() *GraphDriverChangeType { - p := new(GraphDriverChangeType) - *p = x - return p -} - -func (x GraphDriverChangeType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (GraphDriverChangeType) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[3].Descriptor() +var GraphDriverChangeType_name = map[int32]string{ + 0: "GRAPH_DRIVER_CHANGE_TYPE_NONE", + 1: "GRAPH_DRIVER_CHANGE_TYPE_MODIFIED", + 2: "GRAPH_DRIVER_CHANGE_TYPE_ADDED", + 3: "GRAPH_DRIVER_CHANGE_TYPE_DELETED", } - -func (GraphDriverChangeType) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[3] +var GraphDriverChangeType_value = map[string]int32{ + "GRAPH_DRIVER_CHANGE_TYPE_NONE": 0, + "GRAPH_DRIVER_CHANGE_TYPE_MODIFIED": 1, + "GRAPH_DRIVER_CHANGE_TYPE_ADDED": 2, + "GRAPH_DRIVER_CHANGE_TYPE_DELETED": 3, } -func (x GraphDriverChangeType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x GraphDriverChangeType) String() string { + return proto.EnumName(GraphDriverChangeType_name, int32(x)) } - -// Deprecated: Use GraphDriverChangeType.Descriptor instead. func (GraphDriverChangeType) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{3} + return fileDescriptor_api_bc0eb0e06839944e, []int{3} } type SeverityType int32 @@ -312,47 +208,24 @@ const ( SeverityType_SEVERITY_TYPE_NOTIFY SeverityType = 3 ) -// Enum value maps for SeverityType. -var ( - SeverityType_name = map[int32]string{ - 0: "SEVERITY_TYPE_NONE", - 1: "SEVERITY_TYPE_ALARM", - 2: "SEVERITY_TYPE_WARNING", - 3: "SEVERITY_TYPE_NOTIFY", - } - SeverityType_value = map[string]int32{ - "SEVERITY_TYPE_NONE": 0, - "SEVERITY_TYPE_ALARM": 1, - "SEVERITY_TYPE_WARNING": 2, - "SEVERITY_TYPE_NOTIFY": 3, - } -) - -func (x SeverityType) Enum() *SeverityType { - p := new(SeverityType) - *p = x - return p -} - -func (x SeverityType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SeverityType) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[4].Descriptor() +var SeverityType_name = map[int32]string{ + 0: "SEVERITY_TYPE_NONE", + 1: "SEVERITY_TYPE_ALARM", + 2: "SEVERITY_TYPE_WARNING", + 3: "SEVERITY_TYPE_NOTIFY", } - -func (SeverityType) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[4] +var SeverityType_value = map[string]int32{ + "SEVERITY_TYPE_NONE": 0, + "SEVERITY_TYPE_ALARM": 1, + "SEVERITY_TYPE_WARNING": 2, + "SEVERITY_TYPE_NOTIFY": 3, } -func (x SeverityType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x SeverityType) String() string { + return proto.EnumName(SeverityType_name, int32(x)) } - -// Deprecated: Use SeverityType.Descriptor instead. func (SeverityType) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{4} + return fileDescriptor_api_bc0eb0e06839944e, []int{4} } type ResourceType int32 @@ -366,51 +239,28 @@ const ( ResourceType_RESOURCE_TYPE_POOL ResourceType = 5 ) -// Enum value maps for ResourceType. -var ( - ResourceType_name = map[int32]string{ - 0: "RESOURCE_TYPE_NONE", - 1: "RESOURCE_TYPE_VOLUME", - 2: "RESOURCE_TYPE_NODE", - 3: "RESOURCE_TYPE_CLUSTER", - 4: "RESOURCE_TYPE_DRIVE", - 5: "RESOURCE_TYPE_POOL", - } - ResourceType_value = map[string]int32{ - "RESOURCE_TYPE_NONE": 0, - "RESOURCE_TYPE_VOLUME": 1, - "RESOURCE_TYPE_NODE": 2, - "RESOURCE_TYPE_CLUSTER": 3, - "RESOURCE_TYPE_DRIVE": 4, - "RESOURCE_TYPE_POOL": 5, - } -) - -func (x ResourceType) Enum() *ResourceType { - p := new(ResourceType) - *p = x - return p -} - -func (x ResourceType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ResourceType) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[5].Descriptor() +var ResourceType_name = map[int32]string{ + 0: "RESOURCE_TYPE_NONE", + 1: "RESOURCE_TYPE_VOLUME", + 2: "RESOURCE_TYPE_NODE", + 3: "RESOURCE_TYPE_CLUSTER", + 4: "RESOURCE_TYPE_DRIVE", + 5: "RESOURCE_TYPE_POOL", } - -func (ResourceType) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[5] +var ResourceType_value = map[string]int32{ + "RESOURCE_TYPE_NONE": 0, + "RESOURCE_TYPE_VOLUME": 1, + "RESOURCE_TYPE_NODE": 2, + "RESOURCE_TYPE_CLUSTER": 3, + "RESOURCE_TYPE_DRIVE": 4, + "RESOURCE_TYPE_POOL": 5, } -func (x ResourceType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x ResourceType) String() string { + return proto.EnumName(ResourceType_name, int32(x)) } - -// Deprecated: Use ResourceType.Descriptor instead. func (ResourceType) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{5} + return fileDescriptor_api_bc0eb0e06839944e, []int{5} } type AlertActionType int32 @@ -422,47 +272,24 @@ const ( AlertActionType_ALERT_ACTION_TYPE_UPDATE AlertActionType = 3 ) -// Enum value maps for AlertActionType. -var ( - AlertActionType_name = map[int32]string{ - 0: "ALERT_ACTION_TYPE_NONE", - 1: "ALERT_ACTION_TYPE_DELETE", - 2: "ALERT_ACTION_TYPE_CREATE", - 3: "ALERT_ACTION_TYPE_UPDATE", - } - AlertActionType_value = map[string]int32{ - "ALERT_ACTION_TYPE_NONE": 0, - "ALERT_ACTION_TYPE_DELETE": 1, - "ALERT_ACTION_TYPE_CREATE": 2, - "ALERT_ACTION_TYPE_UPDATE": 3, - } -) - -func (x AlertActionType) Enum() *AlertActionType { - p := new(AlertActionType) - *p = x - return p +var AlertActionType_name = map[int32]string{ + 0: "ALERT_ACTION_TYPE_NONE", + 1: "ALERT_ACTION_TYPE_DELETE", + 2: "ALERT_ACTION_TYPE_CREATE", + 3: "ALERT_ACTION_TYPE_UPDATE", } - -func (x AlertActionType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (AlertActionType) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[6].Descriptor() +var AlertActionType_value = map[string]int32{ + "ALERT_ACTION_TYPE_NONE": 0, + "ALERT_ACTION_TYPE_DELETE": 1, + "ALERT_ACTION_TYPE_CREATE": 2, + "ALERT_ACTION_TYPE_UPDATE": 3, } -func (AlertActionType) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[6] -} - -func (x AlertActionType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x AlertActionType) String() string { + return proto.EnumName(AlertActionType_name, int32(x)) } - -// Deprecated: Use AlertActionType.Descriptor instead. func (AlertActionType) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{6} + return fileDescriptor_api_bc0eb0e06839944e, []int{6} } type VolumeActionParam int32 @@ -475,45 +302,22 @@ const ( VolumeActionParam_VOLUME_ACTION_PARAM_ON VolumeActionParam = 2 ) -// Enum value maps for VolumeActionParam. -var ( - VolumeActionParam_name = map[int32]string{ - 0: "VOLUME_ACTION_PARAM_NONE", - 1: "VOLUME_ACTION_PARAM_OFF", - 2: "VOLUME_ACTION_PARAM_ON", - } - VolumeActionParam_value = map[string]int32{ - "VOLUME_ACTION_PARAM_NONE": 0, - "VOLUME_ACTION_PARAM_OFF": 1, - "VOLUME_ACTION_PARAM_ON": 2, - } -) - -func (x VolumeActionParam) Enum() *VolumeActionParam { - p := new(VolumeActionParam) - *p = x - return p -} - -func (x VolumeActionParam) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (VolumeActionParam) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[7].Descriptor() +var VolumeActionParam_name = map[int32]string{ + 0: "VOLUME_ACTION_PARAM_NONE", + 1: "VOLUME_ACTION_PARAM_OFF", + 2: "VOLUME_ACTION_PARAM_ON", } - -func (VolumeActionParam) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[7] +var VolumeActionParam_value = map[string]int32{ + "VOLUME_ACTION_PARAM_NONE": 0, + "VOLUME_ACTION_PARAM_OFF": 1, + "VOLUME_ACTION_PARAM_ON": 2, } -func (x VolumeActionParam) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x VolumeActionParam) String() string { + return proto.EnumName(VolumeActionParam_name, int32(x)) } - -// Deprecated: Use VolumeActionParam.Descriptor instead. func (VolumeActionParam) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{7} + return fileDescriptor_api_bc0eb0e06839944e, []int{7} } type CosType int32 @@ -525,47 +329,24 @@ const ( CosType_HIGH CosType = 3 ) -// Enum value maps for CosType. -var ( - CosType_name = map[int32]string{ - 0: "NONE", - 1: "LOW", - 2: "MEDIUM", - 3: "HIGH", - } - CosType_value = map[string]int32{ - "NONE": 0, - "LOW": 1, - "MEDIUM": 2, - "HIGH": 3, - } -) - -func (x CosType) Enum() *CosType { - p := new(CosType) - *p = x - return p +var CosType_name = map[int32]string{ + 0: "NONE", + 1: "LOW", + 2: "MEDIUM", + 3: "HIGH", } - -func (x CosType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (CosType) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[8].Descriptor() +var CosType_value = map[string]int32{ + "NONE": 0, + "LOW": 1, + "MEDIUM": 2, + "HIGH": 3, } -func (CosType) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[8] -} - -func (x CosType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x CosType) String() string { + return proto.EnumName(CosType_name, int32(x)) } - -// Deprecated: Use CosType.Descriptor instead. func (CosType) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{8} + return fileDescriptor_api_bc0eb0e06839944e, []int{8} } type IoProfile int32 @@ -583,59 +364,36 @@ const ( IoProfile_IO_PROFILE_AUTO_JOURNAL IoProfile = 9 ) -// Enum value maps for IoProfile. -var ( - IoProfile_name = map[int32]string{ - 0: "IO_PROFILE_SEQUENTIAL", - 1: "IO_PROFILE_RANDOM", - 2: "IO_PROFILE_DB", - 3: "IO_PROFILE_DB_REMOTE", - 4: "IO_PROFILE_CMS", - 5: "IO_PROFILE_SYNC_SHARED", - 6: "IO_PROFILE_AUTO", - 7: "IO_PROFILE_NONE", - 8: "IO_PROFILE_JOURNAL", - 9: "IO_PROFILE_AUTO_JOURNAL", - } - IoProfile_value = map[string]int32{ - "IO_PROFILE_SEQUENTIAL": 0, - "IO_PROFILE_RANDOM": 1, - "IO_PROFILE_DB": 2, - "IO_PROFILE_DB_REMOTE": 3, - "IO_PROFILE_CMS": 4, - "IO_PROFILE_SYNC_SHARED": 5, - "IO_PROFILE_AUTO": 6, - "IO_PROFILE_NONE": 7, - "IO_PROFILE_JOURNAL": 8, - "IO_PROFILE_AUTO_JOURNAL": 9, - } -) - -func (x IoProfile) Enum() *IoProfile { - p := new(IoProfile) - *p = x - return p +var IoProfile_name = map[int32]string{ + 0: "IO_PROFILE_SEQUENTIAL", + 1: "IO_PROFILE_RANDOM", + 2: "IO_PROFILE_DB", + 3: "IO_PROFILE_DB_REMOTE", + 4: "IO_PROFILE_CMS", + 5: "IO_PROFILE_SYNC_SHARED", + 6: "IO_PROFILE_AUTO", + 7: "IO_PROFILE_NONE", + 8: "IO_PROFILE_JOURNAL", + 9: "IO_PROFILE_AUTO_JOURNAL", +} +var IoProfile_value = map[string]int32{ + "IO_PROFILE_SEQUENTIAL": 0, + "IO_PROFILE_RANDOM": 1, + "IO_PROFILE_DB": 2, + "IO_PROFILE_DB_REMOTE": 3, + "IO_PROFILE_CMS": 4, + "IO_PROFILE_SYNC_SHARED": 5, + "IO_PROFILE_AUTO": 6, + "IO_PROFILE_NONE": 7, + "IO_PROFILE_JOURNAL": 8, + "IO_PROFILE_AUTO_JOURNAL": 9, } func (x IoProfile) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (IoProfile) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[9].Descriptor() -} - -func (IoProfile) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[9] -} - -func (x IoProfile) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) + return proto.EnumName(IoProfile_name, int32(x)) } - -// Deprecated: Use IoProfile.Descriptor instead. func (IoProfile) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{9} + return fileDescriptor_api_bc0eb0e06839944e, []int{9} } // VolumeState represents the state of a volume. @@ -664,59 +422,36 @@ const ( VolumeState_VOLUME_STATE_RESTORE VolumeState = 9 ) -// Enum value maps for VolumeState. -var ( - VolumeState_name = map[int32]string{ - 0: "VOLUME_STATE_NONE", - 1: "VOLUME_STATE_PENDING", - 2: "VOLUME_STATE_AVAILABLE", - 3: "VOLUME_STATE_ATTACHED", - 4: "VOLUME_STATE_DETACHED", - 5: "VOLUME_STATE_DETATCHING", - 6: "VOLUME_STATE_ERROR", - 7: "VOLUME_STATE_DELETED", - 8: "VOLUME_STATE_TRY_DETACHING", - 9: "VOLUME_STATE_RESTORE", - } - VolumeState_value = map[string]int32{ - "VOLUME_STATE_NONE": 0, - "VOLUME_STATE_PENDING": 1, - "VOLUME_STATE_AVAILABLE": 2, - "VOLUME_STATE_ATTACHED": 3, - "VOLUME_STATE_DETACHED": 4, - "VOLUME_STATE_DETATCHING": 5, - "VOLUME_STATE_ERROR": 6, - "VOLUME_STATE_DELETED": 7, - "VOLUME_STATE_TRY_DETACHING": 8, - "VOLUME_STATE_RESTORE": 9, - } -) - -func (x VolumeState) Enum() *VolumeState { - p := new(VolumeState) - *p = x - return p +var VolumeState_name = map[int32]string{ + 0: "VOLUME_STATE_NONE", + 1: "VOLUME_STATE_PENDING", + 2: "VOLUME_STATE_AVAILABLE", + 3: "VOLUME_STATE_ATTACHED", + 4: "VOLUME_STATE_DETACHED", + 5: "VOLUME_STATE_DETATCHING", + 6: "VOLUME_STATE_ERROR", + 7: "VOLUME_STATE_DELETED", + 8: "VOLUME_STATE_TRY_DETACHING", + 9: "VOLUME_STATE_RESTORE", +} +var VolumeState_value = map[string]int32{ + "VOLUME_STATE_NONE": 0, + "VOLUME_STATE_PENDING": 1, + "VOLUME_STATE_AVAILABLE": 2, + "VOLUME_STATE_ATTACHED": 3, + "VOLUME_STATE_DETACHED": 4, + "VOLUME_STATE_DETATCHING": 5, + "VOLUME_STATE_ERROR": 6, + "VOLUME_STATE_DELETED": 7, + "VOLUME_STATE_TRY_DETACHING": 8, + "VOLUME_STATE_RESTORE": 9, } func (x VolumeState) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (VolumeState) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[10].Descriptor() -} - -func (VolumeState) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[10] -} - -func (x VolumeState) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) + return proto.EnumName(VolumeState_name, int32(x)) } - -// Deprecated: Use VolumeState.Descriptor instead. func (VolumeState) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{10} + return fileDescriptor_api_bc0eb0e06839944e, []int{10} } // VolumeStatus represents a health status for a volume. @@ -735,49 +470,26 @@ const ( VolumeStatus_VOLUME_STATUS_DEGRADED VolumeStatus = 4 ) -// Enum value maps for VolumeStatus. -var ( - VolumeStatus_name = map[int32]string{ - 0: "VOLUME_STATUS_NONE", - 1: "VOLUME_STATUS_NOT_PRESENT", - 2: "VOLUME_STATUS_UP", - 3: "VOLUME_STATUS_DOWN", - 4: "VOLUME_STATUS_DEGRADED", - } - VolumeStatus_value = map[string]int32{ - "VOLUME_STATUS_NONE": 0, - "VOLUME_STATUS_NOT_PRESENT": 1, - "VOLUME_STATUS_UP": 2, - "VOLUME_STATUS_DOWN": 3, - "VOLUME_STATUS_DEGRADED": 4, - } -) - -func (x VolumeStatus) Enum() *VolumeStatus { - p := new(VolumeStatus) - *p = x - return p -} - -func (x VolumeStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (VolumeStatus) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[11].Descriptor() +var VolumeStatus_name = map[int32]string{ + 0: "VOLUME_STATUS_NONE", + 1: "VOLUME_STATUS_NOT_PRESENT", + 2: "VOLUME_STATUS_UP", + 3: "VOLUME_STATUS_DOWN", + 4: "VOLUME_STATUS_DEGRADED", } - -func (VolumeStatus) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[11] +var VolumeStatus_value = map[string]int32{ + "VOLUME_STATUS_NONE": 0, + "VOLUME_STATUS_NOT_PRESENT": 1, + "VOLUME_STATUS_UP": 2, + "VOLUME_STATUS_DOWN": 3, + "VOLUME_STATUS_DEGRADED": 4, } -func (x VolumeStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x VolumeStatus) String() string { + return proto.EnumName(VolumeStatus_name, int32(x)) } - -// Deprecated: Use VolumeStatus.Descriptor instead. func (VolumeStatus) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{11} + return fileDescriptor_api_bc0eb0e06839944e, []int{11} } type FilesystemHealthStatus int32 @@ -794,47 +506,24 @@ const ( FilesystemHealthStatus_FS_HEALTH_STATUS_NEEDS_INSPECTION FilesystemHealthStatus = 3 ) -// Enum value maps for FilesystemHealthStatus. -var ( - FilesystemHealthStatus_name = map[int32]string{ - 0: "FS_HEALTH_STATUS_UNKNOWN", - 1: "FS_HEALTH_STATUS_HEALTHY", - 2: "FS_HEALTH_STATUS_SAFE_TO_FIX", - 3: "FS_HEALTH_STATUS_NEEDS_INSPECTION", - } - FilesystemHealthStatus_value = map[string]int32{ - "FS_HEALTH_STATUS_UNKNOWN": 0, - "FS_HEALTH_STATUS_HEALTHY": 1, - "FS_HEALTH_STATUS_SAFE_TO_FIX": 2, - "FS_HEALTH_STATUS_NEEDS_INSPECTION": 3, - } -) - -func (x FilesystemHealthStatus) Enum() *FilesystemHealthStatus { - p := new(FilesystemHealthStatus) - *p = x - return p -} - -func (x FilesystemHealthStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FilesystemHealthStatus) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[12].Descriptor() +var FilesystemHealthStatus_name = map[int32]string{ + 0: "FS_HEALTH_STATUS_UNKNOWN", + 1: "FS_HEALTH_STATUS_HEALTHY", + 2: "FS_HEALTH_STATUS_SAFE_TO_FIX", + 3: "FS_HEALTH_STATUS_NEEDS_INSPECTION", } - -func (FilesystemHealthStatus) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[12] +var FilesystemHealthStatus_value = map[string]int32{ + "FS_HEALTH_STATUS_UNKNOWN": 0, + "FS_HEALTH_STATUS_HEALTHY": 1, + "FS_HEALTH_STATUS_SAFE_TO_FIX": 2, + "FS_HEALTH_STATUS_NEEDS_INSPECTION": 3, } -func (x FilesystemHealthStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x FilesystemHealthStatus) String() string { + return proto.EnumName(FilesystemHealthStatus_name, int32(x)) } - -// Deprecated: Use FilesystemHealthStatus.Descriptor instead. func (FilesystemHealthStatus) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{12} + return fileDescriptor_api_bc0eb0e06839944e, []int{12} } type StorageMedium int32 @@ -848,45 +537,22 @@ const ( StorageMedium_STORAGE_MEDIUM_NVME StorageMedium = 2 ) -// Enum value maps for StorageMedium. -var ( - StorageMedium_name = map[int32]string{ - 0: "STORAGE_MEDIUM_MAGNETIC", - 1: "STORAGE_MEDIUM_SSD", - 2: "STORAGE_MEDIUM_NVME", - } - StorageMedium_value = map[string]int32{ - "STORAGE_MEDIUM_MAGNETIC": 0, - "STORAGE_MEDIUM_SSD": 1, - "STORAGE_MEDIUM_NVME": 2, - } -) - -func (x StorageMedium) Enum() *StorageMedium { - p := new(StorageMedium) - *p = x - return p -} - -func (x StorageMedium) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (StorageMedium) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[13].Descriptor() +var StorageMedium_name = map[int32]string{ + 0: "STORAGE_MEDIUM_MAGNETIC", + 1: "STORAGE_MEDIUM_SSD", + 2: "STORAGE_MEDIUM_NVME", } - -func (StorageMedium) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[13] +var StorageMedium_value = map[string]int32{ + "STORAGE_MEDIUM_MAGNETIC": 0, + "STORAGE_MEDIUM_SSD": 1, + "STORAGE_MEDIUM_NVME": 2, } -func (x StorageMedium) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x StorageMedium) String() string { + return proto.EnumName(StorageMedium_name, int32(x)) } - -// Deprecated: Use StorageMedium.Descriptor instead. func (StorageMedium) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{13} + return fileDescriptor_api_bc0eb0e06839944e, []int{13} } type AttachState int32 @@ -900,45 +566,22 @@ const ( AttachState_ATTACH_STATE_INTERNAL_SWITCH AttachState = 2 ) -// Enum value maps for AttachState. -var ( - AttachState_name = map[int32]string{ - 0: "ATTACH_STATE_EXTERNAL", - 1: "ATTACH_STATE_INTERNAL", - 2: "ATTACH_STATE_INTERNAL_SWITCH", - } - AttachState_value = map[string]int32{ - "ATTACH_STATE_EXTERNAL": 0, - "ATTACH_STATE_INTERNAL": 1, - "ATTACH_STATE_INTERNAL_SWITCH": 2, - } -) - -func (x AttachState) Enum() *AttachState { - p := new(AttachState) - *p = x - return p -} - -func (x AttachState) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (AttachState) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[14].Descriptor() +var AttachState_name = map[int32]string{ + 0: "ATTACH_STATE_EXTERNAL", + 1: "ATTACH_STATE_INTERNAL", + 2: "ATTACH_STATE_INTERNAL_SWITCH", } - -func (AttachState) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[14] +var AttachState_value = map[string]int32{ + "ATTACH_STATE_EXTERNAL": 0, + "ATTACH_STATE_INTERNAL": 1, + "ATTACH_STATE_INTERNAL_SWITCH": 2, } -func (x AttachState) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x AttachState) String() string { + return proto.EnumName(AttachState_name, int32(x)) } - -// Deprecated: Use AttachState.Descriptor instead. func (AttachState) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{14} + return fileDescriptor_api_bc0eb0e06839944e, []int{14} } type OperationFlags int32 @@ -950,45 +593,22 @@ const ( OperationFlags_OP_FLAGS_DETACH_FORCE OperationFlags = 2 ) -// Enum value maps for OperationFlags. -var ( - OperationFlags_name = map[int32]string{ - 0: "OP_FLAGS_UNKNOWN", - 1: "OP_FLAGS_NONE", - 2: "OP_FLAGS_DETACH_FORCE", - } - OperationFlags_value = map[string]int32{ - "OP_FLAGS_UNKNOWN": 0, - "OP_FLAGS_NONE": 1, - "OP_FLAGS_DETACH_FORCE": 2, - } -) - -func (x OperationFlags) Enum() *OperationFlags { - p := new(OperationFlags) - *p = x - return p -} - -func (x OperationFlags) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (OperationFlags) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[15].Descriptor() +var OperationFlags_name = map[int32]string{ + 0: "OP_FLAGS_UNKNOWN", + 1: "OP_FLAGS_NONE", + 2: "OP_FLAGS_DETACH_FORCE", } - -func (OperationFlags) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[15] +var OperationFlags_value = map[string]int32{ + "OP_FLAGS_UNKNOWN": 0, + "OP_FLAGS_NONE": 1, + "OP_FLAGS_DETACH_FORCE": 2, } -func (x OperationFlags) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x OperationFlags) String() string { + return proto.EnumName(OperationFlags_name, int32(x)) } - -// Deprecated: Use OperationFlags.Descriptor instead. func (OperationFlags) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{15} + return fileDescriptor_api_bc0eb0e06839944e, []int{15} } type HardwareType int32 @@ -1002,45 +622,22 @@ const ( HardwareType_BareMetalMachine HardwareType = 2 ) -// Enum value maps for HardwareType. -var ( - HardwareType_name = map[int32]string{ - 0: "UnknownMachine", - 1: "VirtualMachine", - 2: "BareMetalMachine", - } - HardwareType_value = map[string]int32{ - "UnknownMachine": 0, - "VirtualMachine": 1, - "BareMetalMachine": 2, - } -) - -func (x HardwareType) Enum() *HardwareType { - p := new(HardwareType) - *p = x - return p -} - -func (x HardwareType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (HardwareType) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[16].Descriptor() +var HardwareType_name = map[int32]string{ + 0: "UnknownMachine", + 1: "VirtualMachine", + 2: "BareMetalMachine", } - -func (HardwareType) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[16] +var HardwareType_value = map[string]int32{ + "UnknownMachine": 0, + "VirtualMachine": 1, + "BareMetalMachine": 2, } -func (x HardwareType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x HardwareType) String() string { + return proto.EnumName(HardwareType_name, int32(x)) } - -// Deprecated: Use HardwareType.Descriptor instead. func (HardwareType) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{16} + return fileDescriptor_api_bc0eb0e06839944e, []int{16} } // ExportProtocol defines how the device is exported.. @@ -1049,59 +646,36 @@ type ExportProtocol int32 const ( // Invalid uninitialized value ExportProtocol_INVALID ExportProtocol = 0 - // PXD the volume is exported over Portworx block interface. + // PXD the volume is exported over Portworx block interace. ExportProtocol_PXD ExportProtocol = 1 // ISCSI the volume is exported over ISCSI. ExportProtocol_ISCSI ExportProtocol = 2 // NFS the volume is exported over NFS. ExportProtocol_NFS ExportProtocol = 3 - // Custom the volume is exported over custom interface. + // Custom the volume is exported over custom interace. ExportProtocol_CUSTOM ExportProtocol = 4 ) -// Enum value maps for ExportProtocol. -var ( - ExportProtocol_name = map[int32]string{ - 0: "INVALID", - 1: "PXD", - 2: "ISCSI", - 3: "NFS", - 4: "CUSTOM", - } - ExportProtocol_value = map[string]int32{ - "INVALID": 0, - "PXD": 1, - "ISCSI": 2, - "NFS": 3, - "CUSTOM": 4, - } -) - -func (x ExportProtocol) Enum() *ExportProtocol { - p := new(ExportProtocol) - *p = x - return p -} - -func (x ExportProtocol) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ExportProtocol) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[17].Descriptor() +var ExportProtocol_name = map[int32]string{ + 0: "INVALID", + 1: "PXD", + 2: "ISCSI", + 3: "NFS", + 4: "CUSTOM", } - -func (ExportProtocol) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[17] +var ExportProtocol_value = map[string]int32{ + "INVALID": 0, + "PXD": 1, + "ISCSI": 2, + "NFS": 3, + "CUSTOM": 4, } -func (x ExportProtocol) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x ExportProtocol) String() string { + return proto.EnumName(ExportProtocol_name, int32(x)) } - -// Deprecated: Use ExportProtocol.Descriptor instead. func (ExportProtocol) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{17} + return fileDescriptor_api_bc0eb0e06839944e, []int{17} } // ProxyProtocol defines the protocol used for proxy. @@ -1123,51 +697,28 @@ const ( ProxyProtocol_PROXY_PROTOCOL_PURE_FILE ProxyProtocol = 5 ) -// Enum value maps for ProxyProtocol. -var ( - ProxyProtocol_name = map[int32]string{ - 0: "PROXY_PROTOCOL_INVALID", - 1: "PROXY_PROTOCOL_NFS", - 2: "PROXY_PROTOCOL_S3", - 3: "PROXY_PROTOCOL_PXD", - 4: "PROXY_PROTOCOL_PURE_BLOCK", - 5: "PROXY_PROTOCOL_PURE_FILE", - } - ProxyProtocol_value = map[string]int32{ - "PROXY_PROTOCOL_INVALID": 0, - "PROXY_PROTOCOL_NFS": 1, - "PROXY_PROTOCOL_S3": 2, - "PROXY_PROTOCOL_PXD": 3, - "PROXY_PROTOCOL_PURE_BLOCK": 4, - "PROXY_PROTOCOL_PURE_FILE": 5, - } -) - -func (x ProxyProtocol) Enum() *ProxyProtocol { - p := new(ProxyProtocol) - *p = x - return p -} - -func (x ProxyProtocol) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ProxyProtocol) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[18].Descriptor() +var ProxyProtocol_name = map[int32]string{ + 0: "PROXY_PROTOCOL_INVALID", + 1: "PROXY_PROTOCOL_NFS", + 2: "PROXY_PROTOCOL_S3", + 3: "PROXY_PROTOCOL_PXD", + 4: "PROXY_PROTOCOL_PURE_BLOCK", + 5: "PROXY_PROTOCOL_PURE_FILE", } - -func (ProxyProtocol) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[18] +var ProxyProtocol_value = map[string]int32{ + "PROXY_PROTOCOL_INVALID": 0, + "PROXY_PROTOCOL_NFS": 1, + "PROXY_PROTOCOL_S3": 2, + "PROXY_PROTOCOL_PXD": 3, + "PROXY_PROTOCOL_PURE_BLOCK": 4, + "PROXY_PROTOCOL_PURE_FILE": 5, } -func (x ProxyProtocol) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x ProxyProtocol) String() string { + return proto.EnumName(ProxyProtocol_name, int32(x)) } - -// Deprecated: Use ProxyProtocol.Descriptor instead. func (ProxyProtocol) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{18} + return fileDescriptor_api_bc0eb0e06839944e, []int{18} } // fastpath extensions @@ -1188,51 +739,28 @@ const ( FastpathStatus_FASTPATH_ERRORED FastpathStatus = 5 ) -// Enum value maps for FastpathStatus. -var ( - FastpathStatus_name = map[int32]string{ - 0: "FASTPATH_UNKNOWN", - 1: "FASTPATH_ACTIVE", - 2: "FASTPATH_INACTIVE", - 3: "FASTPATH_UNSUPPORTED", - 4: "FASTPATH_PENDING", - 5: "FASTPATH_ERRORED", - } - FastpathStatus_value = map[string]int32{ - "FASTPATH_UNKNOWN": 0, - "FASTPATH_ACTIVE": 1, - "FASTPATH_INACTIVE": 2, - "FASTPATH_UNSUPPORTED": 3, - "FASTPATH_PENDING": 4, - "FASTPATH_ERRORED": 5, - } -) - -func (x FastpathStatus) Enum() *FastpathStatus { - p := new(FastpathStatus) - *p = x - return p -} - -func (x FastpathStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FastpathStatus) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[19].Descriptor() +var FastpathStatus_name = map[int32]string{ + 0: "FASTPATH_UNKNOWN", + 1: "FASTPATH_ACTIVE", + 2: "FASTPATH_INACTIVE", + 3: "FASTPATH_UNSUPPORTED", + 4: "FASTPATH_PENDING", + 5: "FASTPATH_ERRORED", } - -func (FastpathStatus) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[19] +var FastpathStatus_value = map[string]int32{ + "FASTPATH_UNKNOWN": 0, + "FASTPATH_ACTIVE": 1, + "FASTPATH_INACTIVE": 2, + "FASTPATH_UNSUPPORTED": 3, + "FASTPATH_PENDING": 4, + "FASTPATH_ERRORED": 5, } -func (x FastpathStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x FastpathStatus) String() string { + return proto.EnumName(FastpathStatus_name, int32(x)) } - -// Deprecated: Use FastpathStatus.Descriptor instead. func (FastpathStatus) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{19} + return fileDescriptor_api_bc0eb0e06839944e, []int{19} } type FastpathProtocol int32 @@ -1244,47 +772,24 @@ const ( FastpathProtocol_FASTPATH_PROTO_LOCAL FastpathProtocol = 3 ) -// Enum value maps for FastpathProtocol. -var ( - FastpathProtocol_name = map[int32]string{ - 0: "FASTPATH_PROTO_UNKNOWN", - 1: "FASTPATH_PROTO_NVMEOF_TCP", - 2: "FASTPATH_PROTO_ISCSI", - 3: "FASTPATH_PROTO_LOCAL", - } - FastpathProtocol_value = map[string]int32{ - "FASTPATH_PROTO_UNKNOWN": 0, - "FASTPATH_PROTO_NVMEOF_TCP": 1, - "FASTPATH_PROTO_ISCSI": 2, - "FASTPATH_PROTO_LOCAL": 3, - } -) - -func (x FastpathProtocol) Enum() *FastpathProtocol { - p := new(FastpathProtocol) - *p = x - return p +var FastpathProtocol_name = map[int32]string{ + 0: "FASTPATH_PROTO_UNKNOWN", + 1: "FASTPATH_PROTO_NVMEOF_TCP", + 2: "FASTPATH_PROTO_ISCSI", + 3: "FASTPATH_PROTO_LOCAL", } - -func (x FastpathProtocol) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FastpathProtocol) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[20].Descriptor() +var FastpathProtocol_value = map[string]int32{ + "FASTPATH_PROTO_UNKNOWN": 0, + "FASTPATH_PROTO_NVMEOF_TCP": 1, + "FASTPATH_PROTO_ISCSI": 2, + "FASTPATH_PROTO_LOCAL": 3, } -func (FastpathProtocol) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[20] -} - -func (x FastpathProtocol) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x FastpathProtocol) String() string { + return proto.EnumName(FastpathProtocol_name, int32(x)) } - -// Deprecated: Use FastpathProtocol.Descriptor instead. func (FastpathProtocol) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{20} + return fileDescriptor_api_bc0eb0e06839944e, []int{20} } type NearSyncReplicationStrategy int32 @@ -1295,45 +800,22 @@ const ( NearSyncReplicationStrategy_NEAR_SYNC_STRATEGY_OPTIMIZED NearSyncReplicationStrategy = 2 ) -// Enum value maps for NearSyncReplicationStrategy. -var ( - NearSyncReplicationStrategy_name = map[int32]string{ - 0: "NEAR_SYNC_STRATEGY_NONE", - 1: "NEAR_SYNC_STRATEGY_AGGRESSIVE", - 2: "NEAR_SYNC_STRATEGY_OPTIMIZED", - } - NearSyncReplicationStrategy_value = map[string]int32{ - "NEAR_SYNC_STRATEGY_NONE": 0, - "NEAR_SYNC_STRATEGY_AGGRESSIVE": 1, - "NEAR_SYNC_STRATEGY_OPTIMIZED": 2, - } -) - -func (x NearSyncReplicationStrategy) Enum() *NearSyncReplicationStrategy { - p := new(NearSyncReplicationStrategy) - *p = x - return p +var NearSyncReplicationStrategy_name = map[int32]string{ + 0: "NEAR_SYNC_STRATEGY_NONE", + 1: "NEAR_SYNC_STRATEGY_AGGRESSIVE", + 2: "NEAR_SYNC_STRATEGY_OPTIMIZED", +} +var NearSyncReplicationStrategy_value = map[string]int32{ + "NEAR_SYNC_STRATEGY_NONE": 0, + "NEAR_SYNC_STRATEGY_AGGRESSIVE": 1, + "NEAR_SYNC_STRATEGY_OPTIMIZED": 2, } func (x NearSyncReplicationStrategy) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) + return proto.EnumName(NearSyncReplicationStrategy_name, int32(x)) } - -func (NearSyncReplicationStrategy) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[21].Descriptor() -} - -func (NearSyncReplicationStrategy) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[21] -} - -func (x NearSyncReplicationStrategy) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use NearSyncReplicationStrategy.Descriptor instead. -func (NearSyncReplicationStrategy) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{21} +func (NearSyncReplicationStrategy) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{21} } type AnonymousBucketAccessMode int32 @@ -1350,49 +832,26 @@ const ( AnonymousBucketAccessMode_ReadWrite AnonymousBucketAccessMode = 4 ) -// Enum value maps for AnonymousBucketAccessMode. -var ( - AnonymousBucketAccessMode_name = map[int32]string{ - 0: "UnknownBucketAccessMode", - 1: "Private", - 2: "ReadOnly", - 3: "WriteOnly", - 4: "ReadWrite", - } - AnonymousBucketAccessMode_value = map[string]int32{ - "UnknownBucketAccessMode": 0, - "Private": 1, - "ReadOnly": 2, - "WriteOnly": 3, - "ReadWrite": 4, - } -) - -func (x AnonymousBucketAccessMode) Enum() *AnonymousBucketAccessMode { - p := new(AnonymousBucketAccessMode) - *p = x - return p -} - -func (x AnonymousBucketAccessMode) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (AnonymousBucketAccessMode) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[22].Descriptor() +var AnonymousBucketAccessMode_name = map[int32]string{ + 0: "UnknownBucketAccessMode", + 1: "Private", + 2: "ReadOnly", + 3: "WriteOnly", + 4: "ReadWrite", } - -func (AnonymousBucketAccessMode) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[22] +var AnonymousBucketAccessMode_value = map[string]int32{ + "UnknownBucketAccessMode": 0, + "Private": 1, + "ReadOnly": 2, + "WriteOnly": 3, + "ReadWrite": 4, } -func (x AnonymousBucketAccessMode) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x AnonymousBucketAccessMode) String() string { + return proto.EnumName(AnonymousBucketAccessMode_name, int32(x)) } - -// Deprecated: Use AnonymousBucketAccessMode.Descriptor instead. func (AnonymousBucketAccessMode) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{22} + return fileDescriptor_api_bc0eb0e06839944e, []int{22} } // Defines times of day @@ -1415,53 +874,30 @@ const ( SdkTimeWeekday_SdkTimeWeekdaySaturday SdkTimeWeekday = 6 ) -// Enum value maps for SdkTimeWeekday. -var ( - SdkTimeWeekday_name = map[int32]string{ - 0: "SdkTimeWeekdaySunday", - 1: "SdkTimeWeekdayMonday", - 2: "SdkTimeWeekdayTuesday", - 3: "SdkTimeWeekdayWednesday", - 4: "SdkTimeWeekdayThursday", - 5: "SdkTimeWeekdayFriday", - 6: "SdkTimeWeekdaySaturday", - } - SdkTimeWeekday_value = map[string]int32{ - "SdkTimeWeekdaySunday": 0, - "SdkTimeWeekdayMonday": 1, - "SdkTimeWeekdayTuesday": 2, - "SdkTimeWeekdayWednesday": 3, - "SdkTimeWeekdayThursday": 4, - "SdkTimeWeekdayFriday": 5, - "SdkTimeWeekdaySaturday": 6, - } -) - -func (x SdkTimeWeekday) Enum() *SdkTimeWeekday { - p := new(SdkTimeWeekday) - *p = x - return p +var SdkTimeWeekday_name = map[int32]string{ + 0: "SdkTimeWeekdaySunday", + 1: "SdkTimeWeekdayMonday", + 2: "SdkTimeWeekdayTuesday", + 3: "SdkTimeWeekdayWednesday", + 4: "SdkTimeWeekdayThursday", + 5: "SdkTimeWeekdayFriday", + 6: "SdkTimeWeekdaySaturday", +} +var SdkTimeWeekday_value = map[string]int32{ + "SdkTimeWeekdaySunday": 0, + "SdkTimeWeekdayMonday": 1, + "SdkTimeWeekdayTuesday": 2, + "SdkTimeWeekdayWednesday": 3, + "SdkTimeWeekdayThursday": 4, + "SdkTimeWeekdayFriday": 5, + "SdkTimeWeekdaySaturday": 6, } func (x SdkTimeWeekday) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SdkTimeWeekday) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[23].Descriptor() -} - -func (SdkTimeWeekday) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[23] + return proto.EnumName(SdkTimeWeekday_name, int32(x)) } - -func (x SdkTimeWeekday) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use SdkTimeWeekday.Descriptor instead. func (SdkTimeWeekday) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{23} + return fileDescriptor_api_bc0eb0e06839944e, []int{23} } // StorageRebalanceJobState is an enum for state of the current rebalance operation @@ -1480,102 +916,26 @@ const ( StorageRebalanceJobState_CANCELLED StorageRebalanceJobState = 4 ) -// Enum value maps for StorageRebalanceJobState. -var ( - StorageRebalanceJobState_name = map[int32]string{ - 0: "PENDING", - 1: "RUNNING", - 2: "DONE", - 3: "PAUSED", - 4: "CANCELLED", - } - StorageRebalanceJobState_value = map[string]int32{ - "PENDING": 0, - "RUNNING": 1, - "DONE": 2, - "PAUSED": 3, - "CANCELLED": 4, - } -) - -func (x StorageRebalanceJobState) Enum() *StorageRebalanceJobState { - p := new(StorageRebalanceJobState) - *p = x - return p -} - -func (x StorageRebalanceJobState) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (StorageRebalanceJobState) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[24].Descriptor() +var StorageRebalanceJobState_name = map[int32]string{ + 0: "PENDING", + 1: "RUNNING", + 2: "DONE", + 3: "PAUSED", + 4: "CANCELLED", } - -func (StorageRebalanceJobState) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[24] +var StorageRebalanceJobState_value = map[string]int32{ + "PENDING": 0, + "RUNNING": 1, + "DONE": 2, + "PAUSED": 3, + "CANCELLED": 4, } -func (x StorageRebalanceJobState) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x StorageRebalanceJobState) String() string { + return proto.EnumName(StorageRebalanceJobState_name, int32(x)) } - -// Deprecated: Use StorageRebalanceJobState.Descriptor instead. func (StorageRebalanceJobState) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{24} -} - -// CloudBackup operations types -type SdkCloudBackupClusterType int32 - -const ( - // Unknown - SdkCloudBackupClusterType_SdkCloudBackupClusterUnknown SdkCloudBackupClusterType = 0 - // Beongs to this cluster - SdkCloudBackupClusterType_SdkCloudBackupClusterCurrent SdkCloudBackupClusterType = 1 - // not this. other cluster - SdkCloudBackupClusterType_SdkCloudBackupClusterOther SdkCloudBackupClusterType = 2 -) - -// Enum value maps for SdkCloudBackupClusterType. -var ( - SdkCloudBackupClusterType_name = map[int32]string{ - 0: "SdkCloudBackupClusterUnknown", - 1: "SdkCloudBackupClusterCurrent", - 2: "SdkCloudBackupClusterOther", - } - SdkCloudBackupClusterType_value = map[string]int32{ - "SdkCloudBackupClusterUnknown": 0, - "SdkCloudBackupClusterCurrent": 1, - "SdkCloudBackupClusterOther": 2, - } -) - -func (x SdkCloudBackupClusterType) Enum() *SdkCloudBackupClusterType { - p := new(SdkCloudBackupClusterType) - *p = x - return p -} - -func (x SdkCloudBackupClusterType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SdkCloudBackupClusterType) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[25].Descriptor() -} - -func (SdkCloudBackupClusterType) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[25] -} - -func (x SdkCloudBackupClusterType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use SdkCloudBackupClusterType.Descriptor instead. -func (SdkCloudBackupClusterType) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{25} + return fileDescriptor_api_bc0eb0e06839944e, []int{24} } // CloudBackup operations types @@ -1596,58 +956,35 @@ const ( SdkCloudBackupOpType_SdkNearSyncOpTypeRestoreOp SdkCloudBackupOpType = 5 ) -// Enum value maps for SdkCloudBackupOpType. -var ( - SdkCloudBackupOpType_name = map[int32]string{ - 0: "SdkCloudBackupOpTypeUnknown", - 1: "SdkCloudBackupOpTypeBackupOp", - 2: "SdkCloudBackupOpTypeRestoreOp", - 3: "SdkNearSyncOpTypeCloneOp", - 4: "SdkNearSyncOpTypeReplAddOp", - 5: "SdkNearSyncOpTypeRestoreOp", - } - SdkCloudBackupOpType_value = map[string]int32{ - "SdkCloudBackupOpTypeUnknown": 0, - "SdkCloudBackupOpTypeBackupOp": 1, - "SdkCloudBackupOpTypeRestoreOp": 2, - "SdkNearSyncOpTypeCloneOp": 3, - "SdkNearSyncOpTypeReplAddOp": 4, - "SdkNearSyncOpTypeRestoreOp": 5, - } -) - -func (x SdkCloudBackupOpType) Enum() *SdkCloudBackupOpType { - p := new(SdkCloudBackupOpType) - *p = x - return p -} - -func (x SdkCloudBackupOpType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SdkCloudBackupOpType) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[26].Descriptor() +var SdkCloudBackupOpType_name = map[int32]string{ + 0: "SdkCloudBackupOpTypeUnknown", + 1: "SdkCloudBackupOpTypeBackupOp", + 2: "SdkCloudBackupOpTypeRestoreOp", + 3: "SdkNearSyncOpTypeCloneOp", + 4: "SdkNearSyncOpTypeReplAddOp", + 5: "SdkNearSyncOpTypeRestoreOp", } - -func (SdkCloudBackupOpType) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[26] +var SdkCloudBackupOpType_value = map[string]int32{ + "SdkCloudBackupOpTypeUnknown": 0, + "SdkCloudBackupOpTypeBackupOp": 1, + "SdkCloudBackupOpTypeRestoreOp": 2, + "SdkNearSyncOpTypeCloneOp": 3, + "SdkNearSyncOpTypeReplAddOp": 4, + "SdkNearSyncOpTypeRestoreOp": 5, } -func (x SdkCloudBackupOpType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x SdkCloudBackupOpType) String() string { + return proto.EnumName(SdkCloudBackupOpType_name, int32(x)) } - -// Deprecated: Use SdkCloudBackupOpType.Descriptor instead. func (SdkCloudBackupOpType) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{26} + return fileDescriptor_api_bc0eb0e06839944e, []int{25} } // CloudBackup status types type SdkCloudBackupStatusType int32 const ( - // Unknown + // Unkonwn SdkCloudBackupStatusType_SdkCloudBackupStatusTypeUnknown SdkCloudBackupStatusType = 0 // Not started SdkCloudBackupStatusType_SdkCloudBackupStatusTypeNotStarted SdkCloudBackupStatusType = 1 @@ -1685,73 +1022,50 @@ const ( SdkCloudBackupStatusType_SdkNearSyncStatusTypeInvalid SdkCloudBackupStatusType = 16 ) -// Enum value maps for SdkCloudBackupStatusType. -var ( - SdkCloudBackupStatusType_name = map[int32]string{ - 0: "SdkCloudBackupStatusTypeUnknown", - 1: "SdkCloudBackupStatusTypeNotStarted", - 2: "SdkCloudBackupStatusTypeDone", - 3: "SdkCloudBackupStatusTypeAborted", - 4: "SdkCloudBackupStatusTypePaused", - 5: "SdkCloudBackupStatusTypeStopped", - 6: "SdkCloudBackupStatusTypeActive", - 7: "SdkCloudBackupStatusTypeFailed", - 8: "SdkCloudBackupStatusTypeQueued", - 9: "SdkCloudBackupStatusTypeInvalid", - 10: "SdkNearSyncStatusTypeNotStarted", - 11: "SdkNearSyncStatusTypeDone", - 12: "SdkNearSyncStatusTypePaused", - 13: "SdkNearSyncStatusTypeStopped", - 14: "SdkNearSyncStatusTypeActive", - 15: "SdkNearSyncStatusTypeFailed", - 16: "SdkNearSyncStatusTypeInvalid", - } - SdkCloudBackupStatusType_value = map[string]int32{ - "SdkCloudBackupStatusTypeUnknown": 0, - "SdkCloudBackupStatusTypeNotStarted": 1, - "SdkCloudBackupStatusTypeDone": 2, - "SdkCloudBackupStatusTypeAborted": 3, - "SdkCloudBackupStatusTypePaused": 4, - "SdkCloudBackupStatusTypeStopped": 5, - "SdkCloudBackupStatusTypeActive": 6, - "SdkCloudBackupStatusTypeFailed": 7, - "SdkCloudBackupStatusTypeQueued": 8, - "SdkCloudBackupStatusTypeInvalid": 9, - "SdkNearSyncStatusTypeNotStarted": 10, - "SdkNearSyncStatusTypeDone": 11, - "SdkNearSyncStatusTypePaused": 12, - "SdkNearSyncStatusTypeStopped": 13, - "SdkNearSyncStatusTypeActive": 14, - "SdkNearSyncStatusTypeFailed": 15, - "SdkNearSyncStatusTypeInvalid": 16, - } -) - -func (x SdkCloudBackupStatusType) Enum() *SdkCloudBackupStatusType { - p := new(SdkCloudBackupStatusType) - *p = x - return p +var SdkCloudBackupStatusType_name = map[int32]string{ + 0: "SdkCloudBackupStatusTypeUnknown", + 1: "SdkCloudBackupStatusTypeNotStarted", + 2: "SdkCloudBackupStatusTypeDone", + 3: "SdkCloudBackupStatusTypeAborted", + 4: "SdkCloudBackupStatusTypePaused", + 5: "SdkCloudBackupStatusTypeStopped", + 6: "SdkCloudBackupStatusTypeActive", + 7: "SdkCloudBackupStatusTypeFailed", + 8: "SdkCloudBackupStatusTypeQueued", + 9: "SdkCloudBackupStatusTypeInvalid", + 10: "SdkNearSyncStatusTypeNotStarted", + 11: "SdkNearSyncStatusTypeDone", + 12: "SdkNearSyncStatusTypePaused", + 13: "SdkNearSyncStatusTypeStopped", + 14: "SdkNearSyncStatusTypeActive", + 15: "SdkNearSyncStatusTypeFailed", + 16: "SdkNearSyncStatusTypeInvalid", +} +var SdkCloudBackupStatusType_value = map[string]int32{ + "SdkCloudBackupStatusTypeUnknown": 0, + "SdkCloudBackupStatusTypeNotStarted": 1, + "SdkCloudBackupStatusTypeDone": 2, + "SdkCloudBackupStatusTypeAborted": 3, + "SdkCloudBackupStatusTypePaused": 4, + "SdkCloudBackupStatusTypeStopped": 5, + "SdkCloudBackupStatusTypeActive": 6, + "SdkCloudBackupStatusTypeFailed": 7, + "SdkCloudBackupStatusTypeQueued": 8, + "SdkCloudBackupStatusTypeInvalid": 9, + "SdkNearSyncStatusTypeNotStarted": 10, + "SdkNearSyncStatusTypeDone": 11, + "SdkNearSyncStatusTypePaused": 12, + "SdkNearSyncStatusTypeStopped": 13, + "SdkNearSyncStatusTypeActive": 14, + "SdkNearSyncStatusTypeFailed": 15, + "SdkNearSyncStatusTypeInvalid": 16, } func (x SdkCloudBackupStatusType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SdkCloudBackupStatusType) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[27].Descriptor() -} - -func (SdkCloudBackupStatusType) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[27] -} - -func (x SdkCloudBackupStatusType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) + return proto.EnumName(SdkCloudBackupStatusType_name, int32(x)) } - -// Deprecated: Use SdkCloudBackupStatusType.Descriptor instead. func (SdkCloudBackupStatusType) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{27} + return fileDescriptor_api_bc0eb0e06839944e, []int{26} } // SdkCloudBackupRequestedState defines states to set a specified backup or restore @@ -1775,53 +1089,30 @@ const ( SdkCloudBackupRequestedState_SdkNearSyncRequestedStateStop SdkCloudBackupRequestedState = 6 ) -// Enum value maps for SdkCloudBackupRequestedState. -var ( - SdkCloudBackupRequestedState_name = map[int32]string{ - 0: "SdkCloudBackupRequestedStateUnknown", - 1: "SdkCloudBackupRequestedStatePause", - 2: "SdkCloudBackupRequestedStateResume", - 3: "SdkCloudBackupRequestedStateStop", - 4: "SdkNearSyncRequestedStatePause", - 5: "SdkNearSyncRequestedStateResume", - 6: "SdkNearSyncRequestedStateStop", - } - SdkCloudBackupRequestedState_value = map[string]int32{ - "SdkCloudBackupRequestedStateUnknown": 0, - "SdkCloudBackupRequestedStatePause": 1, - "SdkCloudBackupRequestedStateResume": 2, - "SdkCloudBackupRequestedStateStop": 3, - "SdkNearSyncRequestedStatePause": 4, - "SdkNearSyncRequestedStateResume": 5, - "SdkNearSyncRequestedStateStop": 6, - } -) - -func (x SdkCloudBackupRequestedState) Enum() *SdkCloudBackupRequestedState { - p := new(SdkCloudBackupRequestedState) - *p = x - return p +var SdkCloudBackupRequestedState_name = map[int32]string{ + 0: "SdkCloudBackupRequestedStateUnknown", + 1: "SdkCloudBackupRequestedStatePause", + 2: "SdkCloudBackupRequestedStateResume", + 3: "SdkCloudBackupRequestedStateStop", + 4: "SdkNearSyncRequestedStatePause", + 5: "SdkNearSyncRequestedStateResume", + 6: "SdkNearSyncRequestedStateStop", +} +var SdkCloudBackupRequestedState_value = map[string]int32{ + "SdkCloudBackupRequestedStateUnknown": 0, + "SdkCloudBackupRequestedStatePause": 1, + "SdkCloudBackupRequestedStateResume": 2, + "SdkCloudBackupRequestedStateStop": 3, + "SdkNearSyncRequestedStatePause": 4, + "SdkNearSyncRequestedStateResume": 5, + "SdkNearSyncRequestedStateStop": 6, } func (x SdkCloudBackupRequestedState) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SdkCloudBackupRequestedState) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[28].Descriptor() -} - -func (SdkCloudBackupRequestedState) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[28] -} - -func (x SdkCloudBackupRequestedState) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) + return proto.EnumName(SdkCloudBackupRequestedState_name, int32(x)) } - -// Deprecated: Use SdkCloudBackupRequestedState.Descriptor instead. func (SdkCloudBackupRequestedState) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{28} + return fileDescriptor_api_bc0eb0e06839944e, []int{27} } // Defines the types of enforcement on the given rules @@ -1834,92 +1125,46 @@ const ( EnforcementType_preferred EnforcementType = 1 ) -// Enum value maps for EnforcementType. -var ( - EnforcementType_name = map[int32]string{ - 0: "required", - 1: "preferred", - } - EnforcementType_value = map[string]int32{ - "required": 0, - "preferred": 1, - } -) - -func (x EnforcementType) Enum() *EnforcementType { - p := new(EnforcementType) - *p = x - return p +var EnforcementType_name = map[int32]string{ + 0: "required", + 1: "preferred", } - -func (x EnforcementType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (EnforcementType) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[29].Descriptor() +var EnforcementType_value = map[string]int32{ + "required": 0, + "preferred": 1, } -func (EnforcementType) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[29] -} - -func (x EnforcementType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x EnforcementType) String() string { + return proto.EnumName(EnforcementType_name, int32(x)) } - -// Deprecated: Use EnforcementType.Descriptor instead. func (EnforcementType) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{29} + return fileDescriptor_api_bc0eb0e06839944e, []int{28} } type RestoreParamBoolType int32 const ( - RestoreParamBoolType_PARAM_BKUPSRC RestoreParamBoolType = 0 // Default: whateever was cloudbakup's option for the parameter + RestoreParamBoolType_PARAM_BKUPSRC RestoreParamBoolType = 0 RestoreParamBoolType_PARAM_FALSE RestoreParamBoolType = 1 RestoreParamBoolType_PARAM_TRUE RestoreParamBoolType = 2 ) -// Enum value maps for RestoreParamBoolType. -var ( - RestoreParamBoolType_name = map[int32]string{ - 0: "PARAM_BKUPSRC", - 1: "PARAM_FALSE", - 2: "PARAM_TRUE", - } - RestoreParamBoolType_value = map[string]int32{ - "PARAM_BKUPSRC": 0, - "PARAM_FALSE": 1, - "PARAM_TRUE": 2, - } -) - -func (x RestoreParamBoolType) Enum() *RestoreParamBoolType { - p := new(RestoreParamBoolType) - *p = x - return p -} - -func (x RestoreParamBoolType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (RestoreParamBoolType) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[30].Descriptor() +var RestoreParamBoolType_name = map[int32]string{ + 0: "PARAM_BKUPSRC", + 1: "PARAM_FALSE", + 2: "PARAM_TRUE", } - -func (RestoreParamBoolType) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[30] +var RestoreParamBoolType_value = map[string]int32{ + "PARAM_BKUPSRC": 0, + "PARAM_FALSE": 1, + "PARAM_TRUE": 2, } -func (x RestoreParamBoolType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x RestoreParamBoolType) String() string { + return proto.EnumName(RestoreParamBoolType_name, int32(x)) } - -// Deprecated: Use RestoreParamBoolType.Descriptor instead. func (RestoreParamBoolType) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{30} + return fileDescriptor_api_bc0eb0e06839944e, []int{29} } type Xattr_Value int32 @@ -1931,43 +1176,20 @@ const ( Xattr_COW_ON_DEMAND Xattr_Value = 1 ) -// Enum value maps for Xattr_Value. -var ( - Xattr_Value_name = map[int32]string{ - 0: "UNSPECIFIED", - 1: "COW_ON_DEMAND", - } - Xattr_Value_value = map[string]int32{ - "UNSPECIFIED": 0, - "COW_ON_DEMAND": 1, - } -) - -func (x Xattr_Value) Enum() *Xattr_Value { - p := new(Xattr_Value) - *p = x - return p +var Xattr_Value_name = map[int32]string{ + 0: "UNSPECIFIED", + 1: "COW_ON_DEMAND", } - -func (x Xattr_Value) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Xattr_Value) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[31].Descriptor() +var Xattr_Value_value = map[string]int32{ + "UNSPECIFIED": 0, + "COW_ON_DEMAND": 1, } -func (Xattr_Value) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[31] -} - -func (x Xattr_Value) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x Xattr_Value) String() string { + return proto.EnumName(Xattr_Value_name, int32(x)) } - -// Deprecated: Use Xattr_Value.Descriptor instead. func (Xattr_Value) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{10, 0} + return fileDescriptor_api_bc0eb0e06839944e, []int{10, 0} } // Type of sharedv4 service. Values are governed by the different types @@ -1993,49 +1215,26 @@ const ( Sharedv4ServiceSpec_NONE Sharedv4ServiceSpec_ServiceType = 4 ) -// Enum value maps for Sharedv4ServiceSpec_ServiceType. -var ( - Sharedv4ServiceSpec_ServiceType_name = map[int32]string{ - 0: "UNSPECIFIED", - 1: "NODEPORT", - 2: "CLUSTERIP", - 3: "LOADBALANCER", - 4: "NONE", - } - Sharedv4ServiceSpec_ServiceType_value = map[string]int32{ - "UNSPECIFIED": 0, - "NODEPORT": 1, - "CLUSTERIP": 2, - "LOADBALANCER": 3, - "NONE": 4, - } -) - -func (x Sharedv4ServiceSpec_ServiceType) Enum() *Sharedv4ServiceSpec_ServiceType { - p := new(Sharedv4ServiceSpec_ServiceType) - *p = x - return p -} - -func (x Sharedv4ServiceSpec_ServiceType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Sharedv4ServiceSpec_ServiceType) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[32].Descriptor() +var Sharedv4ServiceSpec_ServiceType_name = map[int32]string{ + 0: "UNSPECIFIED", + 1: "NODEPORT", + 2: "CLUSTERIP", + 3: "LOADBALANCER", + 4: "NONE", } - -func (Sharedv4ServiceSpec_ServiceType) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[32] +var Sharedv4ServiceSpec_ServiceType_value = map[string]int32{ + "UNSPECIFIED": 0, + "NODEPORT": 1, + "CLUSTERIP": 2, + "LOADBALANCER": 3, + "NONE": 4, } -func (x Sharedv4ServiceSpec_ServiceType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x Sharedv4ServiceSpec_ServiceType) String() string { + return proto.EnumName(Sharedv4ServiceSpec_ServiceType_name, int32(x)) } - -// Deprecated: Use Sharedv4ServiceSpec_ServiceType.Descriptor instead. func (Sharedv4ServiceSpec_ServiceType) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{18, 0} + return fileDescriptor_api_bc0eb0e06839944e, []int{18, 0} } type Sharedv4FailoverStrategy_Value int32 @@ -2054,45 +1253,22 @@ const ( Sharedv4FailoverStrategy_NORMAL Sharedv4FailoverStrategy_Value = 2 ) -// Enum value maps for Sharedv4FailoverStrategy_Value. -var ( - Sharedv4FailoverStrategy_Value_name = map[int32]string{ - 0: "UNSPECIFIED", - 1: "AGGRESSIVE", - 2: "NORMAL", - } - Sharedv4FailoverStrategy_Value_value = map[string]int32{ - "UNSPECIFIED": 0, - "AGGRESSIVE": 1, - "NORMAL": 2, - } -) - -func (x Sharedv4FailoverStrategy_Value) Enum() *Sharedv4FailoverStrategy_Value { - p := new(Sharedv4FailoverStrategy_Value) - *p = x - return p -} - -func (x Sharedv4FailoverStrategy_Value) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Sharedv4FailoverStrategy_Value) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[33].Descriptor() +var Sharedv4FailoverStrategy_Value_name = map[int32]string{ + 0: "UNSPECIFIED", + 1: "AGGRESSIVE", + 2: "NORMAL", } - -func (Sharedv4FailoverStrategy_Value) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[33] +var Sharedv4FailoverStrategy_Value_value = map[string]int32{ + "UNSPECIFIED": 0, + "AGGRESSIVE": 1, + "NORMAL": 2, } -func (x Sharedv4FailoverStrategy_Value) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x Sharedv4FailoverStrategy_Value) String() string { + return proto.EnumName(Sharedv4FailoverStrategy_Value_name, int32(x)) } - -// Deprecated: Use Sharedv4FailoverStrategy_Value.Descriptor instead. func (Sharedv4FailoverStrategy_Value) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{19, 0} + return fileDescriptor_api_bc0eb0e06839944e, []int{19, 0} } type ScanPolicy_ScanTrigger int32 @@ -2103,45 +1279,22 @@ const ( ScanPolicy_SCAN_TRIGGER_ON_NEXT_MOUNT ScanPolicy_ScanTrigger = 2 ) -// Enum value maps for ScanPolicy_ScanTrigger. -var ( - ScanPolicy_ScanTrigger_name = map[int32]string{ - 0: "SCAN_TRIGGER_NONE", - 1: "SCAN_TRIGGER_ON_MOUNT", - 2: "SCAN_TRIGGER_ON_NEXT_MOUNT", - } - ScanPolicy_ScanTrigger_value = map[string]int32{ - "SCAN_TRIGGER_NONE": 0, - "SCAN_TRIGGER_ON_MOUNT": 1, - "SCAN_TRIGGER_ON_NEXT_MOUNT": 2, - } -) - -func (x ScanPolicy_ScanTrigger) Enum() *ScanPolicy_ScanTrigger { - p := new(ScanPolicy_ScanTrigger) - *p = x - return p -} - -func (x ScanPolicy_ScanTrigger) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ScanPolicy_ScanTrigger) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[34].Descriptor() +var ScanPolicy_ScanTrigger_name = map[int32]string{ + 0: "SCAN_TRIGGER_NONE", + 1: "SCAN_TRIGGER_ON_MOUNT", + 2: "SCAN_TRIGGER_ON_NEXT_MOUNT", } - -func (ScanPolicy_ScanTrigger) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[34] +var ScanPolicy_ScanTrigger_value = map[string]int32{ + "SCAN_TRIGGER_NONE": 0, + "SCAN_TRIGGER_ON_MOUNT": 1, + "SCAN_TRIGGER_ON_NEXT_MOUNT": 2, } -func (x ScanPolicy_ScanTrigger) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x ScanPolicy_ScanTrigger) String() string { + return proto.EnumName(ScanPolicy_ScanTrigger_name, int32(x)) } - -// Deprecated: Use ScanPolicy_ScanTrigger.Descriptor instead. func (ScanPolicy_ScanTrigger) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{24, 0} + return fileDescriptor_api_bc0eb0e06839944e, []int{24, 0} } type ScanPolicy_ScanAction int32 @@ -2152,45 +1305,22 @@ const ( ScanPolicy_SCAN_ACTION_SCAN_REPAIR ScanPolicy_ScanAction = 2 ) -// Enum value maps for ScanPolicy_ScanAction. -var ( - ScanPolicy_ScanAction_name = map[int32]string{ - 0: "SCAN_ACTION_NONE", - 1: "SCAN_ACTION_SCAN_ONLY", - 2: "SCAN_ACTION_SCAN_REPAIR", - } - ScanPolicy_ScanAction_value = map[string]int32{ - "SCAN_ACTION_NONE": 0, - "SCAN_ACTION_SCAN_ONLY": 1, - "SCAN_ACTION_SCAN_REPAIR": 2, - } -) - -func (x ScanPolicy_ScanAction) Enum() *ScanPolicy_ScanAction { - p := new(ScanPolicy_ScanAction) - *p = x - return p -} - -func (x ScanPolicy_ScanAction) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ScanPolicy_ScanAction) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[35].Descriptor() +var ScanPolicy_ScanAction_name = map[int32]string{ + 0: "SCAN_ACTION_NONE", + 1: "SCAN_ACTION_SCAN_ONLY", + 2: "SCAN_ACTION_SCAN_REPAIR", } - -func (ScanPolicy_ScanAction) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[35] +var ScanPolicy_ScanAction_value = map[string]int32{ + "SCAN_ACTION_NONE": 0, + "SCAN_ACTION_SCAN_ONLY": 1, + "SCAN_ACTION_SCAN_REPAIR": 2, } -func (x ScanPolicy_ScanAction) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x ScanPolicy_ScanAction) String() string { + return proto.EnumName(ScanPolicy_ScanAction_name, int32(x)) } - -// Deprecated: Use ScanPolicy_ScanAction.Descriptor instead. func (ScanPolicy_ScanAction) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{24, 1} + return fileDescriptor_api_bc0eb0e06839944e, []int{24, 1} } // This defines an operator for the policy comparisons @@ -2205,45 +1335,22 @@ const ( VolumeSpecPolicy_Maximum VolumeSpecPolicy_PolicyOp = 2 ) -// Enum value maps for VolumeSpecPolicy_PolicyOp. -var ( - VolumeSpecPolicy_PolicyOp_name = map[int32]string{ - 0: "Equal", - 1: "Minimum", - 2: "Maximum", - } - VolumeSpecPolicy_PolicyOp_value = map[string]int32{ - "Equal": 0, - "Minimum": 1, - "Maximum": 2, - } -) - -func (x VolumeSpecPolicy_PolicyOp) Enum() *VolumeSpecPolicy_PolicyOp { - p := new(VolumeSpecPolicy_PolicyOp) - *p = x - return p -} - -func (x VolumeSpecPolicy_PolicyOp) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (VolumeSpecPolicy_PolicyOp) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[36].Descriptor() +var VolumeSpecPolicy_PolicyOp_name = map[int32]string{ + 0: "Equal", + 1: "Minimum", + 2: "Maximum", } - -func (VolumeSpecPolicy_PolicyOp) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[36] +var VolumeSpecPolicy_PolicyOp_value = map[string]int32{ + "Equal": 0, + "Minimum": 1, + "Maximum": 2, } -func (x VolumeSpecPolicy_PolicyOp) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x VolumeSpecPolicy_PolicyOp) String() string { + return proto.EnumName(VolumeSpecPolicy_PolicyOp_name, int32(x)) } - -// Deprecated: Use VolumeSpecPolicy_PolicyOp.Descriptor instead. func (VolumeSpecPolicy_PolicyOp) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{28, 0} + return fileDescriptor_api_bc0eb0e06839944e, []int{28, 0} } // Access types can be set by owner to have different levels of access to @@ -2264,45 +1371,22 @@ const ( Ownership_Admin Ownership_AccessType = 2 ) -// Enum value maps for Ownership_AccessType. -var ( - Ownership_AccessType_name = map[int32]string{ - 0: "Read", - 1: "Write", - 2: "Admin", - } - Ownership_AccessType_value = map[string]int32{ - "Read": 0, - "Write": 1, - "Admin": 2, - } -) - -func (x Ownership_AccessType) Enum() *Ownership_AccessType { - p := new(Ownership_AccessType) - *p = x - return p -} - -func (x Ownership_AccessType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Ownership_AccessType) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[37].Descriptor() +var Ownership_AccessType_name = map[int32]string{ + 0: "Read", + 1: "Write", + 2: "Admin", } - -func (Ownership_AccessType) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[37] +var Ownership_AccessType_value = map[string]int32{ + "Read": 0, + "Write": 1, + "Admin": 2, } -func (x Ownership_AccessType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x Ownership_AccessType) String() string { + return proto.EnumName(Ownership_AccessType_name, int32(x)) } - -// Deprecated: Use Ownership_AccessType.Descriptor instead. func (Ownership_AccessType) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{31, 0} + return fileDescriptor_api_bc0eb0e06839944e, []int{31, 0} } type StorageNode_SecurityStatus int32 @@ -2316,51 +1400,28 @@ const ( StorageNode_SECURED StorageNode_SecurityStatus = 2 // Node is secured, but in the process of removing security. This state allows // other unsecured nodes to join the cluster since the cluster is in the process - // of removing security authentication and authorization. + // of removing secuirty authenticaiton and authorization. StorageNode_SECURED_ALLOW_SECURITY_REMOVAL StorageNode_SecurityStatus = 3 ) -// Enum value maps for StorageNode_SecurityStatus. -var ( - StorageNode_SecurityStatus_name = map[int32]string{ - 0: "UNSPECIFIED", - 1: "UNSECURED", - 2: "SECURED", - 3: "SECURED_ALLOW_SECURITY_REMOVAL", - } - StorageNode_SecurityStatus_value = map[string]int32{ - "UNSPECIFIED": 0, - "UNSECURED": 1, - "SECURED": 2, - "SECURED_ALLOW_SECURITY_REMOVAL": 3, - } -) - -func (x StorageNode_SecurityStatus) Enum() *StorageNode_SecurityStatus { - p := new(StorageNode_SecurityStatus) - *p = x - return p -} - -func (x StorageNode_SecurityStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (StorageNode_SecurityStatus) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[38].Descriptor() +var StorageNode_SecurityStatus_name = map[int32]string{ + 0: "UNSPECIFIED", + 1: "UNSECURED", + 2: "SECURED", + 3: "SECURED_ALLOW_SECURITY_REMOVAL", } - -func (StorageNode_SecurityStatus) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[38] +var StorageNode_SecurityStatus_value = map[string]int32{ + "UNSPECIFIED": 0, + "UNSECURED": 1, + "SECURED": 2, + "SECURED_ALLOW_SECURITY_REMOVAL": 3, } -func (x StorageNode_SecurityStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x StorageNode_SecurityStatus) String() string { + return proto.EnumName(StorageNode_SecurityStatus_name, int32(x)) } - -// Deprecated: Use StorageNode_SecurityStatus.Descriptor instead. func (StorageNode_SecurityStatus) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{75, 0} + return fileDescriptor_api_bc0eb0e06839944e, []int{75, 0} } // Type are the supported job types @@ -2377,55 +1438,28 @@ const ( Job_CLOUD_DRIVE_TRANSFER Job_Type = 3 // Job for collecting diags from the cluster nodes Job_COLLECT_DIAGS Job_Type = 4 - // Job for storage defragmentation on cluster nodes - Job_DEFRAG Job_Type = 5 -) - -// Enum value maps for Job_Type. -var ( - Job_Type_name = map[int32]string{ - 0: "UNSPECIFIED_TYPE", - 1: "NONE", - 2: "DRAIN_ATTACHMENTS", - 3: "CLOUD_DRIVE_TRANSFER", - 4: "COLLECT_DIAGS", - 5: "DEFRAG", - } - Job_Type_value = map[string]int32{ - "UNSPECIFIED_TYPE": 0, - "NONE": 1, - "DRAIN_ATTACHMENTS": 2, - "CLOUD_DRIVE_TRANSFER": 3, - "COLLECT_DIAGS": 4, - "DEFRAG": 5, - } ) -func (x Job_Type) Enum() *Job_Type { - p := new(Job_Type) - *p = x - return p -} - -func (x Job_Type) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Job_Type) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[39].Descriptor() +var Job_Type_name = map[int32]string{ + 0: "UNSPECIFIED_TYPE", + 1: "NONE", + 2: "DRAIN_ATTACHMENTS", + 3: "CLOUD_DRIVE_TRANSFER", + 4: "COLLECT_DIAGS", } - -func (Job_Type) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[39] +var Job_Type_value = map[string]int32{ + "UNSPECIFIED_TYPE": 0, + "NONE": 1, + "DRAIN_ATTACHMENTS": 2, + "CLOUD_DRIVE_TRANSFER": 3, + "COLLECT_DIAGS": 4, } -func (x Job_Type) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x Job_Type) String() string { + return proto.EnumName(Job_Type_name, int32(x)) } - -// Deprecated: Use Job_Type.Descriptor instead. func (Job_Type) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{200, 0} + return fileDescriptor_api_bc0eb0e06839944e, []int{198, 0} } // State is an enum for state of a node drain operation @@ -2448,53 +1482,30 @@ const ( Job_FAILED Job_State = 6 ) -// Enum value maps for Job_State. -var ( - Job_State_name = map[int32]string{ - 0: "UNSPECIFIED_STATE", - 1: "PENDING", - 2: "RUNNING", - 3: "DONE", - 4: "PAUSED", - 5: "CANCELLED", - 6: "FAILED", - } - Job_State_value = map[string]int32{ - "UNSPECIFIED_STATE": 0, - "PENDING": 1, - "RUNNING": 2, - "DONE": 3, - "PAUSED": 4, - "CANCELLED": 5, - "FAILED": 6, - } -) - -func (x Job_State) Enum() *Job_State { - p := new(Job_State) - *p = x - return p +var Job_State_name = map[int32]string{ + 0: "UNSPECIFIED_STATE", + 1: "PENDING", + 2: "RUNNING", + 3: "DONE", + 4: "PAUSED", + 5: "CANCELLED", + 6: "FAILED", +} +var Job_State_value = map[string]int32{ + "UNSPECIFIED_STATE": 0, + "PENDING": 1, + "RUNNING": 2, + "DONE": 3, + "PAUSED": 4, + "CANCELLED": 5, + "FAILED": 6, } func (x Job_State) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Job_State) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[40].Descriptor() -} - -func (Job_State) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[40] -} - -func (x Job_State) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) + return proto.EnumName(Job_State_name, int32(x)) } - -// Deprecated: Use Job_State.Descriptor instead. func (Job_State) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{200, 1} + return fileDescriptor_api_bc0eb0e06839944e, []int{198, 1} } // State is an enum for state of diags collection on a given node @@ -2513,49 +1524,26 @@ const ( DiagsCollectionStatus_FAILED DiagsCollectionStatus_State = 4 ) -// Enum value maps for DiagsCollectionStatus_State. -var ( - DiagsCollectionStatus_State_name = map[int32]string{ - 0: "UNSPECIFIED", - 1: "PENDING", - 2: "RUNNING", - 3: "DONE", - 4: "FAILED", - } - DiagsCollectionStatus_State_value = map[string]int32{ - "UNSPECIFIED": 0, - "PENDING": 1, - "RUNNING": 2, - "DONE": 3, - "FAILED": 4, - } -) - -func (x DiagsCollectionStatus_State) Enum() *DiagsCollectionStatus_State { - p := new(DiagsCollectionStatus_State) - *p = x - return p -} - -func (x DiagsCollectionStatus_State) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (DiagsCollectionStatus_State) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[41].Descriptor() +var DiagsCollectionStatus_State_name = map[int32]string{ + 0: "UNSPECIFIED", + 1: "PENDING", + 2: "RUNNING", + 3: "DONE", + 4: "FAILED", } - -func (DiagsCollectionStatus_State) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[41] +var DiagsCollectionStatus_State_value = map[string]int32{ + "UNSPECIFIED": 0, + "PENDING": 1, + "RUNNING": 2, + "DONE": 3, + "FAILED": 4, } -func (x DiagsCollectionStatus_State) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x DiagsCollectionStatus_State) String() string { + return proto.EnumName(DiagsCollectionStatus_State_name, int32(x)) } - -// Deprecated: Use DiagsCollectionStatus_State.Descriptor instead. func (DiagsCollectionStatus_State) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{210, 0} + return fileDescriptor_api_bc0eb0e06839944e, []int{205, 0} } // Type is an enum that defines the type fo the trigger threshold @@ -2565,48 +1553,25 @@ const ( // AbsolutePercent indicates absolute percent comparison. // Example, 75 % used of capacity, or 50 % provisioned of capacity. StorageRebalanceTriggerThreshold_ABSOLUTE_PERCENT StorageRebalanceTriggerThreshold_Type = 0 - // DeltaMeanPercent indicates mean percent comparison threshold. + // DeltaMeanPercent indicates mean percent comparision threshold. // Example, 10 % more than mean for cluster. StorageRebalanceTriggerThreshold_DELTA_MEAN_PERCENT StorageRebalanceTriggerThreshold_Type = 1 ) -// Enum value maps for StorageRebalanceTriggerThreshold_Type. -var ( - StorageRebalanceTriggerThreshold_Type_name = map[int32]string{ - 0: "ABSOLUTE_PERCENT", - 1: "DELTA_MEAN_PERCENT", - } - StorageRebalanceTriggerThreshold_Type_value = map[string]int32{ - "ABSOLUTE_PERCENT": 0, - "DELTA_MEAN_PERCENT": 1, - } -) - -func (x StorageRebalanceTriggerThreshold_Type) Enum() *StorageRebalanceTriggerThreshold_Type { - p := new(StorageRebalanceTriggerThreshold_Type) - *p = x - return p -} - -func (x StorageRebalanceTriggerThreshold_Type) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (StorageRebalanceTriggerThreshold_Type) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[42].Descriptor() +var StorageRebalanceTriggerThreshold_Type_name = map[int32]string{ + 0: "ABSOLUTE_PERCENT", + 1: "DELTA_MEAN_PERCENT", } - -func (StorageRebalanceTriggerThreshold_Type) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[42] +var StorageRebalanceTriggerThreshold_Type_value = map[string]int32{ + "ABSOLUTE_PERCENT": 0, + "DELTA_MEAN_PERCENT": 1, } -func (x StorageRebalanceTriggerThreshold_Type) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x StorageRebalanceTriggerThreshold_Type) String() string { + return proto.EnumName(StorageRebalanceTriggerThreshold_Type_name, int32(x)) } - -// Deprecated: Use StorageRebalanceTriggerThreshold_Type.Descriptor instead. func (StorageRebalanceTriggerThreshold_Type) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{230, 0} + return fileDescriptor_api_bc0eb0e06839944e, []int{225, 0} } // Metric is an enum that defines the metric to use for rebalance @@ -2619,43 +1584,20 @@ const ( StorageRebalanceTriggerThreshold_USED_SPACE StorageRebalanceTriggerThreshold_Metric = 1 ) -// Enum value maps for StorageRebalanceTriggerThreshold_Metric. -var ( - StorageRebalanceTriggerThreshold_Metric_name = map[int32]string{ - 0: "PROVISION_SPACE", - 1: "USED_SPACE", - } - StorageRebalanceTriggerThreshold_Metric_value = map[string]int32{ - "PROVISION_SPACE": 0, - "USED_SPACE": 1, - } -) - -func (x StorageRebalanceTriggerThreshold_Metric) Enum() *StorageRebalanceTriggerThreshold_Metric { - p := new(StorageRebalanceTriggerThreshold_Metric) - *p = x - return p -} - -func (x StorageRebalanceTriggerThreshold_Metric) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (StorageRebalanceTriggerThreshold_Metric) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[43].Descriptor() +var StorageRebalanceTriggerThreshold_Metric_name = map[int32]string{ + 0: "PROVISION_SPACE", + 1: "USED_SPACE", } - -func (StorageRebalanceTriggerThreshold_Metric) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[43] +var StorageRebalanceTriggerThreshold_Metric_value = map[string]int32{ + "PROVISION_SPACE": 0, + "USED_SPACE": 1, } -func (x StorageRebalanceTriggerThreshold_Metric) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x StorageRebalanceTriggerThreshold_Metric) String() string { + return proto.EnumName(StorageRebalanceTriggerThreshold_Metric_name, int32(x)) } - -// Deprecated: Use StorageRebalanceTriggerThreshold_Metric.Descriptor instead. func (StorageRebalanceTriggerThreshold_Metric) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{230, 1} + return fileDescriptor_api_bc0eb0e06839944e, []int{225, 1} } // Mode is an enum that defines the mode of the volume reorg job @@ -2668,43 +1610,20 @@ const ( SdkStorageRebalanceRequest_VOLUME_PLACEMENT_FIX SdkStorageRebalanceRequest_Mode = 1 ) -// Enum value maps for SdkStorageRebalanceRequest_Mode. -var ( - SdkStorageRebalanceRequest_Mode_name = map[int32]string{ - 0: "STORAGE_REBALANCE", - 1: "VOLUME_PLACEMENT_FIX", - } - SdkStorageRebalanceRequest_Mode_value = map[string]int32{ - "STORAGE_REBALANCE": 0, - "VOLUME_PLACEMENT_FIX": 1, - } -) - -func (x SdkStorageRebalanceRequest_Mode) Enum() *SdkStorageRebalanceRequest_Mode { - p := new(SdkStorageRebalanceRequest_Mode) - *p = x - return p -} - -func (x SdkStorageRebalanceRequest_Mode) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SdkStorageRebalanceRequest_Mode) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[44].Descriptor() +var SdkStorageRebalanceRequest_Mode_name = map[int32]string{ + 0: "STORAGE_REBALANCE", + 1: "VOLUME_PLACEMENT_FIX", } - -func (SdkStorageRebalanceRequest_Mode) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[44] +var SdkStorageRebalanceRequest_Mode_value = map[string]int32{ + "STORAGE_REBALANCE": 0, + "VOLUME_PLACEMENT_FIX": 1, } -func (x SdkStorageRebalanceRequest_Mode) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x SdkStorageRebalanceRequest_Mode) String() string { + return proto.EnumName(SdkStorageRebalanceRequest_Mode_name, int32(x)) } - -// Deprecated: Use SdkStorageRebalanceRequest_Mode.Descriptor instead. func (SdkStorageRebalanceRequest_Mode) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{231, 0} + return fileDescriptor_api_bc0eb0e06839944e, []int{226, 0} } // Type is an enum to indicate the type of work summary @@ -2721,47 +1640,24 @@ const ( StorageRebalanceWorkSummary_UnbalancedUsedSpaceBytes StorageRebalanceWorkSummary_Type = 3 ) -// Enum value maps for StorageRebalanceWorkSummary_Type. -var ( - StorageRebalanceWorkSummary_Type_name = map[int32]string{ - 0: "UnbalancedPools", - 1: "UnbalancedVolumes", - 2: "UnbalancedProvisionedSpaceBytes", - 3: "UnbalancedUsedSpaceBytes", - } - StorageRebalanceWorkSummary_Type_value = map[string]int32{ - "UnbalancedPools": 0, - "UnbalancedVolumes": 1, - "UnbalancedProvisionedSpaceBytes": 2, - "UnbalancedUsedSpaceBytes": 3, - } -) - -func (x StorageRebalanceWorkSummary_Type) Enum() *StorageRebalanceWorkSummary_Type { - p := new(StorageRebalanceWorkSummary_Type) - *p = x - return p -} - -func (x StorageRebalanceWorkSummary_Type) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (StorageRebalanceWorkSummary_Type) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[45].Descriptor() +var StorageRebalanceWorkSummary_Type_name = map[int32]string{ + 0: "UnbalancedPools", + 1: "UnbalancedVolumes", + 2: "UnbalancedProvisionedSpaceBytes", + 3: "UnbalancedUsedSpaceBytes", } - -func (StorageRebalanceWorkSummary_Type) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[45] +var StorageRebalanceWorkSummary_Type_value = map[string]int32{ + "UnbalancedPools": 0, + "UnbalancedVolumes": 1, + "UnbalancedProvisionedSpaceBytes": 2, + "UnbalancedUsedSpaceBytes": 3, } -func (x StorageRebalanceWorkSummary_Type) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x StorageRebalanceWorkSummary_Type) String() string { + return proto.EnumName(StorageRebalanceWorkSummary_Type_name, int32(x)) } - -// Deprecated: Use StorageRebalanceWorkSummary_Type.Descriptor instead. func (StorageRebalanceWorkSummary_Type) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{235, 0} + return fileDescriptor_api_bc0eb0e06839944e, []int{230, 0} } // StorageRebalanceAction describes type of rebalance action @@ -2774,43 +1670,20 @@ const ( StorageRebalanceAudit_REMOVE_REPLICA StorageRebalanceAudit_StorageRebalanceAction = 1 ) -// Enum value maps for StorageRebalanceAudit_StorageRebalanceAction. -var ( - StorageRebalanceAudit_StorageRebalanceAction_name = map[int32]string{ - 0: "ADD_REPLICA", - 1: "REMOVE_REPLICA", - } - StorageRebalanceAudit_StorageRebalanceAction_value = map[string]int32{ - "ADD_REPLICA": 0, - "REMOVE_REPLICA": 1, - } -) - -func (x StorageRebalanceAudit_StorageRebalanceAction) Enum() *StorageRebalanceAudit_StorageRebalanceAction { - p := new(StorageRebalanceAudit_StorageRebalanceAction) - *p = x - return p -} - -func (x StorageRebalanceAudit_StorageRebalanceAction) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (StorageRebalanceAudit_StorageRebalanceAction) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[46].Descriptor() +var StorageRebalanceAudit_StorageRebalanceAction_name = map[int32]string{ + 0: "ADD_REPLICA", + 1: "REMOVE_REPLICA", } - -func (StorageRebalanceAudit_StorageRebalanceAction) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[46] +var StorageRebalanceAudit_StorageRebalanceAction_value = map[string]int32{ + "ADD_REPLICA": 0, + "REMOVE_REPLICA": 1, } -func (x StorageRebalanceAudit_StorageRebalanceAction) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x StorageRebalanceAudit_StorageRebalanceAction) String() string { + return proto.EnumName(StorageRebalanceAudit_StorageRebalanceAction_name, int32(x)) } - -// Deprecated: Use StorageRebalanceAudit_StorageRebalanceAction.Descriptor instead. func (StorageRebalanceAudit_StorageRebalanceAction) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{236, 0} + return fileDescriptor_api_bc0eb0e06839944e, []int{231, 0} } // OperationStatus captures the various statuses of a storage pool operation @@ -2827,47 +1700,24 @@ const ( SdkStoragePool_OPERATION_FAILED SdkStoragePool_OperationStatus = 3 ) -// Enum value maps for SdkStoragePool_OperationStatus. -var ( - SdkStoragePool_OperationStatus_name = map[int32]string{ - 0: "OPERATION_PENDING", - 1: "OPERATION_IN_PROGRESS", - 2: "OPERATION_SUCCESSFUL", - 3: "OPERATION_FAILED", - } - SdkStoragePool_OperationStatus_value = map[string]int32{ - "OPERATION_PENDING": 0, - "OPERATION_IN_PROGRESS": 1, - "OPERATION_SUCCESSFUL": 2, - "OPERATION_FAILED": 3, - } -) - -func (x SdkStoragePool_OperationStatus) Enum() *SdkStoragePool_OperationStatus { - p := new(SdkStoragePool_OperationStatus) - *p = x - return p -} - -func (x SdkStoragePool_OperationStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SdkStoragePool_OperationStatus) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[47].Descriptor() +var SdkStoragePool_OperationStatus_name = map[int32]string{ + 0: "OPERATION_PENDING", + 1: "OPERATION_IN_PROGRESS", + 2: "OPERATION_SUCCESSFUL", + 3: "OPERATION_FAILED", } - -func (SdkStoragePool_OperationStatus) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[47] +var SdkStoragePool_OperationStatus_value = map[string]int32{ + "OPERATION_PENDING": 0, + "OPERATION_IN_PROGRESS": 1, + "OPERATION_SUCCESSFUL": 2, + "OPERATION_FAILED": 3, } -func (x SdkStoragePool_OperationStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x SdkStoragePool_OperationStatus) String() string { + return proto.EnumName(SdkStoragePool_OperationStatus_name, int32(x)) } - -// Deprecated: Use SdkStoragePool_OperationStatus.Descriptor instead. func (SdkStoragePool_OperationStatus) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{250, 0} + return fileDescriptor_api_bc0eb0e06839944e, []int{238, 0} } // OperationType defines the various operations that are performed on a storage pool @@ -2878,41 +1728,18 @@ const ( SdkStoragePool_OPERATION_RESIZE SdkStoragePool_OperationType = 0 ) -// Enum value maps for SdkStoragePool_OperationType. -var ( - SdkStoragePool_OperationType_name = map[int32]string{ - 0: "OPERATION_RESIZE", - } - SdkStoragePool_OperationType_value = map[string]int32{ - "OPERATION_RESIZE": 0, - } -) - -func (x SdkStoragePool_OperationType) Enum() *SdkStoragePool_OperationType { - p := new(SdkStoragePool_OperationType) - *p = x - return p -} - -func (x SdkStoragePool_OperationType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SdkStoragePool_OperationType) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[48].Descriptor() +var SdkStoragePool_OperationType_name = map[int32]string{ + 0: "OPERATION_RESIZE", } - -func (SdkStoragePool_OperationType) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[48] +var SdkStoragePool_OperationType_value = map[string]int32{ + "OPERATION_RESIZE": 0, } -func (x SdkStoragePool_OperationType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x SdkStoragePool_OperationType) String() string { + return proto.EnumName(SdkStoragePool_OperationType_name, int32(x)) } - -// Deprecated: Use SdkStoragePool_OperationType.Descriptor instead. func (SdkStoragePool_OperationType) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{250, 1} + return fileDescriptor_api_bc0eb0e06839944e, []int{238, 1} } // Defines the operation types available to resize a storage pool @@ -2927,45 +1754,51 @@ const ( SdkStoragePool_RESIZE_TYPE_RESIZE_DISK SdkStoragePool_ResizeOperationType = 2 ) -// Enum value maps for SdkStoragePool_ResizeOperationType. -var ( - SdkStoragePool_ResizeOperationType_name = map[int32]string{ - 0: "RESIZE_TYPE_AUTO", - 1: "RESIZE_TYPE_ADD_DISK", - 2: "RESIZE_TYPE_RESIZE_DISK", - } - SdkStoragePool_ResizeOperationType_value = map[string]int32{ - "RESIZE_TYPE_AUTO": 0, - "RESIZE_TYPE_ADD_DISK": 1, - "RESIZE_TYPE_RESIZE_DISK": 2, - } -) - -func (x SdkStoragePool_ResizeOperationType) Enum() *SdkStoragePool_ResizeOperationType { - p := new(SdkStoragePool_ResizeOperationType) - *p = x - return p +var SdkStoragePool_ResizeOperationType_name = map[int32]string{ + 0: "RESIZE_TYPE_AUTO", + 1: "RESIZE_TYPE_ADD_DISK", + 2: "RESIZE_TYPE_RESIZE_DISK", +} +var SdkStoragePool_ResizeOperationType_value = map[string]int32{ + "RESIZE_TYPE_AUTO": 0, + "RESIZE_TYPE_ADD_DISK": 1, + "RESIZE_TYPE_RESIZE_DISK": 2, } func (x SdkStoragePool_ResizeOperationType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) + return proto.EnumName(SdkStoragePool_ResizeOperationType_name, int32(x)) } - -func (SdkStoragePool_ResizeOperationType) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[49].Descriptor() +func (SdkStoragePool_ResizeOperationType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{238, 2} } -func (SdkStoragePool_ResizeOperationType) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[49] -} +type SdkCloudBackupClusterType_Value int32 + +const ( + // Unknown + SdkCloudBackupClusterType_UNKNOWN SdkCloudBackupClusterType_Value = 0 + // Belongs to this cluster + SdkCloudBackupClusterType_CURRENT_CLUSTER SdkCloudBackupClusterType_Value = 1 + // belongs to other cluster + SdkCloudBackupClusterType_OTHER_CLUSTER SdkCloudBackupClusterType_Value = 2 +) -func (x SdkStoragePool_ResizeOperationType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +var SdkCloudBackupClusterType_Value_name = map[int32]string{ + 0: "UNKNOWN", + 1: "CURRENT_CLUSTER", + 2: "OTHER_CLUSTER", +} +var SdkCloudBackupClusterType_Value_value = map[string]int32{ + "UNKNOWN": 0, + "CURRENT_CLUSTER": 1, + "OTHER_CLUSTER": 2, } -// Deprecated: Use SdkStoragePool_ResizeOperationType.Descriptor instead. -func (SdkStoragePool_ResizeOperationType) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{250, 2} +func (x SdkCloudBackupClusterType_Value) String() string { + return proto.EnumName(SdkCloudBackupClusterType_Value_name, int32(x)) +} +func (SdkCloudBackupClusterType_Value) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{269, 0} } // FilesystemTrimStatus represents the status codes returned from @@ -2990,56 +1823,33 @@ const ( FilesystemTrim_FS_TRIM_FAILED FilesystemTrim_FilesystemTrimStatus = 6 ) -// Enum value maps for FilesystemTrim_FilesystemTrimStatus. -var ( - FilesystemTrim_FilesystemTrimStatus_name = map[int32]string{ - 0: "FS_TRIM_UNKNOWN", - 1: "FS_TRIM_NOT_RUNNING", - 2: "FS_TRIM_STARTED", - 3: "FS_TRIM_INPROGRESS", - 4: "FS_TRIM_STOPPED", - 5: "FS_TRIM_COMPLETED", - 6: "FS_TRIM_FAILED", - } - FilesystemTrim_FilesystemTrimStatus_value = map[string]int32{ - "FS_TRIM_UNKNOWN": 0, - "FS_TRIM_NOT_RUNNING": 1, - "FS_TRIM_STARTED": 2, - "FS_TRIM_INPROGRESS": 3, - "FS_TRIM_STOPPED": 4, - "FS_TRIM_COMPLETED": 5, - "FS_TRIM_FAILED": 6, - } -) - -func (x FilesystemTrim_FilesystemTrimStatus) Enum() *FilesystemTrim_FilesystemTrimStatus { - p := new(FilesystemTrim_FilesystemTrimStatus) - *p = x - return p +var FilesystemTrim_FilesystemTrimStatus_name = map[int32]string{ + 0: "FS_TRIM_UNKNOWN", + 1: "FS_TRIM_NOT_RUNNING", + 2: "FS_TRIM_STARTED", + 3: "FS_TRIM_INPROGRESS", + 4: "FS_TRIM_STOPPED", + 5: "FS_TRIM_COMPLETED", + 6: "FS_TRIM_FAILED", +} +var FilesystemTrim_FilesystemTrimStatus_value = map[string]int32{ + "FS_TRIM_UNKNOWN": 0, + "FS_TRIM_NOT_RUNNING": 1, + "FS_TRIM_STARTED": 2, + "FS_TRIM_INPROGRESS": 3, + "FS_TRIM_STOPPED": 4, + "FS_TRIM_COMPLETED": 5, + "FS_TRIM_FAILED": 6, } func (x FilesystemTrim_FilesystemTrimStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FilesystemTrim_FilesystemTrimStatus) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[50].Descriptor() -} - -func (FilesystemTrim_FilesystemTrimStatus) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[50] -} - -func (x FilesystemTrim_FilesystemTrimStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) + return proto.EnumName(FilesystemTrim_FilesystemTrimStatus_name, int32(x)) } - -// Deprecated: Use FilesystemTrim_FilesystemTrimStatus.Descriptor instead. func (FilesystemTrim_FilesystemTrimStatus) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{313, 0} + return fileDescriptor_api_bc0eb0e06839944e, []int{304, 0} } -// FilesystemCheckStatus represents the status codes returned from +// FilesystemChecktatus represents the status codes returned from // OpenStorageFilesystemCheck service APIs() type FilesystemCheck_FilesystemCheckStatus int32 @@ -3060,53 +1870,30 @@ const ( FilesystemCheck_FS_CHECK_FAILED FilesystemCheck_FilesystemCheckStatus = 6 ) -// Enum value maps for FilesystemCheck_FilesystemCheckStatus. -var ( - FilesystemCheck_FilesystemCheckStatus_name = map[int32]string{ - 0: "FS_CHECK_UNKNOWN", - 1: "FS_CHECK_NOT_RUNNING", - 2: "FS_CHECK_STARTED", - 3: "FS_CHECK_INPROGRESS", - 4: "FS_CHECK_STOPPED", - 5: "FS_CHECK_COMPLETED", - 6: "FS_CHECK_FAILED", - } - FilesystemCheck_FilesystemCheckStatus_value = map[string]int32{ - "FS_CHECK_UNKNOWN": 0, - "FS_CHECK_NOT_RUNNING": 1, - "FS_CHECK_STARTED": 2, - "FS_CHECK_INPROGRESS": 3, - "FS_CHECK_STOPPED": 4, - "FS_CHECK_COMPLETED": 5, - "FS_CHECK_FAILED": 6, - } -) - -func (x FilesystemCheck_FilesystemCheckStatus) Enum() *FilesystemCheck_FilesystemCheckStatus { - p := new(FilesystemCheck_FilesystemCheckStatus) - *p = x - return p +var FilesystemCheck_FilesystemCheckStatus_name = map[int32]string{ + 0: "FS_CHECK_UNKNOWN", + 1: "FS_CHECK_NOT_RUNNING", + 2: "FS_CHECK_STARTED", + 3: "FS_CHECK_INPROGRESS", + 4: "FS_CHECK_STOPPED", + 5: "FS_CHECK_COMPLETED", + 6: "FS_CHECK_FAILED", +} +var FilesystemCheck_FilesystemCheckStatus_value = map[string]int32{ + "FS_CHECK_UNKNOWN": 0, + "FS_CHECK_NOT_RUNNING": 1, + "FS_CHECK_STARTED": 2, + "FS_CHECK_INPROGRESS": 3, + "FS_CHECK_STOPPED": 4, + "FS_CHECK_COMPLETED": 5, + "FS_CHECK_FAILED": 6, } func (x FilesystemCheck_FilesystemCheckStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (FilesystemCheck_FilesystemCheckStatus) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[51].Descriptor() -} - -func (FilesystemCheck_FilesystemCheckStatus) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[51] -} - -func (x FilesystemCheck_FilesystemCheckStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) + return proto.EnumName(FilesystemCheck_FilesystemCheckStatus_name, int32(x)) } - -// Deprecated: Use FilesystemCheck_FilesystemCheckStatus.Descriptor instead. func (FilesystemCheck_FilesystemCheckStatus) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{330, 0} + return fileDescriptor_api_bc0eb0e06839944e, []int{321, 0} } type SdkServiceCapability_OpenStorageService_Type int32 @@ -3142,67 +1929,44 @@ const ( SdkServiceCapability_OpenStorageService_STORAGE_POLICY SdkServiceCapability_OpenStorageService_Type = 13 ) -// Enum value maps for SdkServiceCapability_OpenStorageService_Type. -var ( - SdkServiceCapability_OpenStorageService_Type_name = map[int32]string{ - 0: "UNKNOWN", - 1: "CLUSTER", - 2: "CLOUD_BACKUP", - 3: "CREDENTIALS", - 4: "NODE", - 5: "OBJECT_STORAGE", - 6: "SCHEDULE_POLICY", - 7: "VOLUME", - 8: "ALERTS", - 9: "MOUNT_ATTACH", - 10: "ROLE", - 11: "CLUSTER_PAIR", - 12: "MIGRATE", - 13: "STORAGE_POLICY", - } - SdkServiceCapability_OpenStorageService_Type_value = map[string]int32{ - "UNKNOWN": 0, - "CLUSTER": 1, - "CLOUD_BACKUP": 2, - "CREDENTIALS": 3, - "NODE": 4, - "OBJECT_STORAGE": 5, - "SCHEDULE_POLICY": 6, - "VOLUME": 7, - "ALERTS": 8, - "MOUNT_ATTACH": 9, - "ROLE": 10, - "CLUSTER_PAIR": 11, - "MIGRATE": 12, - "STORAGE_POLICY": 13, - } -) - -func (x SdkServiceCapability_OpenStorageService_Type) Enum() *SdkServiceCapability_OpenStorageService_Type { - p := new(SdkServiceCapability_OpenStorageService_Type) - *p = x - return p +var SdkServiceCapability_OpenStorageService_Type_name = map[int32]string{ + 0: "UNKNOWN", + 1: "CLUSTER", + 2: "CLOUD_BACKUP", + 3: "CREDENTIALS", + 4: "NODE", + 5: "OBJECT_STORAGE", + 6: "SCHEDULE_POLICY", + 7: "VOLUME", + 8: "ALERTS", + 9: "MOUNT_ATTACH", + 10: "ROLE", + 11: "CLUSTER_PAIR", + 12: "MIGRATE", + 13: "STORAGE_POLICY", +} +var SdkServiceCapability_OpenStorageService_Type_value = map[string]int32{ + "UNKNOWN": 0, + "CLUSTER": 1, + "CLOUD_BACKUP": 2, + "CREDENTIALS": 3, + "NODE": 4, + "OBJECT_STORAGE": 5, + "SCHEDULE_POLICY": 6, + "VOLUME": 7, + "ALERTS": 8, + "MOUNT_ATTACH": 9, + "ROLE": 10, + "CLUSTER_PAIR": 11, + "MIGRATE": 12, + "STORAGE_POLICY": 13, } func (x SdkServiceCapability_OpenStorageService_Type) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SdkServiceCapability_OpenStorageService_Type) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[52].Descriptor() -} - -func (SdkServiceCapability_OpenStorageService_Type) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[52] -} - -func (x SdkServiceCapability_OpenStorageService_Type) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) + return proto.EnumName(SdkServiceCapability_OpenStorageService_Type_name, int32(x)) } - -// Deprecated: Use SdkServiceCapability_OpenStorageService_Type.Descriptor instead. func (SdkServiceCapability_OpenStorageService_Type) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{349, 0, 0} + return fileDescriptor_api_bc0eb0e06839944e, []int{332, 0, 0} } // These values are constants that can be used by the @@ -3215,52 +1979,29 @@ const ( // SDK version major value of this specification SdkVersion_Major SdkVersion_Version = 0 // SDK version minor value of this specification - SdkVersion_Minor SdkVersion_Version = 176 + SdkVersion_Minor SdkVersion_Version = 101 // SDK version patch value of this specification - SdkVersion_Patch SdkVersion_Version = 0 -) - -// Enum value maps for SdkVersion_Version. -var ( - SdkVersion_Version_name = map[int32]string{ - 0: "MUST_HAVE_ZERO_VALUE", - // Duplicate value: 0: "Major", - 176: "Minor", - // Duplicate value: 0: "Patch", - } - SdkVersion_Version_value = map[string]int32{ - "MUST_HAVE_ZERO_VALUE": 0, - "Major": 0, - "Minor": 176, - "Patch": 0, - } + SdkVersion_Patch SdkVersion_Version = 50 ) -func (x SdkVersion_Version) Enum() *SdkVersion_Version { - p := new(SdkVersion_Version) - *p = x - return p +var SdkVersion_Version_name = map[int32]string{ + 0: "MUST_HAVE_ZERO_VALUE", + // Duplicate value: 0: "Major", + 101: "Minor", + 50: "Patch", } - -func (x SdkVersion_Version) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SdkVersion_Version) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[53].Descriptor() +var SdkVersion_Version_value = map[string]int32{ + "MUST_HAVE_ZERO_VALUE": 0, + "Major": 0, + "Minor": 101, + "Patch": 50, } -func (SdkVersion_Version) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[53] -} - -func (x SdkVersion_Version) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x SdkVersion_Version) String() string { + return proto.EnumName(SdkVersion_Version_name, int32(x)) } - -// Deprecated: Use SdkVersion_Version.Descriptor instead. func (SdkVersion_Version) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{350, 0} + return fileDescriptor_api_bc0eb0e06839944e, []int{333, 0} } type CloudMigrate_OperationType int32 @@ -3275,47 +2016,24 @@ const ( CloudMigrate_MigrateVolumeGroup CloudMigrate_OperationType = 3 ) -// Enum value maps for CloudMigrate_OperationType. -var ( - CloudMigrate_OperationType_name = map[int32]string{ - 0: "InvalidType", - 1: "MigrateCluster", - 2: "MigrateVolume", - 3: "MigrateVolumeGroup", - } - CloudMigrate_OperationType_value = map[string]int32{ - "InvalidType": 0, - "MigrateCluster": 1, - "MigrateVolume": 2, - "MigrateVolumeGroup": 3, - } -) - -func (x CloudMigrate_OperationType) Enum() *CloudMigrate_OperationType { - p := new(CloudMigrate_OperationType) - *p = x - return p -} - -func (x CloudMigrate_OperationType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (CloudMigrate_OperationType) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[54].Descriptor() +var CloudMigrate_OperationType_name = map[int32]string{ + 0: "InvalidType", + 1: "MigrateCluster", + 2: "MigrateVolume", + 3: "MigrateVolumeGroup", } - -func (CloudMigrate_OperationType) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[54] +var CloudMigrate_OperationType_value = map[string]int32{ + "InvalidType": 0, + "MigrateCluster": 1, + "MigrateVolume": 2, + "MigrateVolumeGroup": 3, } -func (x CloudMigrate_OperationType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x CloudMigrate_OperationType) String() string { + return proto.EnumName(CloudMigrate_OperationType_name, int32(x)) } - -// Deprecated: Use CloudMigrate_OperationType.Descriptor instead. func (CloudMigrate_OperationType) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{352, 0} + return fileDescriptor_api_bc0eb0e06839944e, []int{335, 0} } type CloudMigrate_Stage int32 @@ -3328,49 +2046,26 @@ const ( CloudMigrate_Done CloudMigrate_Stage = 4 ) -// Enum value maps for CloudMigrate_Stage. -var ( - CloudMigrate_Stage_name = map[int32]string{ - 0: "InvalidStage", - 1: "Backup", - 2: "Restore", - 3: "VolumeUpdate", - 4: "Done", - } - CloudMigrate_Stage_value = map[string]int32{ - "InvalidStage": 0, - "Backup": 1, - "Restore": 2, - "VolumeUpdate": 3, - "Done": 4, - } -) - -func (x CloudMigrate_Stage) Enum() *CloudMigrate_Stage { - p := new(CloudMigrate_Stage) - *p = x - return p -} - -func (x CloudMigrate_Stage) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (CloudMigrate_Stage) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[55].Descriptor() +var CloudMigrate_Stage_name = map[int32]string{ + 0: "InvalidStage", + 1: "Backup", + 2: "Restore", + 3: "VolumeUpdate", + 4: "Done", } - -func (CloudMigrate_Stage) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[55] +var CloudMigrate_Stage_value = map[string]int32{ + "InvalidStage": 0, + "Backup": 1, + "Restore": 2, + "VolumeUpdate": 3, + "Done": 4, } -func (x CloudMigrate_Stage) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x CloudMigrate_Stage) String() string { + return proto.EnumName(CloudMigrate_Stage_name, int32(x)) } - -// Deprecated: Use CloudMigrate_Stage.Descriptor instead. func (CloudMigrate_Stage) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{352, 1} + return fileDescriptor_api_bc0eb0e06839944e, []int{335, 1} } type CloudMigrate_Status int32 @@ -3385,53 +2080,30 @@ const ( CloudMigrate_Canceled CloudMigrate_Status = 6 ) -// Enum value maps for CloudMigrate_Status. -var ( - CloudMigrate_Status_name = map[int32]string{ - 0: "InvalidStatus", - 1: "Queued", - 2: "Initialized", - 3: "InProgress", - 4: "Failed", - 5: "Complete", - 6: "Canceled", - } - CloudMigrate_Status_value = map[string]int32{ - "InvalidStatus": 0, - "Queued": 1, - "Initialized": 2, - "InProgress": 3, - "Failed": 4, - "Complete": 5, - "Canceled": 6, - } -) - -func (x CloudMigrate_Status) Enum() *CloudMigrate_Status { - p := new(CloudMigrate_Status) - *p = x - return p +var CloudMigrate_Status_name = map[int32]string{ + 0: "InvalidStatus", + 1: "Queued", + 2: "Initialized", + 3: "InProgress", + 4: "Failed", + 5: "Complete", + 6: "Canceled", +} +var CloudMigrate_Status_value = map[string]int32{ + "InvalidStatus": 0, + "Queued": 1, + "Initialized": 2, + "InProgress": 3, + "Failed": 4, + "Complete": 5, + "Canceled": 6, } func (x CloudMigrate_Status) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (CloudMigrate_Status) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[56].Descriptor() -} - -func (CloudMigrate_Status) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[56] -} - -func (x CloudMigrate_Status) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) + return proto.EnumName(CloudMigrate_Status_name, int32(x)) } - -// Deprecated: Use CloudMigrate_Status.Descriptor instead. func (CloudMigrate_Status) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{352, 2} + return fileDescriptor_api_bc0eb0e06839944e, []int{335, 2} } type ClusterPairMode_Mode int32 @@ -3445,45 +2117,22 @@ const ( ClusterPairMode_OneTimeMigration ClusterPairMode_Mode = 2 ) -// Enum value maps for ClusterPairMode_Mode. -var ( - ClusterPairMode_Mode_name = map[int32]string{ - 0: "Default", - 1: "DisasterRecovery", - 2: "OneTimeMigration", - } - ClusterPairMode_Mode_value = map[string]int32{ - "Default": 0, - "DisasterRecovery": 1, - "OneTimeMigration": 2, - } -) - -func (x ClusterPairMode_Mode) Enum() *ClusterPairMode_Mode { - p := new(ClusterPairMode_Mode) - *p = x - return p -} - -func (x ClusterPairMode_Mode) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ClusterPairMode_Mode) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[57].Descriptor() +var ClusterPairMode_Mode_name = map[int32]string{ + 0: "Default", + 1: "DisasterRecovery", + 2: "OneTimeMigration", } - -func (ClusterPairMode_Mode) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[57] +var ClusterPairMode_Mode_value = map[string]int32{ + "Default": 0, + "DisasterRecovery": 1, + "OneTimeMigration": 2, } -func (x ClusterPairMode_Mode) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x ClusterPairMode_Mode) String() string { + return proto.EnumName(ClusterPairMode_Mode_name, int32(x)) } - -// Deprecated: Use ClusterPairMode_Mode.Descriptor instead. func (ClusterPairMode_Mode) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{366, 0} + return fileDescriptor_api_bc0eb0e06839944e, []int{349, 0} } // This defines operator types used in a label matching rule @@ -3504,420 +2153,313 @@ const ( LabelSelectorRequirement_Lt LabelSelectorRequirement_Operator = 5 ) -// Enum value maps for LabelSelectorRequirement_Operator. -var ( - LabelSelectorRequirement_Operator_name = map[int32]string{ - 0: "In", - 1: "NotIn", - 2: "Exists", - 3: "DoesNotExist", - 4: "Gt", - 5: "Lt", - } - LabelSelectorRequirement_Operator_value = map[string]int32{ - "In": 0, - "NotIn": 1, - "Exists": 2, - "DoesNotExist": 3, - "Gt": 4, - "Lt": 5, - } -) - -func (x LabelSelectorRequirement_Operator) Enum() *LabelSelectorRequirement_Operator { - p := new(LabelSelectorRequirement_Operator) - *p = x - return p +var LabelSelectorRequirement_Operator_name = map[int32]string{ + 0: "In", + 1: "NotIn", + 2: "Exists", + 3: "DoesNotExist", + 4: "Gt", + 5: "Lt", } - -func (x LabelSelectorRequirement_Operator) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (LabelSelectorRequirement_Operator) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[58].Descriptor() +var LabelSelectorRequirement_Operator_value = map[string]int32{ + "In": 0, + "NotIn": 1, + "Exists": 2, + "DoesNotExist": 3, + "Gt": 4, + "Lt": 5, } -func (LabelSelectorRequirement_Operator) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[58] -} - -func (x LabelSelectorRequirement_Operator) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) +func (x LabelSelectorRequirement_Operator) String() string { + return proto.EnumName(LabelSelectorRequirement_Operator_name, int32(x)) } - -// Deprecated: Use LabelSelectorRequirement_Operator.Descriptor instead. func (LabelSelectorRequirement_Operator) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{394, 0} -} - -// VerifyChecksumStatus represents the status codes returned from -// OpenStorageVerifyChecksum service APIs() -type VerifyChecksum_VerifyChecksumStatus int32 - -const ( - // VerifyChecksum operation is an unknown state - VerifyChecksum_VERIFY_CHECKSUM_UNKNOWN VerifyChecksum_VerifyChecksumStatus = 0 - // VerifyChecksum operation is not running for the specified volume - VerifyChecksum_VERIFY_CHECKSUM_NOT_RUNNING VerifyChecksum_VerifyChecksumStatus = 1 - // VerifyChecksum operation started for the specified volume - VerifyChecksum_VERIFY_CHECKSUM_STARTED VerifyChecksum_VerifyChecksumStatus = 2 - // VerifyChecksum operation was stopped by the user for the specified volume - VerifyChecksum_VERIFY_CHECKSUM_STOPPED VerifyChecksum_VerifyChecksumStatus = 3 - // VerifyChecksum operation completed successfully for the specified volume - VerifyChecksum_VERIFY_CHECKSUM_COMPLETED VerifyChecksum_VerifyChecksumStatus = 4 - // VerifyChecksum operation failed - VerifyChecksum_VERIFY_CHECKSUM_FAILED VerifyChecksum_VerifyChecksumStatus = 5 -) - -// Enum value maps for VerifyChecksum_VerifyChecksumStatus. -var ( - VerifyChecksum_VerifyChecksumStatus_name = map[int32]string{ - 0: "VERIFY_CHECKSUM_UNKNOWN", - 1: "VERIFY_CHECKSUM_NOT_RUNNING", - 2: "VERIFY_CHECKSUM_STARTED", - 3: "VERIFY_CHECKSUM_STOPPED", - 4: "VERIFY_CHECKSUM_COMPLETED", - 5: "VERIFY_CHECKSUM_FAILED", - } - VerifyChecksum_VerifyChecksumStatus_value = map[string]int32{ - "VERIFY_CHECKSUM_UNKNOWN": 0, - "VERIFY_CHECKSUM_NOT_RUNNING": 1, - "VERIFY_CHECKSUM_STARTED": 2, - "VERIFY_CHECKSUM_STOPPED": 3, - "VERIFY_CHECKSUM_COMPLETED": 4, - "VERIFY_CHECKSUM_FAILED": 5, - } -) - -func (x VerifyChecksum_VerifyChecksumStatus) Enum() *VerifyChecksum_VerifyChecksumStatus { - p := new(VerifyChecksum_VerifyChecksumStatus) - *p = x - return p -} - -func (x VerifyChecksum_VerifyChecksumStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (VerifyChecksum_VerifyChecksumStatus) Descriptor() protoreflect.EnumDescriptor { - return file_api_api_proto_enumTypes[59].Descriptor() -} - -func (VerifyChecksum_VerifyChecksumStatus) Type() protoreflect.EnumType { - return &file_api_api_proto_enumTypes[59] -} - -func (x VerifyChecksum_VerifyChecksumStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use VerifyChecksum_VerifyChecksumStatus.Descriptor instead. -func (VerifyChecksum_VerifyChecksumStatus) EnumDescriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{400, 0} + return fileDescriptor_api_bc0eb0e06839944e, []int{377, 0} } // StorageResource groups properties of a storage device. type StorageResource struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id is the LUN identifier. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` // Path device path for this storage resource. - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` + Path string `protobuf:"bytes,2,opt,name=path" json:"path,omitempty"` // Storage medium. - Medium StorageMedium `protobuf:"varint,3,opt,name=medium,proto3,enum=openstorage.api.StorageMedium" json:"medium,omitempty"` + Medium StorageMedium `protobuf:"varint,3,opt,name=medium,enum=openstorage.api.StorageMedium" json:"medium,omitempty"` // True if this device is online. - Online bool `protobuf:"varint,4,opt,name=online,proto3" json:"online,omitempty"` + Online bool `protobuf:"varint,4,opt,name=online" json:"online,omitempty"` // IOPS - Iops uint64 `protobuf:"varint,5,opt,name=iops,proto3" json:"iops,omitempty"` + Iops uint64 `protobuf:"varint,5,opt,name=iops" json:"iops,omitempty"` // SeqWrite - SeqWrite float64 `protobuf:"fixed64,6,opt,name=seq_write,json=seqWrite,proto3" json:"seq_write,omitempty"` + SeqWrite float64 `protobuf:"fixed64,6,opt,name=seq_write,json=seqWrite" json:"seq_write,omitempty"` // SeqRead - SeqRead float64 `protobuf:"fixed64,7,opt,name=seq_read,json=seqRead,proto3" json:"seq_read,omitempty"` + SeqRead float64 `protobuf:"fixed64,7,opt,name=seq_read,json=seqRead" json:"seq_read,omitempty"` // RandRW - RandRW float64 `protobuf:"fixed64,8,opt,name=randRW,proto3" json:"randRW,omitempty"` + RandRW float64 `protobuf:"fixed64,8,opt,name=randRW" json:"randRW,omitempty"` // Total size in bytes. - Size uint64 `protobuf:"varint,9,opt,name=size,proto3" json:"size,omitempty"` + Size uint64 `protobuf:"varint,9,opt,name=size" json:"size,omitempty"` // Physical Bytes used. - Used uint64 `protobuf:"varint,10,opt,name=used,proto3" json:"used,omitempty"` + Used uint64 `protobuf:"varint,10,opt,name=used" json:"used,omitempty"` // True if this device is rotational. - RotationSpeed string `protobuf:"bytes,11,opt,name=rotation_speed,json=rotationSpeed,proto3" json:"rotation_speed,omitempty"` + RotationSpeed string `protobuf:"bytes,11,opt,name=rotation_speed,json=rotationSpeed" json:"rotation_speed,omitempty"` // Timestamp of last time this device was scanned. - LastScan *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=last_scan,json=lastScan,proto3" json:"last_scan,omitempty"` + LastScan *timestamp.Timestamp `protobuf:"bytes,12,opt,name=last_scan,json=lastScan" json:"last_scan,omitempty"` // True if dedicated for metadata. - Metadata bool `protobuf:"varint,13,opt,name=metadata,proto3" json:"metadata,omitempty"` + Metadata bool `protobuf:"varint,13,opt,name=metadata" json:"metadata,omitempty"` // True if dedicated as cache - Cache bool `protobuf:"varint,14,opt,name=cache,proto3" json:"cache,omitempty"` + Cache bool `protobuf:"varint,14,opt,name=cache" json:"cache,omitempty"` // True if the resource is used as thin pool metadata disk - PoolMetadataDev bool `protobuf:"varint,15,opt,name=pool_metadata_dev,json=poolMetadataDev,proto3" json:"pool_metadata_dev,omitempty"` + PoolMetadataDev bool `protobuf:"varint,15,opt,name=pool_metadata_dev,json=poolMetadataDev" json:"pool_metadata_dev,omitempty"` // Cloud drive type - CloudDriveType string `protobuf:"bytes,16,opt,name=cloud_drive_type,json=cloudDriveType,proto3" json:"cloud_drive_type,omitempty"` + CloudDriveType string `protobuf:"bytes,16,opt,name=cloud_drive_type,json=cloudDriveType" json:"cloud_drive_type,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *StorageResource) Reset() { - *x = StorageResource{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *StorageResource) Reset() { *m = StorageResource{} } +func (m *StorageResource) String() string { return proto.CompactTextString(m) } +func (*StorageResource) ProtoMessage() {} +func (*StorageResource) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{0} } - -func (x *StorageResource) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *StorageResource) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_StorageResource.Unmarshal(m, b) } - -func (*StorageResource) ProtoMessage() {} - -func (x *StorageResource) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[0] - 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) +func (m *StorageResource) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_StorageResource.Marshal(b, m, deterministic) } - -// Deprecated: Use StorageResource.ProtoReflect.Descriptor instead. -func (*StorageResource) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{0} +func (dst *StorageResource) XXX_Merge(src proto.Message) { + xxx_messageInfo_StorageResource.Merge(dst, src) +} +func (m *StorageResource) XXX_Size() int { + return xxx_messageInfo_StorageResource.Size(m) } +func (m *StorageResource) XXX_DiscardUnknown() { + xxx_messageInfo_StorageResource.DiscardUnknown(m) +} + +var xxx_messageInfo_StorageResource proto.InternalMessageInfo -func (x *StorageResource) GetId() string { - if x != nil { - return x.Id +func (m *StorageResource) GetId() string { + if m != nil { + return m.Id } return "" } -func (x *StorageResource) GetPath() string { - if x != nil { - return x.Path +func (m *StorageResource) GetPath() string { + if m != nil { + return m.Path } return "" } -func (x *StorageResource) GetMedium() StorageMedium { - if x != nil { - return x.Medium +func (m *StorageResource) GetMedium() StorageMedium { + if m != nil { + return m.Medium } return StorageMedium_STORAGE_MEDIUM_MAGNETIC } -func (x *StorageResource) GetOnline() bool { - if x != nil { - return x.Online +func (m *StorageResource) GetOnline() bool { + if m != nil { + return m.Online } return false } -func (x *StorageResource) GetIops() uint64 { - if x != nil { - return x.Iops +func (m *StorageResource) GetIops() uint64 { + if m != nil { + return m.Iops } return 0 } -func (x *StorageResource) GetSeqWrite() float64 { - if x != nil { - return x.SeqWrite +func (m *StorageResource) GetSeqWrite() float64 { + if m != nil { + return m.SeqWrite } return 0 } -func (x *StorageResource) GetSeqRead() float64 { - if x != nil { - return x.SeqRead +func (m *StorageResource) GetSeqRead() float64 { + if m != nil { + return m.SeqRead } return 0 } -func (x *StorageResource) GetRandRW() float64 { - if x != nil { - return x.RandRW +func (m *StorageResource) GetRandRW() float64 { + if m != nil { + return m.RandRW } return 0 } -func (x *StorageResource) GetSize() uint64 { - if x != nil { - return x.Size +func (m *StorageResource) GetSize() uint64 { + if m != nil { + return m.Size } return 0 } -func (x *StorageResource) GetUsed() uint64 { - if x != nil { - return x.Used +func (m *StorageResource) GetUsed() uint64 { + if m != nil { + return m.Used } return 0 } -func (x *StorageResource) GetRotationSpeed() string { - if x != nil { - return x.RotationSpeed +func (m *StorageResource) GetRotationSpeed() string { + if m != nil { + return m.RotationSpeed } return "" } -func (x *StorageResource) GetLastScan() *timestamppb.Timestamp { - if x != nil { - return x.LastScan +func (m *StorageResource) GetLastScan() *timestamp.Timestamp { + if m != nil { + return m.LastScan } return nil } -func (x *StorageResource) GetMetadata() bool { - if x != nil { - return x.Metadata +func (m *StorageResource) GetMetadata() bool { + if m != nil { + return m.Metadata } return false } -func (x *StorageResource) GetCache() bool { - if x != nil { - return x.Cache +func (m *StorageResource) GetCache() bool { + if m != nil { + return m.Cache } return false } -func (x *StorageResource) GetPoolMetadataDev() bool { - if x != nil { - return x.PoolMetadataDev +func (m *StorageResource) GetPoolMetadataDev() bool { + if m != nil { + return m.PoolMetadataDev } return false } -func (x *StorageResource) GetCloudDriveType() string { - if x != nil { - return x.CloudDriveType +func (m *StorageResource) GetCloudDriveType() string { + if m != nil { + return m.CloudDriveType } return "" } // StoragePool groups different storage devices based on their CosType type StoragePool struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Deprecated! Use `uuid` instead. ID pool ID - ID int32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + ID int32 `protobuf:"varint,1,opt,name=ID" json:"ID,omitempty"` // Cos reflects the capabilities of this drive pool - Cos CosType `protobuf:"varint,2,opt,name=Cos,proto3,enum=openstorage.api.CosType" json:"Cos,omitempty"` + Cos CosType `protobuf:"varint,2,opt,name=Cos,enum=openstorage.api.CosType" json:"Cos,omitempty"` // Medium underlying storage type - Medium StorageMedium `protobuf:"varint,3,opt,name=Medium,proto3,enum=openstorage.api.StorageMedium" json:"Medium,omitempty"` + Medium StorageMedium `protobuf:"varint,3,opt,name=Medium,enum=openstorage.api.StorageMedium" json:"Medium,omitempty"` // RaidLevel storage raid level - RaidLevel string `protobuf:"bytes,4,opt,name=RaidLevel,proto3" json:"RaidLevel,omitempty"` + RaidLevel string `protobuf:"bytes,4,opt,name=RaidLevel" json:"RaidLevel,omitempty"` // TotalSize of the pool - TotalSize uint64 `protobuf:"varint,7,opt,name=TotalSize,proto3" json:"TotalSize,omitempty"` + TotalSize uint64 `protobuf:"varint,7,opt,name=TotalSize" json:"TotalSize,omitempty"` // Used size of the pool - Used uint64 `protobuf:"varint,8,opt,name=Used,proto3" json:"Used,omitempty"` + Used uint64 `protobuf:"varint,8,opt,name=Used" json:"Used,omitempty"` // Labels is a list of user defined name-value pairs - Labels map[string]string `protobuf:"bytes,9,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Labels map[string]string `protobuf:"bytes,9,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // UUID is the unique identifier for a storage pool - Uuid string `protobuf:"bytes,10,opt,name=uuid,proto3" json:"uuid,omitempty"` + Uuid string `protobuf:"bytes,10,opt,name=uuid" json:"uuid,omitempty"` // LastOperation is the most recent operation being performed on a storage pool - LastOperation *StoragePoolOperation `protobuf:"bytes,11,opt,name=last_operation,json=lastOperation,proto3" json:"last_operation,omitempty"` + LastOperation *StoragePoolOperation `protobuf:"bytes,11,opt,name=last_operation,json=lastOperation" json:"last_operation,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *StoragePool) Reset() { - *x = StoragePool{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *StoragePool) Reset() { *m = StoragePool{} } +func (m *StoragePool) String() string { return proto.CompactTextString(m) } +func (*StoragePool) ProtoMessage() {} +func (*StoragePool) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{1} } - -func (x *StoragePool) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *StoragePool) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_StoragePool.Unmarshal(m, b) } - -func (*StoragePool) ProtoMessage() {} - -func (x *StoragePool) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[1] - 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) +func (m *StoragePool) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_StoragePool.Marshal(b, m, deterministic) } - -// Deprecated: Use StoragePool.ProtoReflect.Descriptor instead. -func (*StoragePool) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{1} +func (dst *StoragePool) XXX_Merge(src proto.Message) { + xxx_messageInfo_StoragePool.Merge(dst, src) +} +func (m *StoragePool) XXX_Size() int { + return xxx_messageInfo_StoragePool.Size(m) } +func (m *StoragePool) XXX_DiscardUnknown() { + xxx_messageInfo_StoragePool.DiscardUnknown(m) +} + +var xxx_messageInfo_StoragePool proto.InternalMessageInfo -func (x *StoragePool) GetID() int32 { - if x != nil { - return x.ID +func (m *StoragePool) GetID() int32 { + if m != nil { + return m.ID } return 0 } -func (x *StoragePool) GetCos() CosType { - if x != nil { - return x.Cos +func (m *StoragePool) GetCos() CosType { + if m != nil { + return m.Cos } return CosType_NONE } -func (x *StoragePool) GetMedium() StorageMedium { - if x != nil { - return x.Medium +func (m *StoragePool) GetMedium() StorageMedium { + if m != nil { + return m.Medium } return StorageMedium_STORAGE_MEDIUM_MAGNETIC } -func (x *StoragePool) GetRaidLevel() string { - if x != nil { - return x.RaidLevel +func (m *StoragePool) GetRaidLevel() string { + if m != nil { + return m.RaidLevel } return "" } -func (x *StoragePool) GetTotalSize() uint64 { - if x != nil { - return x.TotalSize +func (m *StoragePool) GetTotalSize() uint64 { + if m != nil { + return m.TotalSize } return 0 } -func (x *StoragePool) GetUsed() uint64 { - if x != nil { - return x.Used +func (m *StoragePool) GetUsed() uint64 { + if m != nil { + return m.Used } return 0 } -func (x *StoragePool) GetLabels() map[string]string { - if x != nil { - return x.Labels +func (m *StoragePool) GetLabels() map[string]string { + if m != nil { + return m.Labels } return nil } -func (x *StoragePool) GetUuid() string { - if x != nil { - return x.Uuid +func (m *StoragePool) GetUuid() string { + if m != nil { + return m.Uuid } return "" } -func (x *StoragePool) GetLastOperation() *StoragePoolOperation { - if x != nil { - return x.LastOperation +func (m *StoragePool) GetLastOperation() *StoragePoolOperation { + if m != nil { + return m.LastOperation } return nil } @@ -3925,174 +2467,147 @@ func (x *StoragePool) GetLastOperation() *StoragePoolOperation { // SchedulerTopology defines the topology information of the storage node // in scheduler context type SchedulerTopology struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Key-value pairs defining the topology of the node - Labels map[string]string `protobuf:"bytes,1,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Labels map[string]string `protobuf:"bytes,1,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SchedulerTopology) Reset() { - *x = SchedulerTopology{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SchedulerTopology) Reset() { *m = SchedulerTopology{} } +func (m *SchedulerTopology) String() string { return proto.CompactTextString(m) } +func (*SchedulerTopology) ProtoMessage() {} +func (*SchedulerTopology) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{2} } - -func (x *SchedulerTopology) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SchedulerTopology) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SchedulerTopology.Unmarshal(m, b) } - -func (*SchedulerTopology) ProtoMessage() {} - -func (x *SchedulerTopology) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[2] - 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) +func (m *SchedulerTopology) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SchedulerTopology.Marshal(b, m, deterministic) } - -// Deprecated: Use SchedulerTopology.ProtoReflect.Descriptor instead. -func (*SchedulerTopology) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{2} +func (dst *SchedulerTopology) XXX_Merge(src proto.Message) { + xxx_messageInfo_SchedulerTopology.Merge(dst, src) +} +func (m *SchedulerTopology) XXX_Size() int { + return xxx_messageInfo_SchedulerTopology.Size(m) +} +func (m *SchedulerTopology) XXX_DiscardUnknown() { + xxx_messageInfo_SchedulerTopology.DiscardUnknown(m) } -func (x *SchedulerTopology) GetLabels() map[string]string { - if x != nil { - return x.Labels +var xxx_messageInfo_SchedulerTopology proto.InternalMessageInfo + +func (m *SchedulerTopology) GetLabels() map[string]string { + if m != nil { + return m.Labels } return nil } // StoragePoolOperation defines an operation being performed on a storage pool type StoragePoolOperation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Type is the type of the operation - Type SdkStoragePool_OperationType `protobuf:"varint,1,opt,name=type,proto3,enum=openstorage.api.SdkStoragePool_OperationType" json:"type,omitempty"` + Type SdkStoragePool_OperationType `protobuf:"varint,1,opt,name=type,enum=openstorage.api.SdkStoragePool_OperationType" json:"type,omitempty"` // Msg is a user friendly message for the operation - Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg" json:"msg,omitempty"` // Params for the parameters for the operation - Params map[string]string `protobuf:"bytes,3,rep,name=params,proto3" json:"params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Params map[string]string `protobuf:"bytes,3,rep,name=params" json:"params,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Status is the status of the operation - Status SdkStoragePool_OperationStatus `protobuf:"varint,4,opt,name=status,proto3,enum=openstorage.api.SdkStoragePool_OperationStatus" json:"status,omitempty"` + Status SdkStoragePool_OperationStatus `protobuf:"varint,4,opt,name=status,enum=openstorage.api.SdkStoragePool_OperationStatus" json:"status,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *StoragePoolOperation) Reset() { - *x = StoragePoolOperation{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *StoragePoolOperation) Reset() { *m = StoragePoolOperation{} } +func (m *StoragePoolOperation) String() string { return proto.CompactTextString(m) } +func (*StoragePoolOperation) ProtoMessage() {} +func (*StoragePoolOperation) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{3} } - -func (x *StoragePoolOperation) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *StoragePoolOperation) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_StoragePoolOperation.Unmarshal(m, b) } - -func (*StoragePoolOperation) ProtoMessage() {} - -func (x *StoragePoolOperation) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[3] - 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) +func (m *StoragePoolOperation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_StoragePoolOperation.Marshal(b, m, deterministic) } - -// Deprecated: Use StoragePoolOperation.ProtoReflect.Descriptor instead. -func (*StoragePoolOperation) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{3} +func (dst *StoragePoolOperation) XXX_Merge(src proto.Message) { + xxx_messageInfo_StoragePoolOperation.Merge(dst, src) +} +func (m *StoragePoolOperation) XXX_Size() int { + return xxx_messageInfo_StoragePoolOperation.Size(m) +} +func (m *StoragePoolOperation) XXX_DiscardUnknown() { + xxx_messageInfo_StoragePoolOperation.DiscardUnknown(m) } -func (x *StoragePoolOperation) GetType() SdkStoragePool_OperationType { - if x != nil { - return x.Type +var xxx_messageInfo_StoragePoolOperation proto.InternalMessageInfo + +func (m *StoragePoolOperation) GetType() SdkStoragePool_OperationType { + if m != nil { + return m.Type } return SdkStoragePool_OPERATION_RESIZE } -func (x *StoragePoolOperation) GetMsg() string { - if x != nil { - return x.Msg +func (m *StoragePoolOperation) GetMsg() string { + if m != nil { + return m.Msg } return "" } -func (x *StoragePoolOperation) GetParams() map[string]string { - if x != nil { - return x.Params +func (m *StoragePoolOperation) GetParams() map[string]string { + if m != nil { + return m.Params } return nil } -func (x *StoragePoolOperation) GetStatus() SdkStoragePool_OperationStatus { - if x != nil { - return x.Status +func (m *StoragePoolOperation) GetStatus() SdkStoragePool_OperationStatus { + if m != nil { + return m.Status } return SdkStoragePool_OPERATION_PENDING } // TopologyRequirement defines the topology requirement for a volume type TopologyRequirement struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Key-value pairs defining the required topology for a volume - Labels map[string]string `protobuf:"bytes,1,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Labels map[string]string `protobuf:"bytes,1,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *TopologyRequirement) Reset() { - *x = TopologyRequirement{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *TopologyRequirement) Reset() { *m = TopologyRequirement{} } +func (m *TopologyRequirement) String() string { return proto.CompactTextString(m) } +func (*TopologyRequirement) ProtoMessage() {} +func (*TopologyRequirement) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{4} } - -func (x *TopologyRequirement) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *TopologyRequirement) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_TopologyRequirement.Unmarshal(m, b) } - -func (*TopologyRequirement) ProtoMessage() {} - -func (x *TopologyRequirement) ProtoReflect() protoreflect.Message { - mi := &file_api_api_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) +func (m *TopologyRequirement) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_TopologyRequirement.Marshal(b, m, deterministic) } - -// Deprecated: Use TopologyRequirement.ProtoReflect.Descriptor instead. -func (*TopologyRequirement) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{4} +func (dst *TopologyRequirement) XXX_Merge(src proto.Message) { + xxx_messageInfo_TopologyRequirement.Merge(dst, src) +} +func (m *TopologyRequirement) XXX_Size() int { + return xxx_messageInfo_TopologyRequirement.Size(m) +} +func (m *TopologyRequirement) XXX_DiscardUnknown() { + xxx_messageInfo_TopologyRequirement.DiscardUnknown(m) } -func (x *TopologyRequirement) GetLabels() map[string]string { - if x != nil { - return x.Labels +var xxx_messageInfo_TopologyRequirement proto.InternalMessageInfo + +func (m *TopologyRequirement) GetLabels() map[string]string { + if m != nil { + return m.Labels } return nil } @@ -4100,135 +2615,117 @@ func (x *TopologyRequirement) GetLabels() map[string]string { // VolumeLocator is a structure that is attached to a volume // and is used to carry opaque metadata. type VolumeLocator struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // User friendly identifier - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` // A set of name-value pairs that acts as search filters - VolumeLabels map[string]string `protobuf:"bytes,2,rep,name=volume_labels,json=volumeLabels,proto3" json:"volume_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + VolumeLabels map[string]string `protobuf:"bytes,2,rep,name=volume_labels,json=volumeLabels" json:"volume_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Filter with ownership - Ownership *Ownership `protobuf:"bytes,3,opt,name=ownership,proto3" json:"ownership,omitempty"` + Ownership *Ownership `protobuf:"bytes,3,opt,name=ownership" json:"ownership,omitempty"` // Filter by group - Group *Group `protobuf:"bytes,4,opt,name=group,proto3" json:"group,omitempty"` + Group *Group `protobuf:"bytes,4,opt,name=group" json:"group,omitempty"` // Volume Ids to match - VolumeIds []string `protobuf:"bytes,5,rep,name=volume_ids,json=volumeIds,proto3" json:"volume_ids,omitempty"` + VolumeIds []string `protobuf:"bytes,5,rep,name=volume_ids,json=volumeIds" json:"volume_ids,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VolumeLocator) Reset() { - *x = VolumeLocator{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *VolumeLocator) Reset() { *m = VolumeLocator{} } +func (m *VolumeLocator) String() string { return proto.CompactTextString(m) } +func (*VolumeLocator) ProtoMessage() {} +func (*VolumeLocator) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{5} } - -func (x *VolumeLocator) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *VolumeLocator) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumeLocator.Unmarshal(m, b) } - -func (*VolumeLocator) ProtoMessage() {} - -func (x *VolumeLocator) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[5] - 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) +func (m *VolumeLocator) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumeLocator.Marshal(b, m, deterministic) } - -// Deprecated: Use VolumeLocator.ProtoReflect.Descriptor instead. -func (*VolumeLocator) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{5} +func (dst *VolumeLocator) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumeLocator.Merge(dst, src) +} +func (m *VolumeLocator) XXX_Size() int { + return xxx_messageInfo_VolumeLocator.Size(m) +} +func (m *VolumeLocator) XXX_DiscardUnknown() { + xxx_messageInfo_VolumeLocator.DiscardUnknown(m) } -func (x *VolumeLocator) GetName() string { - if x != nil { - return x.Name +var xxx_messageInfo_VolumeLocator proto.InternalMessageInfo + +func (m *VolumeLocator) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *VolumeLocator) GetVolumeLabels() map[string]string { - if x != nil { - return x.VolumeLabels +func (m *VolumeLocator) GetVolumeLabels() map[string]string { + if m != nil { + return m.VolumeLabels } return nil } -func (x *VolumeLocator) GetOwnership() *Ownership { - if x != nil { - return x.Ownership +func (m *VolumeLocator) GetOwnership() *Ownership { + if m != nil { + return m.Ownership } return nil } -func (x *VolumeLocator) GetGroup() *Group { - if x != nil { - return x.Group +func (m *VolumeLocator) GetGroup() *Group { + if m != nil { + return m.Group } return nil } -func (x *VolumeLocator) GetVolumeIds() []string { - if x != nil { - return x.VolumeIds +func (m *VolumeLocator) GetVolumeIds() []string { + if m != nil { + return m.VolumeIds } return nil } // Options used for volume inspection type VolumeInspectOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Deep inspection is used to collect more information about // the volume. Setting this value may delay the request. - Deep bool `protobuf:"varint,1,opt,name=deep,proto3" json:"deep,omitempty"` + Deep bool `protobuf:"varint,1,opt,name=deep" json:"deep,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VolumeInspectOptions) Reset() { - *x = VolumeInspectOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *VolumeInspectOptions) Reset() { *m = VolumeInspectOptions{} } +func (m *VolumeInspectOptions) String() string { return proto.CompactTextString(m) } +func (*VolumeInspectOptions) ProtoMessage() {} +func (*VolumeInspectOptions) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{6} } - -func (x *VolumeInspectOptions) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *VolumeInspectOptions) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumeInspectOptions.Unmarshal(m, b) } - -func (*VolumeInspectOptions) ProtoMessage() {} - -func (x *VolumeInspectOptions) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[6] - 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) +func (m *VolumeInspectOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumeInspectOptions.Marshal(b, m, deterministic) } - -// Deprecated: Use VolumeInspectOptions.ProtoReflect.Descriptor instead. -func (*VolumeInspectOptions) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{6} +func (dst *VolumeInspectOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumeInspectOptions.Merge(dst, src) +} +func (m *VolumeInspectOptions) XXX_Size() int { + return xxx_messageInfo_VolumeInspectOptions.Size(m) } +func (m *VolumeInspectOptions) XXX_DiscardUnknown() { + xxx_messageInfo_VolumeInspectOptions.DiscardUnknown(m) +} + +var xxx_messageInfo_VolumeInspectOptions proto.InternalMessageInfo -func (x *VolumeInspectOptions) GetDeep() bool { - if x != nil { - return x.Deep +func (m *VolumeInspectOptions) GetDeep() bool { + if m != nil { + return m.Deep } return false } @@ -4236,59 +2733,50 @@ func (x *VolumeInspectOptions) GetDeep() bool { // Source is a structure that can be given to a volume // to seed the volume with data. type Source struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // A volume id, if specified will create a clone of the parent. - Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` // Seed will seed the volume from the specified URI // Any additional config for the source comes from the labels in the spec - Seed string `protobuf:"bytes,2,opt,name=seed,proto3" json:"seed,omitempty"` + Seed string `protobuf:"bytes,2,opt,name=seed" json:"seed,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Source) Reset() { - *x = Source{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *Source) Reset() { *m = Source{} } +func (m *Source) String() string { return proto.CompactTextString(m) } +func (*Source) ProtoMessage() {} +func (*Source) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{7} } - -func (x *Source) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *Source) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Source.Unmarshal(m, b) } - -func (*Source) ProtoMessage() {} - -func (x *Source) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[7] - 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) +func (m *Source) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Source.Marshal(b, m, deterministic) } - -// Deprecated: Use Source.ProtoReflect.Descriptor instead. -func (*Source) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{7} +func (dst *Source) XXX_Merge(src proto.Message) { + xxx_messageInfo_Source.Merge(dst, src) +} +func (m *Source) XXX_Size() int { + return xxx_messageInfo_Source.Size(m) } +func (m *Source) XXX_DiscardUnknown() { + xxx_messageInfo_Source.DiscardUnknown(m) +} + +var xxx_messageInfo_Source proto.InternalMessageInfo -func (x *Source) GetParent() string { - if x != nil { - return x.Parent +func (m *Source) GetParent() string { + if m != nil { + return m.Parent } return "" } -func (x *Source) GetSeed() string { - if x != nil { - return x.Seed +func (m *Source) GetSeed() string { + if m != nil { + return m.Seed } return "" } @@ -4296,585 +2784,512 @@ func (x *Source) GetSeed() string { // Group represents VolumeGroup / namespace // All volumes in the same group share this object. type Group struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id common identifier across volumes that have the same group. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Group) Reset() { - *x = Group{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *Group) Reset() { *m = Group{} } +func (m *Group) String() string { return proto.CompactTextString(m) } +func (*Group) ProtoMessage() {} +func (*Group) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{8} } - -func (x *Group) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *Group) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Group.Unmarshal(m, b) } - -func (*Group) ProtoMessage() {} - -func (x *Group) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[8] - 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) +func (m *Group) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Group.Marshal(b, m, deterministic) } - -// Deprecated: Use Group.ProtoReflect.Descriptor instead. -func (*Group) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{8} +func (dst *Group) XXX_Merge(src proto.Message) { + xxx_messageInfo_Group.Merge(dst, src) +} +func (m *Group) XXX_Size() int { + return xxx_messageInfo_Group.Size(m) +} +func (m *Group) XXX_DiscardUnknown() { + xxx_messageInfo_Group.DiscardUnknown(m) } -func (x *Group) GetId() string { - if x != nil { - return x.Id +var xxx_messageInfo_Group proto.InternalMessageInfo + +func (m *Group) GetId() string { + if m != nil { + return m.Id } return "" } // IoStrategy defines how I/O should be performed to backing storage media. type IoStrategy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // AsyncIO enables kaio. - AsyncIo bool `protobuf:"varint,1,opt,name=async_io,json=asyncIo,proto3" json:"async_io,omitempty"` + AsyncIo bool `protobuf:"varint,1,opt,name=async_io,json=asyncIo" json:"async_io,omitempty"` // EarlyAck enables acks for async I/O at the source. - EarlyAck bool `protobuf:"varint,2,opt,name=early_ack,json=earlyAck,proto3" json:"early_ack,omitempty"` + EarlyAck bool `protobuf:"varint,2,opt,name=early_ack,json=earlyAck" json:"early_ack,omitempty"` // Enable direct I/O on the backing datastore - DirectIo bool `protobuf:"varint,3,opt,name=direct_io,json=directIo,proto3" json:"direct_io,omitempty"` + DirectIo bool `protobuf:"varint,3,opt,name=direct_io,json=directIo" json:"direct_io,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *IoStrategy) Reset() { - *x = IoStrategy{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *IoStrategy) Reset() { *m = IoStrategy{} } +func (m *IoStrategy) String() string { return proto.CompactTextString(m) } +func (*IoStrategy) ProtoMessage() {} +func (*IoStrategy) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{9} } - -func (x *IoStrategy) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *IoStrategy) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_IoStrategy.Unmarshal(m, b) } - -func (*IoStrategy) ProtoMessage() {} - -func (x *IoStrategy) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[9] - 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) +func (m *IoStrategy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_IoStrategy.Marshal(b, m, deterministic) } - -// Deprecated: Use IoStrategy.ProtoReflect.Descriptor instead. -func (*IoStrategy) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{9} +func (dst *IoStrategy) XXX_Merge(src proto.Message) { + xxx_messageInfo_IoStrategy.Merge(dst, src) +} +func (m *IoStrategy) XXX_Size() int { + return xxx_messageInfo_IoStrategy.Size(m) +} +func (m *IoStrategy) XXX_DiscardUnknown() { + xxx_messageInfo_IoStrategy.DiscardUnknown(m) } -func (x *IoStrategy) GetAsyncIo() bool { - if x != nil { - return x.AsyncIo +var xxx_messageInfo_IoStrategy proto.InternalMessageInfo + +func (m *IoStrategy) GetAsyncIo() bool { + if m != nil { + return m.AsyncIo } return false } -func (x *IoStrategy) GetEarlyAck() bool { - if x != nil { - return x.EarlyAck +func (m *IoStrategy) GetEarlyAck() bool { + if m != nil { + return m.EarlyAck } return false } -func (x *IoStrategy) GetDirectIo() bool { - if x != nil { - return x.DirectIo +func (m *IoStrategy) GetDirectIo() bool { + if m != nil { + return m.DirectIo } return false } // Xattr defines implementation specific volume attribute type Xattr struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Xattr) Reset() { - *x = Xattr{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *Xattr) Reset() { *m = Xattr{} } +func (m *Xattr) String() string { return proto.CompactTextString(m) } +func (*Xattr) ProtoMessage() {} +func (*Xattr) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{10} } - -func (x *Xattr) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *Xattr) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Xattr.Unmarshal(m, b) } - -func (*Xattr) ProtoMessage() {} - -func (x *Xattr) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[10] - 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) +func (m *Xattr) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Xattr.Marshal(b, m, deterministic) } - -// Deprecated: Use Xattr.ProtoReflect.Descriptor instead. -func (*Xattr) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{10} +func (dst *Xattr) XXX_Merge(src proto.Message) { + xxx_messageInfo_Xattr.Merge(dst, src) +} +func (m *Xattr) XXX_Size() int { + return xxx_messageInfo_Xattr.Size(m) } +func (m *Xattr) XXX_DiscardUnknown() { + xxx_messageInfo_Xattr.DiscardUnknown(m) +} + +var xxx_messageInfo_Xattr proto.InternalMessageInfo // ExportSpec defines how the volume is exported.. type ExportSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // ExportProtocol defines how the volume is exported. - ExportProtocol ExportProtocol `protobuf:"varint,1,opt,name=export_protocol,json=exportProtocol,proto3,enum=openstorage.api.ExportProtocol" json:"export_protocol,omitempty"` + ExportProtocol ExportProtocol `protobuf:"varint,1,opt,name=export_protocol,json=exportProtocol,enum=openstorage.api.ExportProtocol" json:"export_protocol,omitempty"` // ExportOptions options exporting the volume. - ExportOptions string `protobuf:"bytes,2,opt,name=export_options,json=exportOptions,proto3" json:"export_options,omitempty"` + ExportOptions string `protobuf:"bytes,2,opt,name=export_options,json=exportOptions" json:"export_options,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ExportSpec) Reset() { - *x = ExportSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *ExportSpec) Reset() { *m = ExportSpec{} } +func (m *ExportSpec) String() string { return proto.CompactTextString(m) } +func (*ExportSpec) ProtoMessage() {} +func (*ExportSpec) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{11} } - -func (x *ExportSpec) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *ExportSpec) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ExportSpec.Unmarshal(m, b) } - -func (*ExportSpec) ProtoMessage() {} - -func (x *ExportSpec) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[11] - 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) +func (m *ExportSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ExportSpec.Marshal(b, m, deterministic) } - -// Deprecated: Use ExportSpec.ProtoReflect.Descriptor instead. -func (*ExportSpec) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{11} +func (dst *ExportSpec) XXX_Merge(src proto.Message) { + xxx_messageInfo_ExportSpec.Merge(dst, src) +} +func (m *ExportSpec) XXX_Size() int { + return xxx_messageInfo_ExportSpec.Size(m) +} +func (m *ExportSpec) XXX_DiscardUnknown() { + xxx_messageInfo_ExportSpec.DiscardUnknown(m) } -func (x *ExportSpec) GetExportProtocol() ExportProtocol { - if x != nil { - return x.ExportProtocol +var xxx_messageInfo_ExportSpec proto.InternalMessageInfo + +func (m *ExportSpec) GetExportProtocol() ExportProtocol { + if m != nil { + return m.ExportProtocol } return ExportProtocol_INVALID } -func (x *ExportSpec) GetExportOptions() string { - if x != nil { - return x.ExportOptions +func (m *ExportSpec) GetExportOptions() string { + if m != nil { + return m.ExportOptions } return "" } // NFSProxySpec is the spec for proxying an NFS share. type NFSProxySpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // ExportPath is the NFS export path on the NFS server - ExportPath string `protobuf:"bytes,1,opt,name=export_path,json=exportPath,proto3" json:"export_path,omitempty"` + ExportPath string `protobuf:"bytes,1,opt,name=export_path,json=exportPath" json:"export_path,omitempty"` // SubPath is the sub-directory from an NFS share that should be reflected. - SubPath string `protobuf:"bytes,2,opt,name=sub_path,json=subPath,proto3" json:"sub_path,omitempty"` + SubPath string `protobuf:"bytes,2,opt,name=sub_path,json=subPath" json:"sub_path,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *NFSProxySpec) Reset() { - *x = NFSProxySpec{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *NFSProxySpec) Reset() { *m = NFSProxySpec{} } +func (m *NFSProxySpec) String() string { return proto.CompactTextString(m) } +func (*NFSProxySpec) ProtoMessage() {} +func (*NFSProxySpec) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{12} } - -func (x *NFSProxySpec) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *NFSProxySpec) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_NFSProxySpec.Unmarshal(m, b) } - -func (*NFSProxySpec) ProtoMessage() {} - -func (x *NFSProxySpec) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[12] - 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) +func (m *NFSProxySpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_NFSProxySpec.Marshal(b, m, deterministic) } - -// Deprecated: Use NFSProxySpec.ProtoReflect.Descriptor instead. -func (*NFSProxySpec) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{12} +func (dst *NFSProxySpec) XXX_Merge(src proto.Message) { + xxx_messageInfo_NFSProxySpec.Merge(dst, src) +} +func (m *NFSProxySpec) XXX_Size() int { + return xxx_messageInfo_NFSProxySpec.Size(m) } +func (m *NFSProxySpec) XXX_DiscardUnknown() { + xxx_messageInfo_NFSProxySpec.DiscardUnknown(m) +} + +var xxx_messageInfo_NFSProxySpec proto.InternalMessageInfo -func (x *NFSProxySpec) GetExportPath() string { - if x != nil { - return x.ExportPath +func (m *NFSProxySpec) GetExportPath() string { + if m != nil { + return m.ExportPath } return "" } -func (x *NFSProxySpec) GetSubPath() string { - if x != nil { - return x.SubPath +func (m *NFSProxySpec) GetSubPath() string { + if m != nil { + return m.SubPath } return "" } // S3ProxySpec is the spec for proxying an external object store. type S3ProxySpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // BucketName is the name of the bucket from the object store - BucketName string `protobuf:"bytes,1,opt,name=bucket_name,json=bucketName,proto3" json:"bucket_name,omitempty"` + BucketName string `protobuf:"bytes,1,opt,name=bucket_name,json=bucketName" json:"bucket_name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *S3ProxySpec) Reset() { - *x = S3ProxySpec{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *S3ProxySpec) Reset() { *m = S3ProxySpec{} } +func (m *S3ProxySpec) String() string { return proto.CompactTextString(m) } +func (*S3ProxySpec) ProtoMessage() {} +func (*S3ProxySpec) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{13} } - -func (x *S3ProxySpec) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *S3ProxySpec) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_S3ProxySpec.Unmarshal(m, b) } - -func (*S3ProxySpec) ProtoMessage() {} - -func (x *S3ProxySpec) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[13] - 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) +func (m *S3ProxySpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_S3ProxySpec.Marshal(b, m, deterministic) } - -// Deprecated: Use S3ProxySpec.ProtoReflect.Descriptor instead. -func (*S3ProxySpec) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{13} +func (dst *S3ProxySpec) XXX_Merge(src proto.Message) { + xxx_messageInfo_S3ProxySpec.Merge(dst, src) +} +func (m *S3ProxySpec) XXX_Size() int { + return xxx_messageInfo_S3ProxySpec.Size(m) +} +func (m *S3ProxySpec) XXX_DiscardUnknown() { + xxx_messageInfo_S3ProxySpec.DiscardUnknown(m) } -func (x *S3ProxySpec) GetBucketName() string { - if x != nil { - return x.BucketName +var xxx_messageInfo_S3ProxySpec proto.InternalMessageInfo + +func (m *S3ProxySpec) GetBucketName() string { + if m != nil { + return m.BucketName } return "" } // PXDProxySpec is the spec for proxying a Portworx volume type PXDProxySpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // ID of the remote portworx volume - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *PXDProxySpec) Reset() { - *x = PXDProxySpec{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *PXDProxySpec) Reset() { *m = PXDProxySpec{} } +func (m *PXDProxySpec) String() string { return proto.CompactTextString(m) } +func (*PXDProxySpec) ProtoMessage() {} +func (*PXDProxySpec) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{14} } - -func (x *PXDProxySpec) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *PXDProxySpec) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PXDProxySpec.Unmarshal(m, b) } - -func (*PXDProxySpec) ProtoMessage() {} - -func (x *PXDProxySpec) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[14] - 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) +func (m *PXDProxySpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PXDProxySpec.Marshal(b, m, deterministic) } - -// Deprecated: Use PXDProxySpec.ProtoReflect.Descriptor instead. -func (*PXDProxySpec) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{14} +func (dst *PXDProxySpec) XXX_Merge(src proto.Message) { + xxx_messageInfo_PXDProxySpec.Merge(dst, src) +} +func (m *PXDProxySpec) XXX_Size() int { + return xxx_messageInfo_PXDProxySpec.Size(m) +} +func (m *PXDProxySpec) XXX_DiscardUnknown() { + xxx_messageInfo_PXDProxySpec.DiscardUnknown(m) } -func (x *PXDProxySpec) GetId() string { - if x != nil { - return x.Id +var xxx_messageInfo_PXDProxySpec proto.InternalMessageInfo + +func (m *PXDProxySpec) GetId() string { + if m != nil { + return m.Id } return "" } // PureBlockSpec is the spec for proxying a volume on pure_block backends type PureBlockSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SerialNum string `protobuf:"bytes,1,opt,name=serial_num,json=serialNum,proto3" json:"serial_num,omitempty"` - FullVolName string `protobuf:"bytes,2,opt,name=full_vol_name,json=fullVolName,proto3" json:"full_vol_name,omitempty"` + SerialNum string `protobuf:"bytes,1,opt,name=serial_num,json=serialNum" json:"serial_num,omitempty"` + FullVolName string `protobuf:"bytes,2,opt,name=full_vol_name,json=fullVolName" json:"full_vol_name,omitempty"` + PodName string `protobuf:"bytes,3,opt,name=pod_name,json=podName" json:"pod_name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *PureBlockSpec) Reset() { - *x = PureBlockSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *PureBlockSpec) Reset() { *m = PureBlockSpec{} } +func (m *PureBlockSpec) String() string { return proto.CompactTextString(m) } +func (*PureBlockSpec) ProtoMessage() {} +func (*PureBlockSpec) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{15} } - -func (x *PureBlockSpec) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *PureBlockSpec) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PureBlockSpec.Unmarshal(m, b) +} +func (m *PureBlockSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PureBlockSpec.Marshal(b, m, deterministic) +} +func (dst *PureBlockSpec) XXX_Merge(src proto.Message) { + xxx_messageInfo_PureBlockSpec.Merge(dst, src) +} +func (m *PureBlockSpec) XXX_Size() int { + return xxx_messageInfo_PureBlockSpec.Size(m) +} +func (m *PureBlockSpec) XXX_DiscardUnknown() { + xxx_messageInfo_PureBlockSpec.DiscardUnknown(m) } -func (*PureBlockSpec) ProtoMessage() {} +var xxx_messageInfo_PureBlockSpec proto.InternalMessageInfo -func (x *PureBlockSpec) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (m *PureBlockSpec) GetSerialNum() string { + if m != nil { + return m.SerialNum } - return mi.MessageOf(x) -} - -// Deprecated: Use PureBlockSpec.ProtoReflect.Descriptor instead. -func (*PureBlockSpec) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{15} + return "" } -func (x *PureBlockSpec) GetSerialNum() string { - if x != nil { - return x.SerialNum +func (m *PureBlockSpec) GetFullVolName() string { + if m != nil { + return m.FullVolName } return "" } -func (x *PureBlockSpec) GetFullVolName() string { - if x != nil { - return x.FullVolName +func (m *PureBlockSpec) GetPodName() string { + if m != nil { + return m.PodName } return "" } // PureFileSpec is the spec for proxying a volume on pure_file backends type PureFileSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ExportRules string `protobuf:"bytes,1,opt,name=export_rules,json=exportRules,proto3" json:"export_rules,omitempty"` - FullVolName string `protobuf:"bytes,2,opt,name=full_vol_name,json=fullVolName,proto3" json:"full_vol_name,omitempty"` + ExportRules string `protobuf:"bytes,1,opt,name=export_rules,json=exportRules" json:"export_rules,omitempty"` + FullVolName string `protobuf:"bytes,2,opt,name=full_vol_name,json=fullVolName" json:"full_vol_name,omitempty"` + NfsEndpoint string `protobuf:"bytes,3,opt,name=nfs_endpoint,json=nfsEndpoint" json:"nfs_endpoint,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *PureFileSpec) Reset() { - *x = PureFileSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *PureFileSpec) Reset() { *m = PureFileSpec{} } +func (m *PureFileSpec) String() string { return proto.CompactTextString(m) } +func (*PureFileSpec) ProtoMessage() {} +func (*PureFileSpec) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{16} } - -func (x *PureFileSpec) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *PureFileSpec) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PureFileSpec.Unmarshal(m, b) +} +func (m *PureFileSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PureFileSpec.Marshal(b, m, deterministic) +} +func (dst *PureFileSpec) XXX_Merge(src proto.Message) { + xxx_messageInfo_PureFileSpec.Merge(dst, src) +} +func (m *PureFileSpec) XXX_Size() int { + return xxx_messageInfo_PureFileSpec.Size(m) +} +func (m *PureFileSpec) XXX_DiscardUnknown() { + xxx_messageInfo_PureFileSpec.DiscardUnknown(m) } -func (*PureFileSpec) ProtoMessage() {} +var xxx_messageInfo_PureFileSpec proto.InternalMessageInfo -func (x *PureFileSpec) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (m *PureFileSpec) GetExportRules() string { + if m != nil { + return m.ExportRules } - return mi.MessageOf(x) -} - -// Deprecated: Use PureFileSpec.ProtoReflect.Descriptor instead. -func (*PureFileSpec) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{16} + return "" } -func (x *PureFileSpec) GetExportRules() string { - if x != nil { - return x.ExportRules +func (m *PureFileSpec) GetFullVolName() string { + if m != nil { + return m.FullVolName } return "" } -func (x *PureFileSpec) GetFullVolName() string { - if x != nil { - return x.FullVolName +func (m *PureFileSpec) GetNfsEndpoint() string { + if m != nil { + return m.NfsEndpoint } return "" } // ProxySpec defines how this volume will reflect an external data source. type ProxySpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // ProxyProtocol defines the protocol used for proxy. - ProxyProtocol ProxyProtocol `protobuf:"varint,1,opt,name=proxy_protocol,json=proxyProtocol,proto3,enum=openstorage.api.ProxyProtocol" json:"proxy_protocol,omitempty"` + ProxyProtocol ProxyProtocol `protobuf:"varint,1,opt,name=proxy_protocol,json=proxyProtocol,enum=openstorage.api.ProxyProtocol" json:"proxy_protocol,omitempty"` // Endpoint is the external endpoint which can be used for accessing the // external data source. - Endpoint string `protobuf:"bytes,2,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + Endpoint string `protobuf:"bytes,2,opt,name=endpoint" json:"endpoint,omitempty"` // NFSProxySpec is the spec for proxying an NFS share - NfsSpec *NFSProxySpec `protobuf:"bytes,3,opt,name=nfs_spec,json=nfsSpec,proto3" json:"nfs_spec,omitempty"` + NfsSpec *NFSProxySpec `protobuf:"bytes,3,opt,name=nfs_spec,json=nfsSpec" json:"nfs_spec,omitempty"` // S3ProxySpec is the spec for proxying an external object store - S3Spec *S3ProxySpec `protobuf:"bytes,4,opt,name=s3_spec,json=s3Spec,proto3" json:"s3_spec,omitempty"` + S3Spec *S3ProxySpec `protobuf:"bytes,4,opt,name=s3_spec,json=s3Spec" json:"s3_spec,omitempty"` // PXDProxySpec is the spec for proxying a Portworx volume - PxdSpec *PXDProxySpec `protobuf:"bytes,5,opt,name=pxd_spec,json=pxdSpec,proto3" json:"pxd_spec,omitempty"` + PxdSpec *PXDProxySpec `protobuf:"bytes,5,opt,name=pxd_spec,json=pxdSpec" json:"pxd_spec,omitempty"` // PureFileSpec is the spec for proxying a volume on pure_file backends - PureBlockSpec *PureBlockSpec `protobuf:"bytes,6,opt,name=pure_block_spec,json=pureBlockSpec,proto3" json:"pure_block_spec,omitempty"` + PureBlockSpec *PureBlockSpec `protobuf:"bytes,6,opt,name=pure_block_spec,json=pureBlockSpec" json:"pure_block_spec,omitempty"` // PureFileSpec is the spec for proxying a volume on pure_file backends - PureFileSpec *PureFileSpec `protobuf:"bytes,7,opt,name=pure_file_spec,json=pureFileSpec,proto3" json:"pure_file_spec,omitempty"` + PureFileSpec *PureFileSpec `protobuf:"bytes,7,opt,name=pure_file_spec,json=pureFileSpec" json:"pure_file_spec,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ProxySpec) Reset() { - *x = ProxySpec{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *ProxySpec) Reset() { *m = ProxySpec{} } +func (m *ProxySpec) String() string { return proto.CompactTextString(m) } +func (*ProxySpec) ProtoMessage() {} +func (*ProxySpec) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{17} } - -func (x *ProxySpec) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *ProxySpec) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ProxySpec.Unmarshal(m, b) } - -func (*ProxySpec) ProtoMessage() {} - -func (x *ProxySpec) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[17] - 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) +func (m *ProxySpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ProxySpec.Marshal(b, m, deterministic) } - -// Deprecated: Use ProxySpec.ProtoReflect.Descriptor instead. -func (*ProxySpec) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{17} +func (dst *ProxySpec) XXX_Merge(src proto.Message) { + xxx_messageInfo_ProxySpec.Merge(dst, src) +} +func (m *ProxySpec) XXX_Size() int { + return xxx_messageInfo_ProxySpec.Size(m) +} +func (m *ProxySpec) XXX_DiscardUnknown() { + xxx_messageInfo_ProxySpec.DiscardUnknown(m) } -func (x *ProxySpec) GetProxyProtocol() ProxyProtocol { - if x != nil { - return x.ProxyProtocol +var xxx_messageInfo_ProxySpec proto.InternalMessageInfo + +func (m *ProxySpec) GetProxyProtocol() ProxyProtocol { + if m != nil { + return m.ProxyProtocol } return ProxyProtocol_PROXY_PROTOCOL_INVALID } -func (x *ProxySpec) GetEndpoint() string { - if x != nil { - return x.Endpoint +func (m *ProxySpec) GetEndpoint() string { + if m != nil { + return m.Endpoint } return "" } -func (x *ProxySpec) GetNfsSpec() *NFSProxySpec { - if x != nil { - return x.NfsSpec +func (m *ProxySpec) GetNfsSpec() *NFSProxySpec { + if m != nil { + return m.NfsSpec } return nil } -func (x *ProxySpec) GetS3Spec() *S3ProxySpec { - if x != nil { - return x.S3Spec +func (m *ProxySpec) GetS3Spec() *S3ProxySpec { + if m != nil { + return m.S3Spec } return nil } -func (x *ProxySpec) GetPxdSpec() *PXDProxySpec { - if x != nil { - return x.PxdSpec +func (m *ProxySpec) GetPxdSpec() *PXDProxySpec { + if m != nil { + return m.PxdSpec } return nil } -func (x *ProxySpec) GetPureBlockSpec() *PureBlockSpec { - if x != nil { - return x.PureBlockSpec +func (m *ProxySpec) GetPureBlockSpec() *PureBlockSpec { + if m != nil { + return m.PureBlockSpec } return nil } -func (x *ProxySpec) GetPureFileSpec() *PureFileSpec { - if x != nil { - return x.PureFileSpec +func (m *ProxySpec) GetPureFileSpec() *PureFileSpec { + if m != nil { + return m.PureFileSpec } return nil } @@ -4882,455 +3297,384 @@ func (x *ProxySpec) GetPureFileSpec() *PureFileSpec { // Sharedv4ServiceSpec when set, creates a service endpoint for accessing // a sharedv4 volume. type Sharedv4ServiceSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Name of the service. If not provided the name of the volume will be // used for setting up a service - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` // Indicates what kind of service would be created for this volume. - Type Sharedv4ServiceSpec_ServiceType `protobuf:"varint,2,opt,name=type,proto3,enum=openstorage.api.Sharedv4ServiceSpec_ServiceType" json:"type,omitempty"` - // Indicates whether the service needs to be accessed outside of the cluster - ExternalAccess bool `protobuf:"varint,3,opt,name=external_access,json=externalAccess,proto3" json:"external_access,omitempty"` + Type Sharedv4ServiceSpec_ServiceType `protobuf:"varint,2,opt,name=type,enum=openstorage.api.Sharedv4ServiceSpec_ServiceType" json:"type,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Sharedv4ServiceSpec) Reset() { - *x = Sharedv4ServiceSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *Sharedv4ServiceSpec) Reset() { *m = Sharedv4ServiceSpec{} } +func (m *Sharedv4ServiceSpec) String() string { return proto.CompactTextString(m) } +func (*Sharedv4ServiceSpec) ProtoMessage() {} +func (*Sharedv4ServiceSpec) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{18} } - -func (x *Sharedv4ServiceSpec) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *Sharedv4ServiceSpec) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Sharedv4ServiceSpec.Unmarshal(m, b) +} +func (m *Sharedv4ServiceSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Sharedv4ServiceSpec.Marshal(b, m, deterministic) +} +func (dst *Sharedv4ServiceSpec) XXX_Merge(src proto.Message) { + xxx_messageInfo_Sharedv4ServiceSpec.Merge(dst, src) +} +func (m *Sharedv4ServiceSpec) XXX_Size() int { + return xxx_messageInfo_Sharedv4ServiceSpec.Size(m) +} +func (m *Sharedv4ServiceSpec) XXX_DiscardUnknown() { + xxx_messageInfo_Sharedv4ServiceSpec.DiscardUnknown(m) } -func (*Sharedv4ServiceSpec) ProtoMessage() {} +var xxx_messageInfo_Sharedv4ServiceSpec proto.InternalMessageInfo -func (x *Sharedv4ServiceSpec) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[18] - 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 Sharedv4ServiceSpec.ProtoReflect.Descriptor instead. -func (*Sharedv4ServiceSpec) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{18} -} - -func (x *Sharedv4ServiceSpec) GetName() string { - if x != nil { - return x.Name +func (m *Sharedv4ServiceSpec) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *Sharedv4ServiceSpec) GetType() Sharedv4ServiceSpec_ServiceType { - if x != nil { - return x.Type +func (m *Sharedv4ServiceSpec) GetType() Sharedv4ServiceSpec_ServiceType { + if m != nil { + return m.Type } return Sharedv4ServiceSpec_UNSPECIFIED } -func (x *Sharedv4ServiceSpec) GetExternalAccess() bool { - if x != nil { - return x.ExternalAccess - } - return false -} - // Sharedv4FailoverStrategy specifies how long to wait before failing over to a new server. type Sharedv4FailoverStrategy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Sharedv4FailoverStrategy) Reset() { - *x = Sharedv4FailoverStrategy{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *Sharedv4FailoverStrategy) Reset() { *m = Sharedv4FailoverStrategy{} } +func (m *Sharedv4FailoverStrategy) String() string { return proto.CompactTextString(m) } +func (*Sharedv4FailoverStrategy) ProtoMessage() {} +func (*Sharedv4FailoverStrategy) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{19} } - -func (x *Sharedv4FailoverStrategy) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *Sharedv4FailoverStrategy) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Sharedv4FailoverStrategy.Unmarshal(m, b) } - -func (*Sharedv4FailoverStrategy) ProtoMessage() {} - -func (x *Sharedv4FailoverStrategy) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[19] - 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) +func (m *Sharedv4FailoverStrategy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Sharedv4FailoverStrategy.Marshal(b, m, deterministic) } - -// Deprecated: Use Sharedv4FailoverStrategy.ProtoReflect.Descriptor instead. -func (*Sharedv4FailoverStrategy) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{19} +func (dst *Sharedv4FailoverStrategy) XXX_Merge(src proto.Message) { + xxx_messageInfo_Sharedv4FailoverStrategy.Merge(dst, src) +} +func (m *Sharedv4FailoverStrategy) XXX_Size() int { + return xxx_messageInfo_Sharedv4FailoverStrategy.Size(m) } +func (m *Sharedv4FailoverStrategy) XXX_DiscardUnknown() { + xxx_messageInfo_Sharedv4FailoverStrategy.DiscardUnknown(m) +} + +var xxx_messageInfo_Sharedv4FailoverStrategy proto.InternalMessageInfo // Sharedv4Spec specifies common properties of sharedv4 and sharedv4 service volumes type Sharedv4Spec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Indicates how aggressively to fail over to a new server. - FailoverStrategy Sharedv4FailoverStrategy_Value `protobuf:"varint,1,opt,name=failover_strategy,json=failoverStrategy,proto3,enum=openstorage.api.Sharedv4FailoverStrategy_Value" json:"failover_strategy,omitempty"` + FailoverStrategy Sharedv4FailoverStrategy_Value `protobuf:"varint,1,opt,name=failover_strategy,json=failoverStrategy,enum=openstorage.api.Sharedv4FailoverStrategy_Value" json:"failover_strategy,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Sharedv4Spec) Reset() { - *x = Sharedv4Spec{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *Sharedv4Spec) Reset() { *m = Sharedv4Spec{} } +func (m *Sharedv4Spec) String() string { return proto.CompactTextString(m) } +func (*Sharedv4Spec) ProtoMessage() {} +func (*Sharedv4Spec) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{20} } - -func (x *Sharedv4Spec) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *Sharedv4Spec) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Sharedv4Spec.Unmarshal(m, b) } - -func (*Sharedv4Spec) ProtoMessage() {} - -func (x *Sharedv4Spec) ProtoReflect() protoreflect.Message { - mi := &file_api_api_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) +func (m *Sharedv4Spec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Sharedv4Spec.Marshal(b, m, deterministic) } - -// Deprecated: Use Sharedv4Spec.ProtoReflect.Descriptor instead. -func (*Sharedv4Spec) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{20} +func (dst *Sharedv4Spec) XXX_Merge(src proto.Message) { + xxx_messageInfo_Sharedv4Spec.Merge(dst, src) +} +func (m *Sharedv4Spec) XXX_Size() int { + return xxx_messageInfo_Sharedv4Spec.Size(m) +} +func (m *Sharedv4Spec) XXX_DiscardUnknown() { + xxx_messageInfo_Sharedv4Spec.DiscardUnknown(m) } -func (x *Sharedv4Spec) GetFailoverStrategy() Sharedv4FailoverStrategy_Value { - if x != nil { - return x.FailoverStrategy +var xxx_messageInfo_Sharedv4Spec proto.InternalMessageInfo + +func (m *Sharedv4Spec) GetFailoverStrategy() Sharedv4FailoverStrategy_Value { + if m != nil { + return m.FailoverStrategy } return Sharedv4FailoverStrategy_UNSPECIFIED } // MountOptions defines the mount options with which a volume is mounted. type MountOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Options are opaque key value pairs that are passed as mount options when // a volume is mounted. // If an empty value is provided only the key will be passed as an option // If both key and value are provided then 'key=value' will be passed as an // option - Options map[string]string `protobuf:"bytes,1,rep,name=options,proto3" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Options map[string]string `protobuf:"bytes,1,rep,name=options" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *MountOptions) Reset() { - *x = MountOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *MountOptions) Reset() { *m = MountOptions{} } +func (m *MountOptions) String() string { return proto.CompactTextString(m) } +func (*MountOptions) ProtoMessage() {} +func (*MountOptions) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{21} } - -func (x *MountOptions) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *MountOptions) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_MountOptions.Unmarshal(m, b) } - -func (*MountOptions) ProtoMessage() {} - -func (x *MountOptions) ProtoReflect() protoreflect.Message { - mi := &file_api_api_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) +func (m *MountOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_MountOptions.Marshal(b, m, deterministic) } - -// Deprecated: Use MountOptions.ProtoReflect.Descriptor instead. -func (*MountOptions) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{21} +func (dst *MountOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_MountOptions.Merge(dst, src) +} +func (m *MountOptions) XXX_Size() int { + return xxx_messageInfo_MountOptions.Size(m) +} +func (m *MountOptions) XXX_DiscardUnknown() { + xxx_messageInfo_MountOptions.DiscardUnknown(m) } -func (x *MountOptions) GetOptions() map[string]string { - if x != nil { - return x.Options +var xxx_messageInfo_MountOptions proto.InternalMessageInfo + +func (m *MountOptions) GetOptions() map[string]string { + if m != nil { + return m.Options } return nil } type FastpathReplState struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DevId uint64 `protobuf:"varint,1,opt,name=dev_id,json=devId,proto3" json:"dev_id,omitempty"` - NodeId uint32 `protobuf:"varint,2,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` - Protocol FastpathProtocol `protobuf:"varint,3,opt,name=protocol,proto3,enum=openstorage.api.FastpathProtocol" json:"protocol,omitempty"` - Acl bool `protobuf:"varint,4,opt,name=acl,proto3" json:"acl,omitempty"` + DevId uint64 `protobuf:"varint,1,opt,name=dev_id,json=devId" json:"dev_id,omitempty"` + NodeId uint32 `protobuf:"varint,2,opt,name=node_id,json=nodeId" json:"node_id,omitempty"` + Protocol FastpathProtocol `protobuf:"varint,3,opt,name=protocol,enum=openstorage.api.FastpathProtocol" json:"protocol,omitempty"` + Acl bool `protobuf:"varint,4,opt,name=acl" json:"acl,omitempty"` // target info - ExportedDevice string `protobuf:"bytes,5,opt,name=exported_device,json=exportedDevice,proto3" json:"exported_device,omitempty"` - Block bool `protobuf:"varint,6,opt,name=block,proto3" json:"block,omitempty"` - Target string `protobuf:"bytes,7,opt,name=target,proto3" json:"target,omitempty"` - Exported bool `protobuf:"varint,8,opt,name=exported,proto3" json:"exported,omitempty"` + ExportedDevice string `protobuf:"bytes,5,opt,name=exported_device,json=exportedDevice" json:"exported_device,omitempty"` + Block bool `protobuf:"varint,6,opt,name=block" json:"block,omitempty"` + Target string `protobuf:"bytes,7,opt,name=target" json:"target,omitempty"` + Exported bool `protobuf:"varint,8,opt,name=exported" json:"exported,omitempty"` // initiator info - Imported bool `protobuf:"varint,9,opt,name=imported,proto3" json:"imported,omitempty"` - Devpath string `protobuf:"bytes,10,opt,name=devpath,proto3" json:"devpath,omitempty"` + Imported bool `protobuf:"varint,9,opt,name=imported" json:"imported,omitempty"` + Devpath string `protobuf:"bytes,10,opt,name=devpath" json:"devpath,omitempty"` // node_uuid added to enhance UI reporting - NodeUuid string `protobuf:"bytes,11,opt,name=node_uuid,json=nodeUuid,proto3" json:"node_uuid,omitempty"` + NodeUuid string `protobuf:"bytes,11,opt,name=node_uuid,json=nodeUuid" json:"node_uuid,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *FastpathReplState) Reset() { - *x = FastpathReplState{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *FastpathReplState) Reset() { *m = FastpathReplState{} } +func (m *FastpathReplState) String() string { return proto.CompactTextString(m) } +func (*FastpathReplState) ProtoMessage() {} +func (*FastpathReplState) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{22} } - -func (x *FastpathReplState) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *FastpathReplState) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_FastpathReplState.Unmarshal(m, b) } - -func (*FastpathReplState) ProtoMessage() {} - -func (x *FastpathReplState) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[22] - 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) +func (m *FastpathReplState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_FastpathReplState.Marshal(b, m, deterministic) } - -// Deprecated: Use FastpathReplState.ProtoReflect.Descriptor instead. -func (*FastpathReplState) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{22} +func (dst *FastpathReplState) XXX_Merge(src proto.Message) { + xxx_messageInfo_FastpathReplState.Merge(dst, src) +} +func (m *FastpathReplState) XXX_Size() int { + return xxx_messageInfo_FastpathReplState.Size(m) } +func (m *FastpathReplState) XXX_DiscardUnknown() { + xxx_messageInfo_FastpathReplState.DiscardUnknown(m) +} + +var xxx_messageInfo_FastpathReplState proto.InternalMessageInfo -func (x *FastpathReplState) GetDevId() uint64 { - if x != nil { - return x.DevId +func (m *FastpathReplState) GetDevId() uint64 { + if m != nil { + return m.DevId } return 0 } -func (x *FastpathReplState) GetNodeId() uint32 { - if x != nil { - return x.NodeId +func (m *FastpathReplState) GetNodeId() uint32 { + if m != nil { + return m.NodeId } return 0 } -func (x *FastpathReplState) GetProtocol() FastpathProtocol { - if x != nil { - return x.Protocol +func (m *FastpathReplState) GetProtocol() FastpathProtocol { + if m != nil { + return m.Protocol } return FastpathProtocol_FASTPATH_PROTO_UNKNOWN } -func (x *FastpathReplState) GetAcl() bool { - if x != nil { - return x.Acl +func (m *FastpathReplState) GetAcl() bool { + if m != nil { + return m.Acl } return false } -func (x *FastpathReplState) GetExportedDevice() string { - if x != nil { - return x.ExportedDevice +func (m *FastpathReplState) GetExportedDevice() string { + if m != nil { + return m.ExportedDevice } return "" } -func (x *FastpathReplState) GetBlock() bool { - if x != nil { - return x.Block +func (m *FastpathReplState) GetBlock() bool { + if m != nil { + return m.Block } return false } -func (x *FastpathReplState) GetTarget() string { - if x != nil { - return x.Target +func (m *FastpathReplState) GetTarget() string { + if m != nil { + return m.Target } return "" } -func (x *FastpathReplState) GetExported() bool { - if x != nil { - return x.Exported +func (m *FastpathReplState) GetExported() bool { + if m != nil { + return m.Exported } return false } -func (x *FastpathReplState) GetImported() bool { - if x != nil { - return x.Imported +func (m *FastpathReplState) GetImported() bool { + if m != nil { + return m.Imported } return false } -func (x *FastpathReplState) GetDevpath() string { - if x != nil { - return x.Devpath +func (m *FastpathReplState) GetDevpath() string { + if m != nil { + return m.Devpath } return "" } -func (x *FastpathReplState) GetNodeUuid() string { - if x != nil { - return x.NodeUuid +func (m *FastpathReplState) GetNodeUuid() string { + if m != nil { + return m.NodeUuid } return "" } // FastpathConfig part of volume type FastpathConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // fastpath setup on this node - SetupOn int32 `protobuf:"varint,1,opt,name=setup_on,json=setupOn,proto3" json:"setup_on,omitempty"` + SetupOn int32 `protobuf:"varint,1,opt,name=setup_on,json=setupOn" json:"setup_on,omitempty"` // Fastpath temporary promotion during attach - Promote bool `protobuf:"varint,2,opt,name=promote,proto3" json:"promote,omitempty"` + Promote bool `protobuf:"varint,2,opt,name=promote" json:"promote,omitempty"` // Fastpath consolidated current status across replicas - Status FastpathStatus `protobuf:"varint,3,opt,name=status,proto3,enum=openstorage.api.FastpathStatus" json:"status,omitempty"` + Status FastpathStatus `protobuf:"varint,3,opt,name=status,enum=openstorage.api.FastpathStatus" json:"status,omitempty"` // Fastpath replica state for each replica in replica set - Replicas []*FastpathReplState `protobuf:"bytes,4,rep,name=replicas,proto3" json:"replicas,omitempty"` + Replicas []*FastpathReplState `protobuf:"bytes,4,rep,name=replicas" json:"replicas,omitempty"` // Dirty flag on volume - was attached in userspace - Dirty bool `protobuf:"varint,5,opt,name=dirty,proto3" json:"dirty,omitempty"` + Dirty bool `protobuf:"varint,5,opt,name=dirty" json:"dirty,omitempty"` // fastpath coordinator node uuid to enhance reporting - CoordUuid string `protobuf:"bytes,6,opt,name=coord_uuid,json=coordUuid,proto3" json:"coord_uuid,omitempty"` + CoordUuid string `protobuf:"bytes,6,opt,name=coord_uuid,json=coordUuid" json:"coord_uuid,omitempty"` // fastpath force failover, disable auto promote to fastpath - ForceFailover bool `protobuf:"varint,7,opt,name=force_failover,json=forceFailover,proto3" json:"force_failover,omitempty"` - // Verbose contains detailed info on fastpath status - Verbose string `protobuf:"bytes,8,opt,name=verbose,proto3" json:"verbose,omitempty"` + ForceFailover bool `protobuf:"varint,7,opt,name=force_failover,json=forceFailover" json:"force_failover,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *FastpathConfig) Reset() { - *x = FastpathConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *FastpathConfig) Reset() { *m = FastpathConfig{} } +func (m *FastpathConfig) String() string { return proto.CompactTextString(m) } +func (*FastpathConfig) ProtoMessage() {} +func (*FastpathConfig) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{23} } - -func (x *FastpathConfig) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *FastpathConfig) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_FastpathConfig.Unmarshal(m, b) } - -func (*FastpathConfig) ProtoMessage() {} - -func (x *FastpathConfig) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[23] - 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) +func (m *FastpathConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_FastpathConfig.Marshal(b, m, deterministic) } - -// Deprecated: Use FastpathConfig.ProtoReflect.Descriptor instead. -func (*FastpathConfig) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{23} +func (dst *FastpathConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_FastpathConfig.Merge(dst, src) +} +func (m *FastpathConfig) XXX_Size() int { + return xxx_messageInfo_FastpathConfig.Size(m) } +func (m *FastpathConfig) XXX_DiscardUnknown() { + xxx_messageInfo_FastpathConfig.DiscardUnknown(m) +} + +var xxx_messageInfo_FastpathConfig proto.InternalMessageInfo -func (x *FastpathConfig) GetSetupOn() int32 { - if x != nil { - return x.SetupOn +func (m *FastpathConfig) GetSetupOn() int32 { + if m != nil { + return m.SetupOn } return 0 } -func (x *FastpathConfig) GetPromote() bool { - if x != nil { - return x.Promote +func (m *FastpathConfig) GetPromote() bool { + if m != nil { + return m.Promote } return false } -func (x *FastpathConfig) GetStatus() FastpathStatus { - if x != nil { - return x.Status +func (m *FastpathConfig) GetStatus() FastpathStatus { + if m != nil { + return m.Status } return FastpathStatus_FASTPATH_UNKNOWN } -func (x *FastpathConfig) GetReplicas() []*FastpathReplState { - if x != nil { - return x.Replicas +func (m *FastpathConfig) GetReplicas() []*FastpathReplState { + if m != nil { + return m.Replicas } return nil } -func (x *FastpathConfig) GetDirty() bool { - if x != nil { - return x.Dirty +func (m *FastpathConfig) GetDirty() bool { + if m != nil { + return m.Dirty } return false } -func (x *FastpathConfig) GetCoordUuid() string { - if x != nil { - return x.CoordUuid +func (m *FastpathConfig) GetCoordUuid() string { + if m != nil { + return m.CoordUuid } return "" } -func (x *FastpathConfig) GetForceFailover() bool { - if x != nil { - return x.ForceFailover +func (m *FastpathConfig) GetForceFailover() bool { + if m != nil { + return m.ForceFailover } return false } -func (x *FastpathConfig) GetVerbose() string { - if x != nil { - return x.Verbose - } - return "" -} - // ScanPolicy defines when a filesystem check is triggered and what action to take // User can specify *one* of the following valid policies // 1. trigger=SCAN_TRIGGER_ON_MOUNT, action=SCAN_ACTION_SCAN_ONLY @@ -5343,56 +3687,47 @@ func (x *FastpathConfig) GetVerbose() string { // `trigger=SCAN_TRIGGER_NONE, action=SCAN_ACTION_NONE`, irrespective of the // output of the action. type ScanPolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Trigger ScanPolicy_ScanTrigger `protobuf:"varint,1,opt,name=trigger,proto3,enum=openstorage.api.ScanPolicy_ScanTrigger" json:"trigger,omitempty"` - Action ScanPolicy_ScanAction `protobuf:"varint,2,opt,name=action,proto3,enum=openstorage.api.ScanPolicy_ScanAction" json:"action,omitempty"` + Trigger ScanPolicy_ScanTrigger `protobuf:"varint,1,opt,name=trigger,enum=openstorage.api.ScanPolicy_ScanTrigger" json:"trigger,omitempty"` + Action ScanPolicy_ScanAction `protobuf:"varint,2,opt,name=action,enum=openstorage.api.ScanPolicy_ScanAction" json:"action,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ScanPolicy) Reset() { - *x = ScanPolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *ScanPolicy) Reset() { *m = ScanPolicy{} } +func (m *ScanPolicy) String() string { return proto.CompactTextString(m) } +func (*ScanPolicy) ProtoMessage() {} +func (*ScanPolicy) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{24} } - -func (x *ScanPolicy) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *ScanPolicy) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ScanPolicy.Unmarshal(m, b) } - -func (*ScanPolicy) ProtoMessage() {} - -func (x *ScanPolicy) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[24] - 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) +func (m *ScanPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ScanPolicy.Marshal(b, m, deterministic) } - -// Deprecated: Use ScanPolicy.ProtoReflect.Descriptor instead. -func (*ScanPolicy) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{24} +func (dst *ScanPolicy) XXX_Merge(src proto.Message) { + xxx_messageInfo_ScanPolicy.Merge(dst, src) +} +func (m *ScanPolicy) XXX_Size() int { + return xxx_messageInfo_ScanPolicy.Size(m) } +func (m *ScanPolicy) XXX_DiscardUnknown() { + xxx_messageInfo_ScanPolicy.DiscardUnknown(m) +} + +var xxx_messageInfo_ScanPolicy proto.InternalMessageInfo -func (x *ScanPolicy) GetTrigger() ScanPolicy_ScanTrigger { - if x != nil { - return x.Trigger +func (m *ScanPolicy) GetTrigger() ScanPolicy_ScanTrigger { + if m != nil { + return m.Trigger } return ScanPolicy_SCAN_TRIGGER_NONE } -func (x *ScanPolicy) GetAction() ScanPolicy_ScanAction { - if x != nil { - return x.Action +func (m *ScanPolicy) GetAction() ScanPolicy_ScanAction { + if m != nil { + return m.Action } return ScanPolicy_SCAN_ACTION_NONE } @@ -5403,3336 +3738,4684 @@ func (x *ScanPolicy) GetAction() ScanPolicy_ScanAction { // read_bw_mbytes : maximum read bandwidth this volume is allowed in MegaBytes // write_bw_mbytes : maximum write bandwidth this volume is allowed in MegaBytes type IoThrottle struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ReadIops uint32 `protobuf:"varint,1,opt,name=read_iops,json=readIops,proto3" json:"read_iops,omitempty"` - WriteIops uint32 `protobuf:"varint,2,opt,name=write_iops,json=writeIops,proto3" json:"write_iops,omitempty"` - ReadBwMbytes uint32 `protobuf:"varint,3,opt,name=read_bw_mbytes,json=readBwMbytes,proto3" json:"read_bw_mbytes,omitempty"` - WriteBwMbytes uint32 `protobuf:"varint,4,opt,name=write_bw_mbytes,json=writeBwMbytes,proto3" json:"write_bw_mbytes,omitempty"` + ReadIops uint32 `protobuf:"varint,1,opt,name=read_iops,json=readIops" json:"read_iops,omitempty"` + WriteIops uint32 `protobuf:"varint,2,opt,name=write_iops,json=writeIops" json:"write_iops,omitempty"` + ReadBwMbytes uint32 `protobuf:"varint,3,opt,name=read_bw_mbytes,json=readBwMbytes" json:"read_bw_mbytes,omitempty"` + WriteBwMbytes uint32 `protobuf:"varint,4,opt,name=write_bw_mbytes,json=writeBwMbytes" json:"write_bw_mbytes,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *IoThrottle) Reset() { *m = IoThrottle{} } +func (m *IoThrottle) String() string { return proto.CompactTextString(m) } +func (*IoThrottle) ProtoMessage() {} +func (*IoThrottle) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{25} } - -func (x *IoThrottle) Reset() { - *x = IoThrottle{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *IoThrottle) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_IoThrottle.Unmarshal(m, b) } - -func (x *IoThrottle) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *IoThrottle) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_IoThrottle.Marshal(b, m, deterministic) } - -func (*IoThrottle) ProtoMessage() {} - -func (x *IoThrottle) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[25] - 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) +func (dst *IoThrottle) XXX_Merge(src proto.Message) { + xxx_messageInfo_IoThrottle.Merge(dst, src) } - -// Deprecated: Use IoThrottle.ProtoReflect.Descriptor instead. -func (*IoThrottle) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{25} +func (m *IoThrottle) XXX_Size() int { + return xxx_messageInfo_IoThrottle.Size(m) +} +func (m *IoThrottle) XXX_DiscardUnknown() { + xxx_messageInfo_IoThrottle.DiscardUnknown(m) } -func (x *IoThrottle) GetReadIops() uint32 { - if x != nil { - return x.ReadIops +var xxx_messageInfo_IoThrottle proto.InternalMessageInfo + +func (m *IoThrottle) GetReadIops() uint32 { + if m != nil { + return m.ReadIops } return 0 } -func (x *IoThrottle) GetWriteIops() uint32 { - if x != nil { - return x.WriteIops +func (m *IoThrottle) GetWriteIops() uint32 { + if m != nil { + return m.WriteIops } return 0 } -func (x *IoThrottle) GetReadBwMbytes() uint32 { - if x != nil { - return x.ReadBwMbytes +func (m *IoThrottle) GetReadBwMbytes() uint32 { + if m != nil { + return m.ReadBwMbytes } return 0 } -func (x *IoThrottle) GetWriteBwMbytes() uint32 { - if x != nil { - return x.WriteBwMbytes +func (m *IoThrottle) GetWriteBwMbytes() uint32 { + if m != nil { + return m.WriteBwMbytes } return 0 } // VolumeSpec has the properties needed to create a volume. type VolumeSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Ephemeral storage - Ephemeral bool `protobuf:"varint,1,opt,name=ephemeral,proto3" json:"ephemeral,omitempty"` + Ephemeral bool `protobuf:"varint,1,opt,name=ephemeral" json:"ephemeral,omitempty"` // Size specifies the thin provisioned volume size in bytes - Size uint64 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"` + Size uint64 `protobuf:"varint,2,opt,name=size" json:"size,omitempty"` // Format specifies the filesystem for this volume. - Format FSType `protobuf:"varint,3,opt,name=format,proto3,enum=openstorage.api.FSType" json:"format,omitempty"` + Format FSType `protobuf:"varint,3,opt,name=format,enum=openstorage.api.FSType" json:"format,omitempty"` // BlockSize for the filesystem. - BlockSize int64 `protobuf:"varint,4,opt,name=block_size,json=blockSize,proto3" json:"block_size,omitempty"` + BlockSize int64 `protobuf:"varint,4,opt,name=block_size,json=blockSize" json:"block_size,omitempty"` // HaLevel specifies the number of copies of data. - HaLevel int64 `protobuf:"varint,5,opt,name=ha_level,json=haLevel,proto3" json:"ha_level,omitempty"` + HaLevel int64 `protobuf:"varint,5,opt,name=ha_level,json=haLevel" json:"ha_level,omitempty"` // Cos specifies the relative class of service. - Cos CosType `protobuf:"varint,6,opt,name=cos,proto3,enum=openstorage.api.CosType" json:"cos,omitempty"` + Cos CosType `protobuf:"varint,6,opt,name=cos,enum=openstorage.api.CosType" json:"cos,omitempty"` // IoProfile provides a hint about application using this volume. - IoProfile IoProfile `protobuf:"varint,7,opt,name=io_profile,json=ioProfile,proto3,enum=openstorage.api.IoProfile" json:"io_profile,omitempty"` + IoProfile IoProfile `protobuf:"varint,7,opt,name=io_profile,json=ioProfile,enum=openstorage.api.IoProfile" json:"io_profile,omitempty"` // Dedupe specifies if the volume data is to be de-duplicated. - Dedupe bool `protobuf:"varint,8,opt,name=dedupe,proto3" json:"dedupe,omitempty"` + Dedupe bool `protobuf:"varint,8,opt,name=dedupe" json:"dedupe,omitempty"` // SnapshotInterval in minutes, set to 0 to disable snapshots - SnapshotInterval uint32 `protobuf:"varint,9,opt,name=snapshot_interval,json=snapshotInterval,proto3" json:"snapshot_interval,omitempty"` + SnapshotInterval uint32 `protobuf:"varint,9,opt,name=snapshot_interval,json=snapshotInterval" json:"snapshot_interval,omitempty"` // (deprecated, do not use) VolumeLabels configuration labels - VolumeLabels map[string]string `protobuf:"bytes,10,rep,name=volume_labels,json=volumeLabels,proto3" json:"volume_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + VolumeLabels map[string]string `protobuf:"bytes,10,rep,name=volume_labels,json=volumeLabels" json:"volume_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Shared is true if this volume can be concurrently accessed by multiple users. - Shared bool `protobuf:"varint,11,opt,name=shared,proto3" json:"shared,omitempty"` + Shared bool `protobuf:"varint,11,opt,name=shared" json:"shared,omitempty"` // ReplicaSet is the desired set of nodes for the volume data. - ReplicaSet *ReplicaSet `protobuf:"bytes,12,opt,name=replica_set,json=replicaSet,proto3" json:"replica_set,omitempty"` + ReplicaSet *ReplicaSet `protobuf:"bytes,12,opt,name=replica_set,json=replicaSet" json:"replica_set,omitempty"` // Aggregation level Specifies the number of parts the volume can be aggregated from. - AggregationLevel uint32 `protobuf:"varint,13,opt,name=aggregation_level,json=aggregationLevel,proto3" json:"aggregation_level,omitempty"` + AggregationLevel uint32 `protobuf:"varint,13,opt,name=aggregation_level,json=aggregationLevel" json:"aggregation_level,omitempty"` // Encrypted is true if this volume will be cryptographically secured. - Encrypted bool `protobuf:"varint,14,opt,name=encrypted,proto3" json:"encrypted,omitempty"` + Encrypted bool `protobuf:"varint,14,opt,name=encrypted" json:"encrypted,omitempty"` // Passphrase for an encrypted volume - Passphrase string `protobuf:"bytes,15,opt,name=passphrase,proto3" json:"passphrase,omitempty"` + Passphrase string `protobuf:"bytes,15,opt,name=passphrase" json:"passphrase,omitempty"` // SnapshotSchedule a well known string that specifies when snapshots should be taken. - SnapshotSchedule string `protobuf:"bytes,16,opt,name=snapshot_schedule,json=snapshotSchedule,proto3" json:"snapshot_schedule,omitempty"` + SnapshotSchedule string `protobuf:"bytes,16,opt,name=snapshot_schedule,json=snapshotSchedule" json:"snapshot_schedule,omitempty"` // Scale allows autocreation of volumes. - Scale uint32 `protobuf:"varint,17,opt,name=scale,proto3" json:"scale,omitempty"` + Scale uint32 `protobuf:"varint,17,opt,name=scale" json:"scale,omitempty"` // Sticky volumes cannot be deleted until the flag is removed. - Sticky bool `protobuf:"varint,18,opt,name=sticky,proto3" json:"sticky,omitempty"` + Sticky bool `protobuf:"varint,18,opt,name=sticky" json:"sticky,omitempty"` // Group identifies a consistency group - Group *Group `protobuf:"bytes,21,opt,name=group,proto3" json:"group,omitempty"` + Group *Group `protobuf:"bytes,21,opt,name=group" json:"group,omitempty"` // GroupEnforced is true if consistency group creation is enforced. - GroupEnforced bool `protobuf:"varint,22,opt,name=group_enforced,json=groupEnforced,proto3" json:"group_enforced,omitempty"` + GroupEnforced bool `protobuf:"varint,22,opt,name=group_enforced,json=groupEnforced" json:"group_enforced,omitempty"` // Compressed is true if this volume is to be compressed. - Compressed bool `protobuf:"varint,23,opt,name=compressed,proto3" json:"compressed,omitempty"` + Compressed bool `protobuf:"varint,23,opt,name=compressed" json:"compressed,omitempty"` // Cascaded is true if this volume can be populated on any node from an external source. - Cascaded bool `protobuf:"varint,24,opt,name=cascaded,proto3" json:"cascaded,omitempty"` + Cascaded bool `protobuf:"varint,24,opt,name=cascaded" json:"cascaded,omitempty"` // Journal is true if data for the volume goes into the journal. - Journal bool `protobuf:"varint,25,opt,name=journal,proto3" json:"journal,omitempty"` + Journal bool `protobuf:"varint,25,opt,name=journal" json:"journal,omitempty"` // Sharedv4 is true if this volume can be accessed via sharedv4. - Sharedv4 bool `protobuf:"varint,26,opt,name=sharedv4,proto3" json:"sharedv4,omitempty"` + Sharedv4 bool `protobuf:"varint,26,opt,name=sharedv4" json:"sharedv4,omitempty"` // QueueDepth defines the desired block device queue depth - QueueDepth uint32 `protobuf:"varint,27,opt,name=queue_depth,json=queueDepth,proto3" json:"queue_depth,omitempty"` + QueueDepth uint32 `protobuf:"varint,27,opt,name=queue_depth,json=queueDepth" json:"queue_depth,omitempty"` // Use to force a file system type which is not recommended. // The driver may still refuse to use the file system type. - ForceUnsupportedFsType bool `protobuf:"varint,28,opt,name=force_unsupported_fs_type,json=forceUnsupportedFsType,proto3" json:"force_unsupported_fs_type,omitempty"` + ForceUnsupportedFsType bool `protobuf:"varint,28,opt,name=force_unsupported_fs_type,json=forceUnsupportedFsType" json:"force_unsupported_fs_type,omitempty"` // Nodiscard specifies if the volume will be mounted with discard support disabled. // i.e. FS will not release allocated blocks back to the backing storage pool. - Nodiscard bool `protobuf:"varint,29,opt,name=nodiscard,proto3" json:"nodiscard,omitempty"` + Nodiscard bool `protobuf:"varint,29,opt,name=nodiscard" json:"nodiscard,omitempty"` // IoStrategy preferred strategy for I/O. - IoStrategy *IoStrategy `protobuf:"bytes,30,opt,name=io_strategy,json=ioStrategy,proto3" json:"io_strategy,omitempty"` + IoStrategy *IoStrategy `protobuf:"bytes,30,opt,name=io_strategy,json=ioStrategy" json:"io_strategy,omitempty"` // PlacementStrategy specifies a spec to indicate where to place the volume. - PlacementStrategy *VolumePlacementStrategy `protobuf:"bytes,31,opt,name=placement_strategy,json=placementStrategy,proto3" json:"placement_strategy,omitempty"` + PlacementStrategy *VolumePlacementStrategy `protobuf:"bytes,31,opt,name=placement_strategy,json=placementStrategy" json:"placement_strategy,omitempty"` // StoragePolicy if applied/specified while creating volume - StoragePolicy string `protobuf:"bytes,32,opt,name=storage_policy,json=storagePolicy,proto3" json:"storage_policy,omitempty"` + StoragePolicy string `protobuf:"bytes,32,opt,name=storage_policy,json=storagePolicy" json:"storage_policy,omitempty"` // Ownership - Ownership *Ownership `protobuf:"bytes,33,opt,name=ownership,proto3" json:"ownership,omitempty"` + Ownership *Ownership `protobuf:"bytes,33,opt,name=ownership" json:"ownership,omitempty"` // ExportSpec defines how the volume should be exported. - ExportSpec *ExportSpec `protobuf:"bytes,34,opt,name=export_spec,json=exportSpec,proto3" json:"export_spec,omitempty"` + ExportSpec *ExportSpec `protobuf:"bytes,34,opt,name=export_spec,json=exportSpec" json:"export_spec,omitempty"` // fastpath extensions - FpPreference bool `protobuf:"varint,35,opt,name=fp_preference,json=fpPreference,proto3" json:"fp_preference,omitempty"` + FpPreference bool `protobuf:"varint,35,opt,name=fp_preference,json=fpPreference" json:"fp_preference,omitempty"` // Xattr specifies implementation specific volume attributes - Xattr Xattr_Value `protobuf:"varint,36,opt,name=xattr,proto3,enum=openstorage.api.Xattr_Value" json:"xattr,omitempty"` + Xattr Xattr_Value `protobuf:"varint,36,opt,name=xattr,enum=openstorage.api.Xattr_Value" json:"xattr,omitempty"` // ScanPolicy specifies the filesystem check policy - ScanPolicy *ScanPolicy `protobuf:"bytes,37,opt,name=scan_policy,json=scanPolicy,proto3" json:"scan_policy,omitempty"` + ScanPolicy *ScanPolicy `protobuf:"bytes,37,opt,name=scan_policy,json=scanPolicy" json:"scan_policy,omitempty"` // MountOptions defines the options that will be used while mounting this volume - MountOptions *MountOptions `protobuf:"bytes,38,opt,name=mount_options,json=mountOptions,proto3" json:"mount_options,omitempty"` + MountOptions *MountOptions `protobuf:"bytes,38,opt,name=mount_options,json=mountOptions" json:"mount_options,omitempty"` // Sharedv4MountOptions defines the options that will be used while mounting a sharedv4 volume // from a node where the volume replica does not exist - Sharedv4MountOptions *MountOptions `protobuf:"bytes,39,opt,name=sharedv4_mount_options,json=sharedv4MountOptions,proto3" json:"sharedv4_mount_options,omitempty"` + Sharedv4MountOptions *MountOptions `protobuf:"bytes,39,opt,name=sharedv4_mount_options,json=sharedv4MountOptions" json:"sharedv4_mount_options,omitempty"` // Proxy_write if true, per volume proxy write replication enabled - ProxyWrite bool `protobuf:"varint,40,opt,name=proxy_write,json=proxyWrite,proto3" json:"proxy_write,omitempty"` + ProxyWrite bool `protobuf:"varint,40,opt,name=proxy_write,json=proxyWrite" json:"proxy_write,omitempty"` // ProxySpec indicates that this volume is used for proxying an external data source - ProxySpec *ProxySpec `protobuf:"bytes,41,opt,name=proxy_spec,json=proxySpec,proto3" json:"proxy_spec,omitempty"` + ProxySpec *ProxySpec `protobuf:"bytes,41,opt,name=proxy_spec,json=proxySpec" json:"proxy_spec,omitempty"` // Sharedv4ServiceSpec specifies a spec for configuring a service for a sharedv4 volume - Sharedv4ServiceSpec *Sharedv4ServiceSpec `protobuf:"bytes,42,opt,name=sharedv4_service_spec,json=sharedv4ServiceSpec,proto3" json:"sharedv4_service_spec,omitempty"` + Sharedv4ServiceSpec *Sharedv4ServiceSpec `protobuf:"bytes,42,opt,name=sharedv4_service_spec,json=sharedv4ServiceSpec" json:"sharedv4_service_spec,omitempty"` // Sharedv4Spec specifies common properties of sharedv4 and sharedv4 service volumes - Sharedv4Spec *Sharedv4Spec `protobuf:"bytes,43,opt,name=sharedv4_spec,json=sharedv4Spec,proto3" json:"sharedv4_spec,omitempty"` + Sharedv4Spec *Sharedv4Spec `protobuf:"bytes,43,opt,name=sharedv4_spec,json=sharedv4Spec" json:"sharedv4_spec,omitempty"` // Autofstrim indicates that fstrim would be run on this volume automatically, without user intervention - AutoFstrim bool `protobuf:"varint,44,opt,name=auto_fstrim,json=autoFstrim,proto3" json:"auto_fstrim,omitempty"` + AutoFstrim bool `protobuf:"varint,44,opt,name=auto_fstrim,json=autoFstrim" json:"auto_fstrim,omitempty"` // IoThrottle specifies maximum io(iops/bandwidth) this volume is restricted to - IoThrottle *IoThrottle `protobuf:"bytes,45,opt,name=io_throttle,json=ioThrottle,proto3" json:"io_throttle,omitempty"` - // NumberOfChunks indicates how many chunks must be created, 0 and 1 both mean 1 - NumberOfChunks uint32 `protobuf:"varint,46,opt,name=number_of_chunks,json=numberOfChunks,proto3" json:"number_of_chunks,omitempty"` - // Enable readahead for the volume - Readahead bool `protobuf:"varint,47,opt,name=readahead,proto3" json:"readahead,omitempty"` + IoThrottle *IoThrottle `protobuf:"bytes,45,opt,name=io_throttle,json=ioThrottle" json:"io_throttle,omitempty"` // TopologyRequirement topology requirement for this volume - TopologyRequirement *TopologyRequirement `protobuf:"bytes,48,opt,name=topology_requirement,json=topologyRequirement,proto3" json:"topology_requirement,omitempty"` - // winshare is true if this volume can be accessed from windows pods. - Winshare bool `protobuf:"varint,49,opt,name=winshare,proto3" json:"winshare,omitempty"` + TopologyRequirement *TopologyRequirement `protobuf:"bytes,48,opt,name=topology_requirement,json=topologyRequirement" json:"topology_requirement,omitempty"` // Filesystem create options to be honored. - FaCreateOptions string `protobuf:"bytes,50,opt,name=fa_create_options,json=faCreateOptions,proto3" json:"fa_create_options,omitempty"` + FaCreateOptions string `protobuf:"bytes,50,opt,name=fa_create_options,json=faCreateOptions" json:"fa_create_options,omitempty"` // NearSync specifies the volume has a near-sync replica - NearSync bool `protobuf:"varint,51,opt,name=near_sync,json=nearSync,proto3" json:"near_sync,omitempty"` + NearSync bool `protobuf:"varint,51,opt,name=near_sync,json=nearSync" json:"near_sync,omitempty"` // NearSyncReplicationStrategy is replication strategy for near sync volumes - NearSyncReplicationStrategy NearSyncReplicationStrategy `protobuf:"varint,52,opt,name=near_sync_replication_strategy,json=nearSyncReplicationStrategy,proto3,enum=openstorage.api.NearSyncReplicationStrategy" json:"near_sync_replication_strategy,omitempty"` - // clone created to trigger checksum verification - ChecksumCloneId string `protobuf:"bytes,53,opt,name=checksum_clone_id,json=checksumCloneId,proto3" json:"checksum_clone_id,omitempty"` - // Checksummed indicates if volumed data is checksummed to provide data integrity - Checksummed bool `protobuf:"varint,54,opt,name=checksummed,proto3" json:"checksummed,omitempty"` + NearSyncReplicationStrategy NearSyncReplicationStrategy `protobuf:"varint,52,opt,name=near_sync_replication_strategy,json=nearSyncReplicationStrategy,enum=openstorage.api.NearSyncReplicationStrategy" json:"near_sync_replication_strategy,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VolumeSpec) Reset() { - *x = VolumeSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *VolumeSpec) Reset() { *m = VolumeSpec{} } +func (m *VolumeSpec) String() string { return proto.CompactTextString(m) } +func (*VolumeSpec) ProtoMessage() {} +func (*VolumeSpec) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{26} } - -func (x *VolumeSpec) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *VolumeSpec) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumeSpec.Unmarshal(m, b) } - -func (*VolumeSpec) ProtoMessage() {} - -func (x *VolumeSpec) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[26] - 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) +func (m *VolumeSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumeSpec.Marshal(b, m, deterministic) } - -// Deprecated: Use VolumeSpec.ProtoReflect.Descriptor instead. -func (*VolumeSpec) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{26} +func (dst *VolumeSpec) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumeSpec.Merge(dst, src) +} +func (m *VolumeSpec) XXX_Size() int { + return xxx_messageInfo_VolumeSpec.Size(m) } +func (m *VolumeSpec) XXX_DiscardUnknown() { + xxx_messageInfo_VolumeSpec.DiscardUnknown(m) +} + +var xxx_messageInfo_VolumeSpec proto.InternalMessageInfo -func (x *VolumeSpec) GetEphemeral() bool { - if x != nil { - return x.Ephemeral +func (m *VolumeSpec) GetEphemeral() bool { + if m != nil { + return m.Ephemeral } return false } -func (x *VolumeSpec) GetSize() uint64 { - if x != nil { - return x.Size +func (m *VolumeSpec) GetSize() uint64 { + if m != nil { + return m.Size } return 0 } -func (x *VolumeSpec) GetFormat() FSType { - if x != nil { - return x.Format +func (m *VolumeSpec) GetFormat() FSType { + if m != nil { + return m.Format } return FSType_FS_TYPE_NONE } -func (x *VolumeSpec) GetBlockSize() int64 { - if x != nil { - return x.BlockSize +func (m *VolumeSpec) GetBlockSize() int64 { + if m != nil { + return m.BlockSize } return 0 } -func (x *VolumeSpec) GetHaLevel() int64 { - if x != nil { - return x.HaLevel +func (m *VolumeSpec) GetHaLevel() int64 { + if m != nil { + return m.HaLevel } return 0 } -func (x *VolumeSpec) GetCos() CosType { - if x != nil { - return x.Cos +func (m *VolumeSpec) GetCos() CosType { + if m != nil { + return m.Cos } return CosType_NONE } -func (x *VolumeSpec) GetIoProfile() IoProfile { - if x != nil { - return x.IoProfile +func (m *VolumeSpec) GetIoProfile() IoProfile { + if m != nil { + return m.IoProfile } return IoProfile_IO_PROFILE_SEQUENTIAL } -func (x *VolumeSpec) GetDedupe() bool { - if x != nil { - return x.Dedupe +func (m *VolumeSpec) GetDedupe() bool { + if m != nil { + return m.Dedupe } return false } -func (x *VolumeSpec) GetSnapshotInterval() uint32 { - if x != nil { - return x.SnapshotInterval +func (m *VolumeSpec) GetSnapshotInterval() uint32 { + if m != nil { + return m.SnapshotInterval } return 0 } -func (x *VolumeSpec) GetVolumeLabels() map[string]string { - if x != nil { - return x.VolumeLabels +func (m *VolumeSpec) GetVolumeLabels() map[string]string { + if m != nil { + return m.VolumeLabels } return nil } -func (x *VolumeSpec) GetShared() bool { - if x != nil { - return x.Shared +func (m *VolumeSpec) GetShared() bool { + if m != nil { + return m.Shared } return false } -func (x *VolumeSpec) GetReplicaSet() *ReplicaSet { - if x != nil { - return x.ReplicaSet +func (m *VolumeSpec) GetReplicaSet() *ReplicaSet { + if m != nil { + return m.ReplicaSet } return nil } -func (x *VolumeSpec) GetAggregationLevel() uint32 { - if x != nil { - return x.AggregationLevel +func (m *VolumeSpec) GetAggregationLevel() uint32 { + if m != nil { + return m.AggregationLevel } return 0 } -func (x *VolumeSpec) GetEncrypted() bool { - if x != nil { - return x.Encrypted +func (m *VolumeSpec) GetEncrypted() bool { + if m != nil { + return m.Encrypted } return false } -func (x *VolumeSpec) GetPassphrase() string { - if x != nil { - return x.Passphrase +func (m *VolumeSpec) GetPassphrase() string { + if m != nil { + return m.Passphrase } return "" } -func (x *VolumeSpec) GetSnapshotSchedule() string { - if x != nil { - return x.SnapshotSchedule +func (m *VolumeSpec) GetSnapshotSchedule() string { + if m != nil { + return m.SnapshotSchedule } return "" } -func (x *VolumeSpec) GetScale() uint32 { - if x != nil { - return x.Scale +func (m *VolumeSpec) GetScale() uint32 { + if m != nil { + return m.Scale } return 0 } -func (x *VolumeSpec) GetSticky() bool { - if x != nil { - return x.Sticky +func (m *VolumeSpec) GetSticky() bool { + if m != nil { + return m.Sticky } return false } -func (x *VolumeSpec) GetGroup() *Group { - if x != nil { - return x.Group +func (m *VolumeSpec) GetGroup() *Group { + if m != nil { + return m.Group } return nil } -func (x *VolumeSpec) GetGroupEnforced() bool { - if x != nil { - return x.GroupEnforced +func (m *VolumeSpec) GetGroupEnforced() bool { + if m != nil { + return m.GroupEnforced } return false } -func (x *VolumeSpec) GetCompressed() bool { - if x != nil { - return x.Compressed +func (m *VolumeSpec) GetCompressed() bool { + if m != nil { + return m.Compressed } return false } -func (x *VolumeSpec) GetCascaded() bool { - if x != nil { - return x.Cascaded +func (m *VolumeSpec) GetCascaded() bool { + if m != nil { + return m.Cascaded } return false } -func (x *VolumeSpec) GetJournal() bool { - if x != nil { - return x.Journal +func (m *VolumeSpec) GetJournal() bool { + if m != nil { + return m.Journal } return false } -func (x *VolumeSpec) GetSharedv4() bool { - if x != nil { - return x.Sharedv4 +func (m *VolumeSpec) GetSharedv4() bool { + if m != nil { + return m.Sharedv4 } return false } -func (x *VolumeSpec) GetQueueDepth() uint32 { - if x != nil { - return x.QueueDepth +func (m *VolumeSpec) GetQueueDepth() uint32 { + if m != nil { + return m.QueueDepth } return 0 } -func (x *VolumeSpec) GetForceUnsupportedFsType() bool { - if x != nil { - return x.ForceUnsupportedFsType +func (m *VolumeSpec) GetForceUnsupportedFsType() bool { + if m != nil { + return m.ForceUnsupportedFsType } return false } -func (x *VolumeSpec) GetNodiscard() bool { - if x != nil { - return x.Nodiscard +func (m *VolumeSpec) GetNodiscard() bool { + if m != nil { + return m.Nodiscard } return false } -func (x *VolumeSpec) GetIoStrategy() *IoStrategy { - if x != nil { - return x.IoStrategy +func (m *VolumeSpec) GetIoStrategy() *IoStrategy { + if m != nil { + return m.IoStrategy } return nil } -func (x *VolumeSpec) GetPlacementStrategy() *VolumePlacementStrategy { - if x != nil { - return x.PlacementStrategy +func (m *VolumeSpec) GetPlacementStrategy() *VolumePlacementStrategy { + if m != nil { + return m.PlacementStrategy } return nil } -func (x *VolumeSpec) GetStoragePolicy() string { - if x != nil { - return x.StoragePolicy +func (m *VolumeSpec) GetStoragePolicy() string { + if m != nil { + return m.StoragePolicy } return "" } -func (x *VolumeSpec) GetOwnership() *Ownership { - if x != nil { - return x.Ownership +func (m *VolumeSpec) GetOwnership() *Ownership { + if m != nil { + return m.Ownership } return nil } -func (x *VolumeSpec) GetExportSpec() *ExportSpec { - if x != nil { - return x.ExportSpec +func (m *VolumeSpec) GetExportSpec() *ExportSpec { + if m != nil { + return m.ExportSpec } return nil } -func (x *VolumeSpec) GetFpPreference() bool { - if x != nil { - return x.FpPreference +func (m *VolumeSpec) GetFpPreference() bool { + if m != nil { + return m.FpPreference } return false } -func (x *VolumeSpec) GetXattr() Xattr_Value { - if x != nil { - return x.Xattr +func (m *VolumeSpec) GetXattr() Xattr_Value { + if m != nil { + return m.Xattr } return Xattr_UNSPECIFIED } -func (x *VolumeSpec) GetScanPolicy() *ScanPolicy { - if x != nil { - return x.ScanPolicy +func (m *VolumeSpec) GetScanPolicy() *ScanPolicy { + if m != nil { + return m.ScanPolicy } return nil } -func (x *VolumeSpec) GetMountOptions() *MountOptions { - if x != nil { - return x.MountOptions +func (m *VolumeSpec) GetMountOptions() *MountOptions { + if m != nil { + return m.MountOptions } return nil } -func (x *VolumeSpec) GetSharedv4MountOptions() *MountOptions { - if x != nil { - return x.Sharedv4MountOptions +func (m *VolumeSpec) GetSharedv4MountOptions() *MountOptions { + if m != nil { + return m.Sharedv4MountOptions } return nil } -func (x *VolumeSpec) GetProxyWrite() bool { - if x != nil { - return x.ProxyWrite +func (m *VolumeSpec) GetProxyWrite() bool { + if m != nil { + return m.ProxyWrite } return false } -func (x *VolumeSpec) GetProxySpec() *ProxySpec { - if x != nil { - return x.ProxySpec +func (m *VolumeSpec) GetProxySpec() *ProxySpec { + if m != nil { + return m.ProxySpec } return nil } -func (x *VolumeSpec) GetSharedv4ServiceSpec() *Sharedv4ServiceSpec { - if x != nil { - return x.Sharedv4ServiceSpec +func (m *VolumeSpec) GetSharedv4ServiceSpec() *Sharedv4ServiceSpec { + if m != nil { + return m.Sharedv4ServiceSpec } return nil } -func (x *VolumeSpec) GetSharedv4Spec() *Sharedv4Spec { - if x != nil { - return x.Sharedv4Spec +func (m *VolumeSpec) GetSharedv4Spec() *Sharedv4Spec { + if m != nil { + return m.Sharedv4Spec } return nil } -func (x *VolumeSpec) GetAutoFstrim() bool { - if x != nil { - return x.AutoFstrim +func (m *VolumeSpec) GetAutoFstrim() bool { + if m != nil { + return m.AutoFstrim } return false } -func (x *VolumeSpec) GetIoThrottle() *IoThrottle { - if x != nil { - return x.IoThrottle +func (m *VolumeSpec) GetIoThrottle() *IoThrottle { + if m != nil { + return m.IoThrottle } return nil } -func (x *VolumeSpec) GetNumberOfChunks() uint32 { - if x != nil { - return x.NumberOfChunks - } - return 0 -} - -func (x *VolumeSpec) GetReadahead() bool { - if x != nil { - return x.Readahead - } - return false -} - -func (x *VolumeSpec) GetTopologyRequirement() *TopologyRequirement { - if x != nil { - return x.TopologyRequirement +func (m *VolumeSpec) GetTopologyRequirement() *TopologyRequirement { + if m != nil { + return m.TopologyRequirement } return nil } -func (x *VolumeSpec) GetWinshare() bool { - if x != nil { - return x.Winshare - } - return false -} - -func (x *VolumeSpec) GetFaCreateOptions() string { - if x != nil { - return x.FaCreateOptions +func (m *VolumeSpec) GetFaCreateOptions() string { + if m != nil { + return m.FaCreateOptions } return "" } -func (x *VolumeSpec) GetNearSync() bool { - if x != nil { - return x.NearSync +func (m *VolumeSpec) GetNearSync() bool { + if m != nil { + return m.NearSync } return false } -func (x *VolumeSpec) GetNearSyncReplicationStrategy() NearSyncReplicationStrategy { - if x != nil { - return x.NearSyncReplicationStrategy +func (m *VolumeSpec) GetNearSyncReplicationStrategy() NearSyncReplicationStrategy { + if m != nil { + return m.NearSyncReplicationStrategy } return NearSyncReplicationStrategy_NEAR_SYNC_STRATEGY_NONE } -func (x *VolumeSpec) GetChecksumCloneId() string { - if x != nil { - return x.ChecksumCloneId - } - return "" -} - -func (x *VolumeSpec) GetChecksummed() bool { - if x != nil { - return x.Checksummed - } - return false -} - // VolumeSpecUpdate provides a method to set any of the VolumeSpec of an existing volume type VolumeSpecUpdate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Size specifies the thin provisioned volume size in bytes // - // Types that are assignable to SizeOpt: + // Types that are valid to be assigned to SizeOpt: // *VolumeSpecUpdate_Size SizeOpt isVolumeSpecUpdate_SizeOpt `protobuf_oneof:"size_opt"` // HaLevel specifies the number of copies of data. // - // Types that are assignable to HaLevelOpt: + // Types that are valid to be assigned to HaLevelOpt: // *VolumeSpecUpdate_HaLevel HaLevelOpt isVolumeSpecUpdate_HaLevelOpt `protobuf_oneof:"ha_level_opt"` // Cos specifies the relative class of service. // - // Types that are assignable to CosOpt: + // Types that are valid to be assigned to CosOpt: // *VolumeSpecUpdate_Cos CosOpt isVolumeSpecUpdate_CosOpt `protobuf_oneof:"cos_opt"` // IoProfile provides a hint about application using this volume. // - // Types that are assignable to IoProfileOpt: + // Types that are valid to be assigned to IoProfileOpt: // *VolumeSpecUpdate_IoProfile IoProfileOpt isVolumeSpecUpdate_IoProfileOpt `protobuf_oneof:"io_profile_opt"` // Dedupe specifies if the volume data is to be de-duplicated. // - // Types that are assignable to DedupeOpt: + // Types that are valid to be assigned to DedupeOpt: // *VolumeSpecUpdate_Dedupe DedupeOpt isVolumeSpecUpdate_DedupeOpt `protobuf_oneof:"dedupe_opt"` // SnapshotInterval in minutes, set to 0 to disable snapshots // - // Types that are assignable to SnapshotIntervalOpt: + // Types that are valid to be assigned to SnapshotIntervalOpt: // *VolumeSpecUpdate_SnapshotInterval SnapshotIntervalOpt isVolumeSpecUpdate_SnapshotIntervalOpt `protobuf_oneof:"snapshot_interval_opt"` // Shared is true if this volume can be remotely accessed. // - // Types that are assignable to SharedOpt: + // Types that are valid to be assigned to SharedOpt: // *VolumeSpecUpdate_Shared SharedOpt isVolumeSpecUpdate_SharedOpt `protobuf_oneof:"shared_opt"` // ReplicaSet is the desired set of nodes for the volume data. - ReplicaSet *ReplicaSet `protobuf:"bytes,12,opt,name=replica_set,json=replicaSet,proto3" json:"replica_set,omitempty"` + ReplicaSet *ReplicaSet `protobuf:"bytes,12,opt,name=replica_set,json=replicaSet" json:"replica_set,omitempty"` // Passphrase for an encrypted volume // - // Types that are assignable to PassphraseOpt: + // Types that are valid to be assigned to PassphraseOpt: // *VolumeSpecUpdate_Passphrase PassphraseOpt isVolumeSpecUpdate_PassphraseOpt `protobuf_oneof:"passphrase_opt"` // SnapshotSchedule a well known string that specifies when snapshots should be taken. // - // Types that are assignable to SnapshotScheduleOpt: + // Types that are valid to be assigned to SnapshotScheduleOpt: // *VolumeSpecUpdate_SnapshotSchedule SnapshotScheduleOpt isVolumeSpecUpdate_SnapshotScheduleOpt `protobuf_oneof:"snapshot_schedule_opt"` // Scale allows autocreation of volumes. // - // Types that are assignable to ScaleOpt: + // Types that are valid to be assigned to ScaleOpt: // *VolumeSpecUpdate_Scale ScaleOpt isVolumeSpecUpdate_ScaleOpt `protobuf_oneof:"scale_opt"` // Sticky volumes cannot be deleted until the flag is removed. // - // Types that are assignable to StickyOpt: + // Types that are valid to be assigned to StickyOpt: // *VolumeSpecUpdate_Sticky StickyOpt isVolumeSpecUpdate_StickyOpt `protobuf_oneof:"sticky_opt"` // Group identifies a consistency group // - // Types that are assignable to GroupOpt: + // Types that are valid to be assigned to GroupOpt: // *VolumeSpecUpdate_Group GroupOpt isVolumeSpecUpdate_GroupOpt `protobuf_oneof:"group_opt"` // Journal is true if data for the volume goes into the journal. // - // Types that are assignable to JournalOpt: + // Types that are valid to be assigned to JournalOpt: // *VolumeSpecUpdate_Journal JournalOpt isVolumeSpecUpdate_JournalOpt `protobuf_oneof:"journal_opt"` // Sharedv4 is true if this volume can be accessed via sharedv4. // - // Types that are assignable to Sharedv4Opt: + // Types that are valid to be assigned to Sharedv4Opt: // *VolumeSpecUpdate_Sharedv4 Sharedv4Opt isVolumeSpecUpdate_Sharedv4Opt `protobuf_oneof:"sharedv4_opt"` // QueueDepth defines the desired block device queue depth // - // Types that are assignable to QueueDepthOpt: + // Types that are valid to be assigned to QueueDepthOpt: // *VolumeSpecUpdate_QueueDepth QueueDepthOpt isVolumeSpecUpdate_QueueDepthOpt `protobuf_oneof:"queue_depth_opt"` // Ownership volume information to update. If the value of `owner` in the // `ownership` message is an empty string then the value of `owner` in // the `VolumeSpec.Ownership.owner` will not be updated. - Ownership *Ownership `protobuf:"bytes,26,opt,name=ownership,proto3" json:"ownership,omitempty"` + Ownership *Ownership `protobuf:"bytes,26,opt,name=ownership" json:"ownership,omitempty"` // Nodiscard specifies if the volume will be mounted with discard support disabled. // i.e. FS will not release allocated blocks back to the backing storage pool. // - // Types that are assignable to NodiscardOpt: + // Types that are valid to be assigned to NodiscardOpt: // *VolumeSpecUpdate_Nodiscard NodiscardOpt isVolumeSpecUpdate_NodiscardOpt `protobuf_oneof:"nodiscard_opt"` // IoStrategy preferred strategy for I/O. - IoStrategy *IoStrategy `protobuf:"bytes,28,opt,name=io_strategy,json=ioStrategy,proto3" json:"io_strategy,omitempty"` + IoStrategy *IoStrategy `protobuf:"bytes,28,opt,name=io_strategy,json=ioStrategy" json:"io_strategy,omitempty"` // ExportSpec volume export spec // - // Types that are assignable to ExportSpecOpt: + // Types that are valid to be assigned to ExportSpecOpt: // *VolumeSpecUpdate_ExportSpec ExportSpecOpt isVolumeSpecUpdate_ExportSpecOpt `protobuf_oneof:"export_spec_opt"` // fastpath preference // - // Types that are assignable to FastpathOpt: + // Types that are valid to be assigned to FastpathOpt: // *VolumeSpecUpdate_Fastpath FastpathOpt isVolumeSpecUpdate_FastpathOpt `protobuf_oneof:"fastpath_opt"` // Xattr specifies implementation specific volume attributes // - // Types that are assignable to XattrOpt: + // Types that are valid to be assigned to XattrOpt: // *VolumeSpecUpdate_Xattr XattrOpt isVolumeSpecUpdate_XattrOpt `protobuf_oneof:"xattr_opt"` // scan_policy_opt defines the filesystem check policy for the volume // - // Types that are assignable to ScanPolicyOpt: + // Types that are valid to be assigned to ScanPolicyOpt: // *VolumeSpecUpdate_ScanPolicy ScanPolicyOpt isVolumeSpecUpdate_ScanPolicyOpt `protobuf_oneof:"scan_policy_opt"` // mount_opt provides the mount time options for a volume // - // Types that are assignable to MountOpt: + // Types that are valid to be assigned to MountOpt: // *VolumeSpecUpdate_MountOptSpec MountOpt isVolumeSpecUpdate_MountOpt `protobuf_oneof:"mount_opt"` // sharedv4_mount_opt provides the client side mount time options for a sharedv4 volume // - // Types that are assignable to Sharedv4MountOpt: + // Types that are valid to be assigned to Sharedv4MountOpt: // *VolumeSpecUpdate_Sharedv4MountOptSpec Sharedv4MountOpt isVolumeSpecUpdate_Sharedv4MountOpt `protobuf_oneof:"sharedv4_mount_opt"` // Proxy_write is true if proxy write replication is enabled for the volume // - // Types that are assignable to ProxyWriteOpt: + // Types that are valid to be assigned to ProxyWriteOpt: // *VolumeSpecUpdate_ProxyWrite ProxyWriteOpt isVolumeSpecUpdate_ProxyWriteOpt `protobuf_oneof:"proxy_write_opt"` // proxy_spec_opt provides the spec for a proxy volume // - // Types that are assignable to ProxySpecOpt: + // Types that are valid to be assigned to ProxySpecOpt: // *VolumeSpecUpdate_ProxySpec ProxySpecOpt isVolumeSpecUpdate_ProxySpecOpt `protobuf_oneof:"proxy_spec_opt"` // sharedv4_service_spec_opt provides the spec for sharedv4 volume service // - // Types that are assignable to Sharedv4ServiceSpecOpt: + // Types that are valid to be assigned to Sharedv4ServiceSpecOpt: // *VolumeSpecUpdate_Sharedv4ServiceSpec Sharedv4ServiceSpecOpt isVolumeSpecUpdate_Sharedv4ServiceSpecOpt `protobuf_oneof:"sharedv4_service_spec_opt"` // Sharedv4Spec specifies common properties of sharedv4 and sharedv4 service volumes // - // Types that are assignable to Sharedv4SpecOpt: + // Types that are valid to be assigned to Sharedv4SpecOpt: // *VolumeSpecUpdate_Sharedv4Spec Sharedv4SpecOpt isVolumeSpecUpdate_Sharedv4SpecOpt `protobuf_oneof:"sharedv4_spec_opt"` // Autofstrim is set to true, to enable automatic fstrim on this volume // - // Types that are assignable to AutoFstrimOpt: + // Types that are valid to be assigned to AutoFstrimOpt: // *VolumeSpecUpdate_AutoFstrim AutoFstrimOpt isVolumeSpecUpdate_AutoFstrimOpt `protobuf_oneof:"auto_fstrim_opt"` // io_throttle_opt defines the io throttle limits for the volume // - // Types that are assignable to IoThrottleOpt: + // Types that are valid to be assigned to IoThrottleOpt: // *VolumeSpecUpdate_IoThrottle IoThrottleOpt isVolumeSpecUpdate_IoThrottleOpt `protobuf_oneof:"io_throttle_opt"` - // Enable readahead for the volume - // - // Types that are assignable to ReadaheadOpt: - // *VolumeSpecUpdate_Readahead - ReadaheadOpt isVolumeSpecUpdate_ReadaheadOpt `protobuf_oneof:"readahead_opt"` - // winshare is true if this volume can be accessed from windows pods. - // - // Types that are assignable to WinshareOpt: - // *VolumeSpecUpdate_Winshare - WinshareOpt isVolumeSpecUpdate_WinshareOpt `protobuf_oneof:"winshare_opt"` // NearSyncReplicationStrategy is replication strategy for near sync volumes // - // Types that are assignable to NearSyncReplicationStrategyOpt: + // Types that are valid to be assigned to NearSyncReplicationStrategyOpt: // *VolumeSpecUpdate_NearSyncReplicationStrategy NearSyncReplicationStrategyOpt isVolumeSpecUpdate_NearSyncReplicationStrategyOpt `protobuf_oneof:"near_sync_replication_strategy_opt"` - // Checksummed indicates if volumed data is checksummed to provide data integrity + // PureNfsEnpoint specifies NFS endpoint for PureFile Direct Access volumes // - // Types that are assignable to ChecksummedOpt: - // *VolumeSpecUpdate_Checksummed - ChecksummedOpt isVolumeSpecUpdate_ChecksummedOpt `protobuf_oneof:"checksummed_opt"` + // Types that are valid to be assigned to PureNfsEndpointOpt: + // *VolumeSpecUpdate_PureNfsEndpoint + PureNfsEndpointOpt isVolumeSpecUpdate_PureNfsEndpointOpt `protobuf_oneof:"pure_nfs_endpoint_opt"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VolumeSpecUpdate) Reset() { - *x = VolumeSpecUpdate{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *VolumeSpecUpdate) Reset() { *m = VolumeSpecUpdate{} } +func (m *VolumeSpecUpdate) String() string { return proto.CompactTextString(m) } +func (*VolumeSpecUpdate) ProtoMessage() {} +func (*VolumeSpecUpdate) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{27} } - -func (x *VolumeSpecUpdate) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *VolumeSpecUpdate) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumeSpecUpdate.Unmarshal(m, b) } - -func (*VolumeSpecUpdate) ProtoMessage() {} - -func (x *VolumeSpecUpdate) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[27] - 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) +func (m *VolumeSpecUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumeSpecUpdate.Marshal(b, m, deterministic) } - -// Deprecated: Use VolumeSpecUpdate.ProtoReflect.Descriptor instead. -func (*VolumeSpecUpdate) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{27} +func (dst *VolumeSpecUpdate) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumeSpecUpdate.Merge(dst, src) +} +func (m *VolumeSpecUpdate) XXX_Size() int { + return xxx_messageInfo_VolumeSpecUpdate.Size(m) +} +func (m *VolumeSpecUpdate) XXX_DiscardUnknown() { + xxx_messageInfo_VolumeSpecUpdate.DiscardUnknown(m) } -func (m *VolumeSpecUpdate) GetSizeOpt() isVolumeSpecUpdate_SizeOpt { - if m != nil { - return m.SizeOpt - } - return nil +var xxx_messageInfo_VolumeSpecUpdate proto.InternalMessageInfo + +type isVolumeSpecUpdate_SizeOpt interface { + isVolumeSpecUpdate_SizeOpt() +} +type isVolumeSpecUpdate_HaLevelOpt interface { + isVolumeSpecUpdate_HaLevelOpt() +} +type isVolumeSpecUpdate_CosOpt interface { + isVolumeSpecUpdate_CosOpt() +} +type isVolumeSpecUpdate_IoProfileOpt interface { + isVolumeSpecUpdate_IoProfileOpt() +} +type isVolumeSpecUpdate_DedupeOpt interface { + isVolumeSpecUpdate_DedupeOpt() +} +type isVolumeSpecUpdate_SnapshotIntervalOpt interface { + isVolumeSpecUpdate_SnapshotIntervalOpt() +} +type isVolumeSpecUpdate_SharedOpt interface { + isVolumeSpecUpdate_SharedOpt() +} +type isVolumeSpecUpdate_PassphraseOpt interface { + isVolumeSpecUpdate_PassphraseOpt() +} +type isVolumeSpecUpdate_SnapshotScheduleOpt interface { + isVolumeSpecUpdate_SnapshotScheduleOpt() +} +type isVolumeSpecUpdate_ScaleOpt interface { + isVolumeSpecUpdate_ScaleOpt() +} +type isVolumeSpecUpdate_StickyOpt interface { + isVolumeSpecUpdate_StickyOpt() +} +type isVolumeSpecUpdate_GroupOpt interface { + isVolumeSpecUpdate_GroupOpt() +} +type isVolumeSpecUpdate_JournalOpt interface { + isVolumeSpecUpdate_JournalOpt() +} +type isVolumeSpecUpdate_Sharedv4Opt interface { + isVolumeSpecUpdate_Sharedv4Opt() +} +type isVolumeSpecUpdate_QueueDepthOpt interface { + isVolumeSpecUpdate_QueueDepthOpt() +} +type isVolumeSpecUpdate_NodiscardOpt interface { + isVolumeSpecUpdate_NodiscardOpt() +} +type isVolumeSpecUpdate_ExportSpecOpt interface { + isVolumeSpecUpdate_ExportSpecOpt() +} +type isVolumeSpecUpdate_FastpathOpt interface { + isVolumeSpecUpdate_FastpathOpt() +} +type isVolumeSpecUpdate_XattrOpt interface { + isVolumeSpecUpdate_XattrOpt() +} +type isVolumeSpecUpdate_ScanPolicyOpt interface { + isVolumeSpecUpdate_ScanPolicyOpt() +} +type isVolumeSpecUpdate_MountOpt interface { + isVolumeSpecUpdate_MountOpt() +} +type isVolumeSpecUpdate_Sharedv4MountOpt interface { + isVolumeSpecUpdate_Sharedv4MountOpt() +} +type isVolumeSpecUpdate_ProxyWriteOpt interface { + isVolumeSpecUpdate_ProxyWriteOpt() +} +type isVolumeSpecUpdate_ProxySpecOpt interface { + isVolumeSpecUpdate_ProxySpecOpt() +} +type isVolumeSpecUpdate_Sharedv4ServiceSpecOpt interface { + isVolumeSpecUpdate_Sharedv4ServiceSpecOpt() +} +type isVolumeSpecUpdate_Sharedv4SpecOpt interface { + isVolumeSpecUpdate_Sharedv4SpecOpt() +} +type isVolumeSpecUpdate_AutoFstrimOpt interface { + isVolumeSpecUpdate_AutoFstrimOpt() +} +type isVolumeSpecUpdate_IoThrottleOpt interface { + isVolumeSpecUpdate_IoThrottleOpt() +} +type isVolumeSpecUpdate_NearSyncReplicationStrategyOpt interface { + isVolumeSpecUpdate_NearSyncReplicationStrategyOpt() +} +type isVolumeSpecUpdate_PureNfsEndpointOpt interface { + isVolumeSpecUpdate_PureNfsEndpointOpt() } -func (x *VolumeSpecUpdate) GetSize() uint64 { - if x, ok := x.GetSizeOpt().(*VolumeSpecUpdate_Size); ok { - return x.Size - } - return 0 +type VolumeSpecUpdate_Size struct { + Size uint64 `protobuf:"varint,2,opt,name=size,oneof"` +} +type VolumeSpecUpdate_HaLevel struct { + HaLevel int64 `protobuf:"varint,5,opt,name=ha_level,json=haLevel,oneof"` +} +type VolumeSpecUpdate_Cos struct { + Cos CosType `protobuf:"varint,6,opt,name=cos,enum=openstorage.api.CosType,oneof"` +} +type VolumeSpecUpdate_IoProfile struct { + IoProfile IoProfile `protobuf:"varint,7,opt,name=io_profile,json=ioProfile,enum=openstorage.api.IoProfile,oneof"` +} +type VolumeSpecUpdate_Dedupe struct { + Dedupe bool `protobuf:"varint,8,opt,name=dedupe,oneof"` +} +type VolumeSpecUpdate_SnapshotInterval struct { + SnapshotInterval uint32 `protobuf:"varint,9,opt,name=snapshot_interval,json=snapshotInterval,oneof"` +} +type VolumeSpecUpdate_Shared struct { + Shared bool `protobuf:"varint,11,opt,name=shared,oneof"` +} +type VolumeSpecUpdate_Passphrase struct { + Passphrase string `protobuf:"bytes,15,opt,name=passphrase,oneof"` +} +type VolumeSpecUpdate_SnapshotSchedule struct { + SnapshotSchedule string `protobuf:"bytes,16,opt,name=snapshot_schedule,json=snapshotSchedule,oneof"` +} +type VolumeSpecUpdate_Scale struct { + Scale uint32 `protobuf:"varint,17,opt,name=scale,oneof"` +} +type VolumeSpecUpdate_Sticky struct { + Sticky bool `protobuf:"varint,18,opt,name=sticky,oneof"` +} +type VolumeSpecUpdate_Group struct { + Group *Group `protobuf:"bytes,19,opt,name=group,oneof"` +} +type VolumeSpecUpdate_Journal struct { + Journal bool `protobuf:"varint,23,opt,name=journal,oneof"` +} +type VolumeSpecUpdate_Sharedv4 struct { + Sharedv4 bool `protobuf:"varint,24,opt,name=sharedv4,oneof"` +} +type VolumeSpecUpdate_QueueDepth struct { + QueueDepth uint32 `protobuf:"varint,25,opt,name=queue_depth,json=queueDepth,oneof"` +} +type VolumeSpecUpdate_Nodiscard struct { + Nodiscard bool `protobuf:"varint,27,opt,name=nodiscard,oneof"` +} +type VolumeSpecUpdate_ExportSpec struct { + ExportSpec *ExportSpec `protobuf:"bytes,29,opt,name=export_spec,json=exportSpec,oneof"` +} +type VolumeSpecUpdate_Fastpath struct { + Fastpath bool `protobuf:"varint,30,opt,name=fastpath,oneof"` } +type VolumeSpecUpdate_Xattr struct { + Xattr Xattr_Value `protobuf:"varint,31,opt,name=xattr,enum=openstorage.api.Xattr_Value,oneof"` +} +type VolumeSpecUpdate_ScanPolicy struct { + ScanPolicy *ScanPolicy `protobuf:"bytes,32,opt,name=scan_policy,json=scanPolicy,oneof"` +} +type VolumeSpecUpdate_MountOptSpec struct { + MountOptSpec *MountOptions `protobuf:"bytes,33,opt,name=mount_opt_spec,json=mountOptSpec,oneof"` +} +type VolumeSpecUpdate_Sharedv4MountOptSpec struct { + Sharedv4MountOptSpec *MountOptions `protobuf:"bytes,34,opt,name=sharedv4_mount_opt_spec,json=sharedv4MountOptSpec,oneof"` +} +type VolumeSpecUpdate_ProxyWrite struct { + ProxyWrite bool `protobuf:"varint,35,opt,name=proxy_write,json=proxyWrite,oneof"` +} +type VolumeSpecUpdate_ProxySpec struct { + ProxySpec *ProxySpec `protobuf:"bytes,36,opt,name=proxy_spec,json=proxySpec,oneof"` +} +type VolumeSpecUpdate_Sharedv4ServiceSpec struct { + Sharedv4ServiceSpec *Sharedv4ServiceSpec `protobuf:"bytes,37,opt,name=sharedv4_service_spec,json=sharedv4ServiceSpec,oneof"` +} +type VolumeSpecUpdate_Sharedv4Spec struct { + Sharedv4Spec *Sharedv4Spec `protobuf:"bytes,38,opt,name=sharedv4_spec,json=sharedv4Spec,oneof"` +} +type VolumeSpecUpdate_AutoFstrim struct { + AutoFstrim bool `protobuf:"varint,39,opt,name=auto_fstrim,json=autoFstrim,oneof"` +} +type VolumeSpecUpdate_IoThrottle struct { + IoThrottle *IoThrottle `protobuf:"bytes,40,opt,name=io_throttle,json=ioThrottle,oneof"` +} +type VolumeSpecUpdate_NearSyncReplicationStrategy struct { + NearSyncReplicationStrategy NearSyncReplicationStrategy `protobuf:"varint,41,opt,name=near_sync_replication_strategy,json=nearSyncReplicationStrategy,enum=openstorage.api.NearSyncReplicationStrategy,oneof"` +} +type VolumeSpecUpdate_PureNfsEndpoint struct { + PureNfsEndpoint string `protobuf:"bytes,42,opt,name=pure_nfs_endpoint,json=pureNfsEndpoint,oneof"` +} + +func (*VolumeSpecUpdate_Size) isVolumeSpecUpdate_SizeOpt() {} +func (*VolumeSpecUpdate_HaLevel) isVolumeSpecUpdate_HaLevelOpt() {} +func (*VolumeSpecUpdate_Cos) isVolumeSpecUpdate_CosOpt() {} +func (*VolumeSpecUpdate_IoProfile) isVolumeSpecUpdate_IoProfileOpt() {} +func (*VolumeSpecUpdate_Dedupe) isVolumeSpecUpdate_DedupeOpt() {} +func (*VolumeSpecUpdate_SnapshotInterval) isVolumeSpecUpdate_SnapshotIntervalOpt() {} +func (*VolumeSpecUpdate_Shared) isVolumeSpecUpdate_SharedOpt() {} +func (*VolumeSpecUpdate_Passphrase) isVolumeSpecUpdate_PassphraseOpt() {} +func (*VolumeSpecUpdate_SnapshotSchedule) isVolumeSpecUpdate_SnapshotScheduleOpt() {} +func (*VolumeSpecUpdate_Scale) isVolumeSpecUpdate_ScaleOpt() {} +func (*VolumeSpecUpdate_Sticky) isVolumeSpecUpdate_StickyOpt() {} +func (*VolumeSpecUpdate_Group) isVolumeSpecUpdate_GroupOpt() {} +func (*VolumeSpecUpdate_Journal) isVolumeSpecUpdate_JournalOpt() {} +func (*VolumeSpecUpdate_Sharedv4) isVolumeSpecUpdate_Sharedv4Opt() {} +func (*VolumeSpecUpdate_QueueDepth) isVolumeSpecUpdate_QueueDepthOpt() {} +func (*VolumeSpecUpdate_Nodiscard) isVolumeSpecUpdate_NodiscardOpt() {} +func (*VolumeSpecUpdate_ExportSpec) isVolumeSpecUpdate_ExportSpecOpt() {} +func (*VolumeSpecUpdate_Fastpath) isVolumeSpecUpdate_FastpathOpt() {} +func (*VolumeSpecUpdate_Xattr) isVolumeSpecUpdate_XattrOpt() {} +func (*VolumeSpecUpdate_ScanPolicy) isVolumeSpecUpdate_ScanPolicyOpt() {} +func (*VolumeSpecUpdate_MountOptSpec) isVolumeSpecUpdate_MountOpt() {} +func (*VolumeSpecUpdate_Sharedv4MountOptSpec) isVolumeSpecUpdate_Sharedv4MountOpt() {} +func (*VolumeSpecUpdate_ProxyWrite) isVolumeSpecUpdate_ProxyWriteOpt() {} +func (*VolumeSpecUpdate_ProxySpec) isVolumeSpecUpdate_ProxySpecOpt() {} +func (*VolumeSpecUpdate_Sharedv4ServiceSpec) isVolumeSpecUpdate_Sharedv4ServiceSpecOpt() {} +func (*VolumeSpecUpdate_Sharedv4Spec) isVolumeSpecUpdate_Sharedv4SpecOpt() {} +func (*VolumeSpecUpdate_AutoFstrim) isVolumeSpecUpdate_AutoFstrimOpt() {} +func (*VolumeSpecUpdate_IoThrottle) isVolumeSpecUpdate_IoThrottleOpt() {} +func (*VolumeSpecUpdate_NearSyncReplicationStrategy) isVolumeSpecUpdate_NearSyncReplicationStrategyOpt() { +} +func (*VolumeSpecUpdate_PureNfsEndpoint) isVolumeSpecUpdate_PureNfsEndpointOpt() {} -func (m *VolumeSpecUpdate) GetHaLevelOpt() isVolumeSpecUpdate_HaLevelOpt { +func (m *VolumeSpecUpdate) GetSizeOpt() isVolumeSpecUpdate_SizeOpt { if m != nil { - return m.HaLevelOpt + return m.SizeOpt } return nil } - -func (x *VolumeSpecUpdate) GetHaLevel() int64 { - if x, ok := x.GetHaLevelOpt().(*VolumeSpecUpdate_HaLevel); ok { - return x.HaLevel +func (m *VolumeSpecUpdate) GetHaLevelOpt() isVolumeSpecUpdate_HaLevelOpt { + if m != nil { + return m.HaLevelOpt } - return 0 + return nil } - func (m *VolumeSpecUpdate) GetCosOpt() isVolumeSpecUpdate_CosOpt { if m != nil { return m.CosOpt } return nil } - -func (x *VolumeSpecUpdate) GetCos() CosType { - if x, ok := x.GetCosOpt().(*VolumeSpecUpdate_Cos); ok { - return x.Cos - } - return CosType_NONE -} - func (m *VolumeSpecUpdate) GetIoProfileOpt() isVolumeSpecUpdate_IoProfileOpt { if m != nil { return m.IoProfileOpt } return nil } - -func (x *VolumeSpecUpdate) GetIoProfile() IoProfile { - if x, ok := x.GetIoProfileOpt().(*VolumeSpecUpdate_IoProfile); ok { - return x.IoProfile - } - return IoProfile_IO_PROFILE_SEQUENTIAL -} - func (m *VolumeSpecUpdate) GetDedupeOpt() isVolumeSpecUpdate_DedupeOpt { if m != nil { return m.DedupeOpt } return nil } - -func (x *VolumeSpecUpdate) GetDedupe() bool { - if x, ok := x.GetDedupeOpt().(*VolumeSpecUpdate_Dedupe); ok { - return x.Dedupe - } - return false -} - func (m *VolumeSpecUpdate) GetSnapshotIntervalOpt() isVolumeSpecUpdate_SnapshotIntervalOpt { if m != nil { return m.SnapshotIntervalOpt } return nil } - -func (x *VolumeSpecUpdate) GetSnapshotInterval() uint32 { - if x, ok := x.GetSnapshotIntervalOpt().(*VolumeSpecUpdate_SnapshotInterval); ok { - return x.SnapshotInterval - } - return 0 -} - func (m *VolumeSpecUpdate) GetSharedOpt() isVolumeSpecUpdate_SharedOpt { if m != nil { return m.SharedOpt } return nil } - -func (x *VolumeSpecUpdate) GetShared() bool { - if x, ok := x.GetSharedOpt().(*VolumeSpecUpdate_Shared); ok { - return x.Shared - } - return false -} - -func (x *VolumeSpecUpdate) GetReplicaSet() *ReplicaSet { - if x != nil { - return x.ReplicaSet - } - return nil -} - func (m *VolumeSpecUpdate) GetPassphraseOpt() isVolumeSpecUpdate_PassphraseOpt { if m != nil { return m.PassphraseOpt } return nil } - -func (x *VolumeSpecUpdate) GetPassphrase() string { - if x, ok := x.GetPassphraseOpt().(*VolumeSpecUpdate_Passphrase); ok { - return x.Passphrase - } - return "" -} - func (m *VolumeSpecUpdate) GetSnapshotScheduleOpt() isVolumeSpecUpdate_SnapshotScheduleOpt { if m != nil { return m.SnapshotScheduleOpt } return nil } - -func (x *VolumeSpecUpdate) GetSnapshotSchedule() string { - if x, ok := x.GetSnapshotScheduleOpt().(*VolumeSpecUpdate_SnapshotSchedule); ok { - return x.SnapshotSchedule - } - return "" -} - func (m *VolumeSpecUpdate) GetScaleOpt() isVolumeSpecUpdate_ScaleOpt { if m != nil { return m.ScaleOpt } return nil } - -func (x *VolumeSpecUpdate) GetScale() uint32 { - if x, ok := x.GetScaleOpt().(*VolumeSpecUpdate_Scale); ok { - return x.Scale - } - return 0 -} - func (m *VolumeSpecUpdate) GetStickyOpt() isVolumeSpecUpdate_StickyOpt { if m != nil { return m.StickyOpt } return nil } - -func (x *VolumeSpecUpdate) GetSticky() bool { - if x, ok := x.GetStickyOpt().(*VolumeSpecUpdate_Sticky); ok { - return x.Sticky - } - return false -} - func (m *VolumeSpecUpdate) GetGroupOpt() isVolumeSpecUpdate_GroupOpt { if m != nil { return m.GroupOpt } return nil } - -func (x *VolumeSpecUpdate) GetGroup() *Group { - if x, ok := x.GetGroupOpt().(*VolumeSpecUpdate_Group); ok { - return x.Group - } - return nil -} - func (m *VolumeSpecUpdate) GetJournalOpt() isVolumeSpecUpdate_JournalOpt { if m != nil { return m.JournalOpt } return nil } - -func (x *VolumeSpecUpdate) GetJournal() bool { - if x, ok := x.GetJournalOpt().(*VolumeSpecUpdate_Journal); ok { - return x.Journal - } - return false -} - func (m *VolumeSpecUpdate) GetSharedv4Opt() isVolumeSpecUpdate_Sharedv4Opt { if m != nil { return m.Sharedv4Opt } return nil } - -func (x *VolumeSpecUpdate) GetSharedv4() bool { - if x, ok := x.GetSharedv4Opt().(*VolumeSpecUpdate_Sharedv4); ok { - return x.Sharedv4 - } - return false -} - func (m *VolumeSpecUpdate) GetQueueDepthOpt() isVolumeSpecUpdate_QueueDepthOpt { if m != nil { return m.QueueDepthOpt } return nil } - -func (x *VolumeSpecUpdate) GetQueueDepth() uint32 { - if x, ok := x.GetQueueDepthOpt().(*VolumeSpecUpdate_QueueDepth); ok { - return x.QueueDepth +func (m *VolumeSpecUpdate) GetNodiscardOpt() isVolumeSpecUpdate_NodiscardOpt { + if m != nil { + return m.NodiscardOpt } - return 0 + return nil } - -func (x *VolumeSpecUpdate) GetOwnership() *Ownership { - if x != nil { - return x.Ownership +func (m *VolumeSpecUpdate) GetExportSpecOpt() isVolumeSpecUpdate_ExportSpecOpt { + if m != nil { + return m.ExportSpecOpt } return nil } - -func (m *VolumeSpecUpdate) GetNodiscardOpt() isVolumeSpecUpdate_NodiscardOpt { +func (m *VolumeSpecUpdate) GetFastpathOpt() isVolumeSpecUpdate_FastpathOpt { if m != nil { - return m.NodiscardOpt + return m.FastpathOpt } return nil } - -func (x *VolumeSpecUpdate) GetNodiscard() bool { - if x, ok := x.GetNodiscardOpt().(*VolumeSpecUpdate_Nodiscard); ok { - return x.Nodiscard - } - return false -} - -func (x *VolumeSpecUpdate) GetIoStrategy() *IoStrategy { - if x != nil { - return x.IoStrategy - } - return nil -} - -func (m *VolumeSpecUpdate) GetExportSpecOpt() isVolumeSpecUpdate_ExportSpecOpt { - if m != nil { - return m.ExportSpecOpt - } - return nil -} - -func (x *VolumeSpecUpdate) GetExportSpec() *ExportSpec { - if x, ok := x.GetExportSpecOpt().(*VolumeSpecUpdate_ExportSpec); ok { - return x.ExportSpec - } - return nil -} - -func (m *VolumeSpecUpdate) GetFastpathOpt() isVolumeSpecUpdate_FastpathOpt { - if m != nil { - return m.FastpathOpt - } - return nil -} - -func (x *VolumeSpecUpdate) GetFastpath() bool { - if x, ok := x.GetFastpathOpt().(*VolumeSpecUpdate_Fastpath); ok { - return x.Fastpath - } - return false -} - func (m *VolumeSpecUpdate) GetXattrOpt() isVolumeSpecUpdate_XattrOpt { if m != nil { return m.XattrOpt } return nil } - -func (x *VolumeSpecUpdate) GetXattr() Xattr_Value { - if x, ok := x.GetXattrOpt().(*VolumeSpecUpdate_Xattr); ok { - return x.Xattr - } - return Xattr_UNSPECIFIED -} - func (m *VolumeSpecUpdate) GetScanPolicyOpt() isVolumeSpecUpdate_ScanPolicyOpt { if m != nil { return m.ScanPolicyOpt } return nil } - -func (x *VolumeSpecUpdate) GetScanPolicy() *ScanPolicy { - if x, ok := x.GetScanPolicyOpt().(*VolumeSpecUpdate_ScanPolicy); ok { - return x.ScanPolicy - } - return nil -} - func (m *VolumeSpecUpdate) GetMountOpt() isVolumeSpecUpdate_MountOpt { if m != nil { return m.MountOpt } return nil } - -func (x *VolumeSpecUpdate) GetMountOptSpec() *MountOptions { - if x, ok := x.GetMountOpt().(*VolumeSpecUpdate_MountOptSpec); ok { - return x.MountOptSpec - } - return nil -} - func (m *VolumeSpecUpdate) GetSharedv4MountOpt() isVolumeSpecUpdate_Sharedv4MountOpt { if m != nil { return m.Sharedv4MountOpt } return nil } - -func (x *VolumeSpecUpdate) GetSharedv4MountOptSpec() *MountOptions { - if x, ok := x.GetSharedv4MountOpt().(*VolumeSpecUpdate_Sharedv4MountOptSpec); ok { - return x.Sharedv4MountOptSpec - } - return nil -} - func (m *VolumeSpecUpdate) GetProxyWriteOpt() isVolumeSpecUpdate_ProxyWriteOpt { if m != nil { return m.ProxyWriteOpt } return nil } - -func (x *VolumeSpecUpdate) GetProxyWrite() bool { - if x, ok := x.GetProxyWriteOpt().(*VolumeSpecUpdate_ProxyWrite); ok { - return x.ProxyWrite - } - return false -} - func (m *VolumeSpecUpdate) GetProxySpecOpt() isVolumeSpecUpdate_ProxySpecOpt { if m != nil { return m.ProxySpecOpt } return nil } - -func (x *VolumeSpecUpdate) GetProxySpec() *ProxySpec { - if x, ok := x.GetProxySpecOpt().(*VolumeSpecUpdate_ProxySpec); ok { - return x.ProxySpec - } - return nil -} - func (m *VolumeSpecUpdate) GetSharedv4ServiceSpecOpt() isVolumeSpecUpdate_Sharedv4ServiceSpecOpt { if m != nil { return m.Sharedv4ServiceSpecOpt } return nil } - -func (x *VolumeSpecUpdate) GetSharedv4ServiceSpec() *Sharedv4ServiceSpec { - if x, ok := x.GetSharedv4ServiceSpecOpt().(*VolumeSpecUpdate_Sharedv4ServiceSpec); ok { - return x.Sharedv4ServiceSpec - } - return nil -} - func (m *VolumeSpecUpdate) GetSharedv4SpecOpt() isVolumeSpecUpdate_Sharedv4SpecOpt { if m != nil { return m.Sharedv4SpecOpt } return nil } - -func (x *VolumeSpecUpdate) GetSharedv4Spec() *Sharedv4Spec { - if x, ok := x.GetSharedv4SpecOpt().(*VolumeSpecUpdate_Sharedv4Spec); ok { - return x.Sharedv4Spec - } - return nil -} - func (m *VolumeSpecUpdate) GetAutoFstrimOpt() isVolumeSpecUpdate_AutoFstrimOpt { if m != nil { return m.AutoFstrimOpt } return nil } - -func (x *VolumeSpecUpdate) GetAutoFstrim() bool { - if x, ok := x.GetAutoFstrimOpt().(*VolumeSpecUpdate_AutoFstrim); ok { - return x.AutoFstrim - } - return false -} - func (m *VolumeSpecUpdate) GetIoThrottleOpt() isVolumeSpecUpdate_IoThrottleOpt { if m != nil { return m.IoThrottleOpt } return nil } - -func (x *VolumeSpecUpdate) GetIoThrottle() *IoThrottle { - if x, ok := x.GetIoThrottleOpt().(*VolumeSpecUpdate_IoThrottle); ok { - return x.IoThrottle +func (m *VolumeSpecUpdate) GetNearSyncReplicationStrategyOpt() isVolumeSpecUpdate_NearSyncReplicationStrategyOpt { + if m != nil { + return m.NearSyncReplicationStrategyOpt } return nil } - -func (m *VolumeSpecUpdate) GetReadaheadOpt() isVolumeSpecUpdate_ReadaheadOpt { +func (m *VolumeSpecUpdate) GetPureNfsEndpointOpt() isVolumeSpecUpdate_PureNfsEndpointOpt { if m != nil { - return m.ReadaheadOpt + return m.PureNfsEndpointOpt } return nil } -func (x *VolumeSpecUpdate) GetReadahead() bool { - if x, ok := x.GetReadaheadOpt().(*VolumeSpecUpdate_Readahead); ok { - return x.Readahead +func (m *VolumeSpecUpdate) GetSize() uint64 { + if x, ok := m.GetSizeOpt().(*VolumeSpecUpdate_Size); ok { + return x.Size } - return false + return 0 } -func (m *VolumeSpecUpdate) GetWinshareOpt() isVolumeSpecUpdate_WinshareOpt { - if m != nil { - return m.WinshareOpt +func (m *VolumeSpecUpdate) GetHaLevel() int64 { + if x, ok := m.GetHaLevelOpt().(*VolumeSpecUpdate_HaLevel); ok { + return x.HaLevel } - return nil + return 0 } -func (x *VolumeSpecUpdate) GetWinshare() bool { - if x, ok := x.GetWinshareOpt().(*VolumeSpecUpdate_Winshare); ok { - return x.Winshare +func (m *VolumeSpecUpdate) GetCos() CosType { + if x, ok := m.GetCosOpt().(*VolumeSpecUpdate_Cos); ok { + return x.Cos } - return false + return CosType_NONE } -func (m *VolumeSpecUpdate) GetNearSyncReplicationStrategyOpt() isVolumeSpecUpdate_NearSyncReplicationStrategyOpt { - if m != nil { - return m.NearSyncReplicationStrategyOpt +func (m *VolumeSpecUpdate) GetIoProfile() IoProfile { + if x, ok := m.GetIoProfileOpt().(*VolumeSpecUpdate_IoProfile); ok { + return x.IoProfile } - return nil + return IoProfile_IO_PROFILE_SEQUENTIAL } -func (x *VolumeSpecUpdate) GetNearSyncReplicationStrategy() NearSyncReplicationStrategy { - if x, ok := x.GetNearSyncReplicationStrategyOpt().(*VolumeSpecUpdate_NearSyncReplicationStrategy); ok { - return x.NearSyncReplicationStrategy +func (m *VolumeSpecUpdate) GetDedupe() bool { + if x, ok := m.GetDedupeOpt().(*VolumeSpecUpdate_Dedupe); ok { + return x.Dedupe } - return NearSyncReplicationStrategy_NEAR_SYNC_STRATEGY_NONE + return false } -func (m *VolumeSpecUpdate) GetChecksummedOpt() isVolumeSpecUpdate_ChecksummedOpt { - if m != nil { - return m.ChecksummedOpt +func (m *VolumeSpecUpdate) GetSnapshotInterval() uint32 { + if x, ok := m.GetSnapshotIntervalOpt().(*VolumeSpecUpdate_SnapshotInterval); ok { + return x.SnapshotInterval } - return nil + return 0 } -func (x *VolumeSpecUpdate) GetChecksummed() bool { - if x, ok := x.GetChecksummedOpt().(*VolumeSpecUpdate_Checksummed); ok { - return x.Checksummed +func (m *VolumeSpecUpdate) GetShared() bool { + if x, ok := m.GetSharedOpt().(*VolumeSpecUpdate_Shared); ok { + return x.Shared } return false } -type isVolumeSpecUpdate_SizeOpt interface { - isVolumeSpecUpdate_SizeOpt() -} - -type VolumeSpecUpdate_Size struct { - Size uint64 `protobuf:"varint,2,opt,name=size,proto3,oneof"` -} - -func (*VolumeSpecUpdate_Size) isVolumeSpecUpdate_SizeOpt() {} - -type isVolumeSpecUpdate_HaLevelOpt interface { - isVolumeSpecUpdate_HaLevelOpt() +func (m *VolumeSpecUpdate) GetReplicaSet() *ReplicaSet { + if m != nil { + return m.ReplicaSet + } + return nil } -type VolumeSpecUpdate_HaLevel struct { - HaLevel int64 `protobuf:"varint,5,opt,name=ha_level,json=haLevel,proto3,oneof"` +func (m *VolumeSpecUpdate) GetPassphrase() string { + if x, ok := m.GetPassphraseOpt().(*VolumeSpecUpdate_Passphrase); ok { + return x.Passphrase + } + return "" } -func (*VolumeSpecUpdate_HaLevel) isVolumeSpecUpdate_HaLevelOpt() {} - -type isVolumeSpecUpdate_CosOpt interface { - isVolumeSpecUpdate_CosOpt() +func (m *VolumeSpecUpdate) GetSnapshotSchedule() string { + if x, ok := m.GetSnapshotScheduleOpt().(*VolumeSpecUpdate_SnapshotSchedule); ok { + return x.SnapshotSchedule + } + return "" } -type VolumeSpecUpdate_Cos struct { - Cos CosType `protobuf:"varint,6,opt,name=cos,proto3,enum=openstorage.api.CosType,oneof"` +func (m *VolumeSpecUpdate) GetScale() uint32 { + if x, ok := m.GetScaleOpt().(*VolumeSpecUpdate_Scale); ok { + return x.Scale + } + return 0 } -func (*VolumeSpecUpdate_Cos) isVolumeSpecUpdate_CosOpt() {} - -type isVolumeSpecUpdate_IoProfileOpt interface { - isVolumeSpecUpdate_IoProfileOpt() +func (m *VolumeSpecUpdate) GetSticky() bool { + if x, ok := m.GetStickyOpt().(*VolumeSpecUpdate_Sticky); ok { + return x.Sticky + } + return false } -type VolumeSpecUpdate_IoProfile struct { - IoProfile IoProfile `protobuf:"varint,7,opt,name=io_profile,json=ioProfile,proto3,enum=openstorage.api.IoProfile,oneof"` +func (m *VolumeSpecUpdate) GetGroup() *Group { + if x, ok := m.GetGroupOpt().(*VolumeSpecUpdate_Group); ok { + return x.Group + } + return nil } -func (*VolumeSpecUpdate_IoProfile) isVolumeSpecUpdate_IoProfileOpt() {} - -type isVolumeSpecUpdate_DedupeOpt interface { - isVolumeSpecUpdate_DedupeOpt() +func (m *VolumeSpecUpdate) GetJournal() bool { + if x, ok := m.GetJournalOpt().(*VolumeSpecUpdate_Journal); ok { + return x.Journal + } + return false } -type VolumeSpecUpdate_Dedupe struct { - Dedupe bool `protobuf:"varint,8,opt,name=dedupe,proto3,oneof"` +func (m *VolumeSpecUpdate) GetSharedv4() bool { + if x, ok := m.GetSharedv4Opt().(*VolumeSpecUpdate_Sharedv4); ok { + return x.Sharedv4 + } + return false } -func (*VolumeSpecUpdate_Dedupe) isVolumeSpecUpdate_DedupeOpt() {} - -type isVolumeSpecUpdate_SnapshotIntervalOpt interface { - isVolumeSpecUpdate_SnapshotIntervalOpt() +func (m *VolumeSpecUpdate) GetQueueDepth() uint32 { + if x, ok := m.GetQueueDepthOpt().(*VolumeSpecUpdate_QueueDepth); ok { + return x.QueueDepth + } + return 0 } -type VolumeSpecUpdate_SnapshotInterval struct { - SnapshotInterval uint32 `protobuf:"varint,9,opt,name=snapshot_interval,json=snapshotInterval,proto3,oneof"` +func (m *VolumeSpecUpdate) GetOwnership() *Ownership { + if m != nil { + return m.Ownership + } + return nil } -func (*VolumeSpecUpdate_SnapshotInterval) isVolumeSpecUpdate_SnapshotIntervalOpt() {} - -type isVolumeSpecUpdate_SharedOpt interface { - isVolumeSpecUpdate_SharedOpt() +func (m *VolumeSpecUpdate) GetNodiscard() bool { + if x, ok := m.GetNodiscardOpt().(*VolumeSpecUpdate_Nodiscard); ok { + return x.Nodiscard + } + return false } -type VolumeSpecUpdate_Shared struct { - Shared bool `protobuf:"varint,11,opt,name=shared,proto3,oneof"` +func (m *VolumeSpecUpdate) GetIoStrategy() *IoStrategy { + if m != nil { + return m.IoStrategy + } + return nil } -func (*VolumeSpecUpdate_Shared) isVolumeSpecUpdate_SharedOpt() {} - -type isVolumeSpecUpdate_PassphraseOpt interface { - isVolumeSpecUpdate_PassphraseOpt() +func (m *VolumeSpecUpdate) GetExportSpec() *ExportSpec { + if x, ok := m.GetExportSpecOpt().(*VolumeSpecUpdate_ExportSpec); ok { + return x.ExportSpec + } + return nil } -type VolumeSpecUpdate_Passphrase struct { - Passphrase string `protobuf:"bytes,15,opt,name=passphrase,proto3,oneof"` +func (m *VolumeSpecUpdate) GetFastpath() bool { + if x, ok := m.GetFastpathOpt().(*VolumeSpecUpdate_Fastpath); ok { + return x.Fastpath + } + return false } -func (*VolumeSpecUpdate_Passphrase) isVolumeSpecUpdate_PassphraseOpt() {} - -type isVolumeSpecUpdate_SnapshotScheduleOpt interface { - isVolumeSpecUpdate_SnapshotScheduleOpt() +func (m *VolumeSpecUpdate) GetXattr() Xattr_Value { + if x, ok := m.GetXattrOpt().(*VolumeSpecUpdate_Xattr); ok { + return x.Xattr + } + return Xattr_UNSPECIFIED } -type VolumeSpecUpdate_SnapshotSchedule struct { - SnapshotSchedule string `protobuf:"bytes,16,opt,name=snapshot_schedule,json=snapshotSchedule,proto3,oneof"` +func (m *VolumeSpecUpdate) GetScanPolicy() *ScanPolicy { + if x, ok := m.GetScanPolicyOpt().(*VolumeSpecUpdate_ScanPolicy); ok { + return x.ScanPolicy + } + return nil } -func (*VolumeSpecUpdate_SnapshotSchedule) isVolumeSpecUpdate_SnapshotScheduleOpt() {} - -type isVolumeSpecUpdate_ScaleOpt interface { - isVolumeSpecUpdate_ScaleOpt() +func (m *VolumeSpecUpdate) GetMountOptSpec() *MountOptions { + if x, ok := m.GetMountOpt().(*VolumeSpecUpdate_MountOptSpec); ok { + return x.MountOptSpec + } + return nil } -type VolumeSpecUpdate_Scale struct { - Scale uint32 `protobuf:"varint,17,opt,name=scale,proto3,oneof"` +func (m *VolumeSpecUpdate) GetSharedv4MountOptSpec() *MountOptions { + if x, ok := m.GetSharedv4MountOpt().(*VolumeSpecUpdate_Sharedv4MountOptSpec); ok { + return x.Sharedv4MountOptSpec + } + return nil } -func (*VolumeSpecUpdate_Scale) isVolumeSpecUpdate_ScaleOpt() {} - -type isVolumeSpecUpdate_StickyOpt interface { - isVolumeSpecUpdate_StickyOpt() +func (m *VolumeSpecUpdate) GetProxyWrite() bool { + if x, ok := m.GetProxyWriteOpt().(*VolumeSpecUpdate_ProxyWrite); ok { + return x.ProxyWrite + } + return false } -type VolumeSpecUpdate_Sticky struct { - Sticky bool `protobuf:"varint,18,opt,name=sticky,proto3,oneof"` +func (m *VolumeSpecUpdate) GetProxySpec() *ProxySpec { + if x, ok := m.GetProxySpecOpt().(*VolumeSpecUpdate_ProxySpec); ok { + return x.ProxySpec + } + return nil } -func (*VolumeSpecUpdate_Sticky) isVolumeSpecUpdate_StickyOpt() {} - -type isVolumeSpecUpdate_GroupOpt interface { - isVolumeSpecUpdate_GroupOpt() +func (m *VolumeSpecUpdate) GetSharedv4ServiceSpec() *Sharedv4ServiceSpec { + if x, ok := m.GetSharedv4ServiceSpecOpt().(*VolumeSpecUpdate_Sharedv4ServiceSpec); ok { + return x.Sharedv4ServiceSpec + } + return nil } -type VolumeSpecUpdate_Group struct { - Group *Group `protobuf:"bytes,19,opt,name=group,proto3,oneof"` +func (m *VolumeSpecUpdate) GetSharedv4Spec() *Sharedv4Spec { + if x, ok := m.GetSharedv4SpecOpt().(*VolumeSpecUpdate_Sharedv4Spec); ok { + return x.Sharedv4Spec + } + return nil } -func (*VolumeSpecUpdate_Group) isVolumeSpecUpdate_GroupOpt() {} - -type isVolumeSpecUpdate_JournalOpt interface { - isVolumeSpecUpdate_JournalOpt() +func (m *VolumeSpecUpdate) GetAutoFstrim() bool { + if x, ok := m.GetAutoFstrimOpt().(*VolumeSpecUpdate_AutoFstrim); ok { + return x.AutoFstrim + } + return false } -type VolumeSpecUpdate_Journal struct { - Journal bool `protobuf:"varint,23,opt,name=journal,proto3,oneof"` +func (m *VolumeSpecUpdate) GetIoThrottle() *IoThrottle { + if x, ok := m.GetIoThrottleOpt().(*VolumeSpecUpdate_IoThrottle); ok { + return x.IoThrottle + } + return nil } -func (*VolumeSpecUpdate_Journal) isVolumeSpecUpdate_JournalOpt() {} - -type isVolumeSpecUpdate_Sharedv4Opt interface { - isVolumeSpecUpdate_Sharedv4Opt() +func (m *VolumeSpecUpdate) GetNearSyncReplicationStrategy() NearSyncReplicationStrategy { + if x, ok := m.GetNearSyncReplicationStrategyOpt().(*VolumeSpecUpdate_NearSyncReplicationStrategy); ok { + return x.NearSyncReplicationStrategy + } + return NearSyncReplicationStrategy_NEAR_SYNC_STRATEGY_NONE } -type VolumeSpecUpdate_Sharedv4 struct { - Sharedv4 bool `protobuf:"varint,24,opt,name=sharedv4,proto3,oneof"` +func (m *VolumeSpecUpdate) GetPureNfsEndpoint() string { + if x, ok := m.GetPureNfsEndpointOpt().(*VolumeSpecUpdate_PureNfsEndpoint); ok { + return x.PureNfsEndpoint + } + return "" } -func (*VolumeSpecUpdate_Sharedv4) isVolumeSpecUpdate_Sharedv4Opt() {} - -type isVolumeSpecUpdate_QueueDepthOpt interface { - isVolumeSpecUpdate_QueueDepthOpt() -} - -type VolumeSpecUpdate_QueueDepth struct { - QueueDepth uint32 `protobuf:"varint,25,opt,name=queue_depth,json=queueDepth,proto3,oneof"` -} - -func (*VolumeSpecUpdate_QueueDepth) isVolumeSpecUpdate_QueueDepthOpt() {} - -type isVolumeSpecUpdate_NodiscardOpt interface { - isVolumeSpecUpdate_NodiscardOpt() -} - -type VolumeSpecUpdate_Nodiscard struct { - Nodiscard bool `protobuf:"varint,27,opt,name=nodiscard,proto3,oneof"` -} - -func (*VolumeSpecUpdate_Nodiscard) isVolumeSpecUpdate_NodiscardOpt() {} - -type isVolumeSpecUpdate_ExportSpecOpt interface { - isVolumeSpecUpdate_ExportSpecOpt() -} - -type VolumeSpecUpdate_ExportSpec struct { - ExportSpec *ExportSpec `protobuf:"bytes,29,opt,name=export_spec,json=exportSpec,proto3,oneof"` -} - -func (*VolumeSpecUpdate_ExportSpec) isVolumeSpecUpdate_ExportSpecOpt() {} - -type isVolumeSpecUpdate_FastpathOpt interface { - isVolumeSpecUpdate_FastpathOpt() -} - -type VolumeSpecUpdate_Fastpath struct { - Fastpath bool `protobuf:"varint,30,opt,name=fastpath,proto3,oneof"` -} - -func (*VolumeSpecUpdate_Fastpath) isVolumeSpecUpdate_FastpathOpt() {} - -type isVolumeSpecUpdate_XattrOpt interface { - isVolumeSpecUpdate_XattrOpt() -} - -type VolumeSpecUpdate_Xattr struct { - Xattr Xattr_Value `protobuf:"varint,31,opt,name=xattr,proto3,enum=openstorage.api.Xattr_Value,oneof"` -} - -func (*VolumeSpecUpdate_Xattr) isVolumeSpecUpdate_XattrOpt() {} - -type isVolumeSpecUpdate_ScanPolicyOpt interface { - isVolumeSpecUpdate_ScanPolicyOpt() -} - -type VolumeSpecUpdate_ScanPolicy struct { - ScanPolicy *ScanPolicy `protobuf:"bytes,32,opt,name=scan_policy,json=scanPolicy,proto3,oneof"` -} - -func (*VolumeSpecUpdate_ScanPolicy) isVolumeSpecUpdate_ScanPolicyOpt() {} - -type isVolumeSpecUpdate_MountOpt interface { - isVolumeSpecUpdate_MountOpt() -} - -type VolumeSpecUpdate_MountOptSpec struct { - MountOptSpec *MountOptions `protobuf:"bytes,33,opt,name=mount_opt_spec,json=mountOptSpec,proto3,oneof"` -} - -func (*VolumeSpecUpdate_MountOptSpec) isVolumeSpecUpdate_MountOpt() {} - -type isVolumeSpecUpdate_Sharedv4MountOpt interface { - isVolumeSpecUpdate_Sharedv4MountOpt() -} - -type VolumeSpecUpdate_Sharedv4MountOptSpec struct { - Sharedv4MountOptSpec *MountOptions `protobuf:"bytes,34,opt,name=sharedv4_mount_opt_spec,json=sharedv4MountOptSpec,proto3,oneof"` -} - -func (*VolumeSpecUpdate_Sharedv4MountOptSpec) isVolumeSpecUpdate_Sharedv4MountOpt() {} - -type isVolumeSpecUpdate_ProxyWriteOpt interface { - isVolumeSpecUpdate_ProxyWriteOpt() -} - -type VolumeSpecUpdate_ProxyWrite struct { - ProxyWrite bool `protobuf:"varint,35,opt,name=proxy_write,json=proxyWrite,proto3,oneof"` -} - -func (*VolumeSpecUpdate_ProxyWrite) isVolumeSpecUpdate_ProxyWriteOpt() {} - -type isVolumeSpecUpdate_ProxySpecOpt interface { - isVolumeSpecUpdate_ProxySpecOpt() -} - -type VolumeSpecUpdate_ProxySpec struct { - ProxySpec *ProxySpec `protobuf:"bytes,36,opt,name=proxy_spec,json=proxySpec,proto3,oneof"` -} - -func (*VolumeSpecUpdate_ProxySpec) isVolumeSpecUpdate_ProxySpecOpt() {} - -type isVolumeSpecUpdate_Sharedv4ServiceSpecOpt interface { - isVolumeSpecUpdate_Sharedv4ServiceSpecOpt() -} - -type VolumeSpecUpdate_Sharedv4ServiceSpec struct { - Sharedv4ServiceSpec *Sharedv4ServiceSpec `protobuf:"bytes,37,opt,name=sharedv4_service_spec,json=sharedv4ServiceSpec,proto3,oneof"` -} - -func (*VolumeSpecUpdate_Sharedv4ServiceSpec) isVolumeSpecUpdate_Sharedv4ServiceSpecOpt() {} - -type isVolumeSpecUpdate_Sharedv4SpecOpt interface { - isVolumeSpecUpdate_Sharedv4SpecOpt() -} - -type VolumeSpecUpdate_Sharedv4Spec struct { - Sharedv4Spec *Sharedv4Spec `protobuf:"bytes,38,opt,name=sharedv4_spec,json=sharedv4Spec,proto3,oneof"` -} - -func (*VolumeSpecUpdate_Sharedv4Spec) isVolumeSpecUpdate_Sharedv4SpecOpt() {} - -type isVolumeSpecUpdate_AutoFstrimOpt interface { - isVolumeSpecUpdate_AutoFstrimOpt() -} - -type VolumeSpecUpdate_AutoFstrim struct { - AutoFstrim bool `protobuf:"varint,39,opt,name=auto_fstrim,json=autoFstrim,proto3,oneof"` -} - -func (*VolumeSpecUpdate_AutoFstrim) isVolumeSpecUpdate_AutoFstrimOpt() {} - -type isVolumeSpecUpdate_IoThrottleOpt interface { - isVolumeSpecUpdate_IoThrottleOpt() -} - -type VolumeSpecUpdate_IoThrottle struct { - IoThrottle *IoThrottle `protobuf:"bytes,40,opt,name=io_throttle,json=ioThrottle,proto3,oneof"` -} - -func (*VolumeSpecUpdate_IoThrottle) isVolumeSpecUpdate_IoThrottleOpt() {} - -type isVolumeSpecUpdate_ReadaheadOpt interface { - isVolumeSpecUpdate_ReadaheadOpt() -} - -type VolumeSpecUpdate_Readahead struct { - Readahead bool `protobuf:"varint,41,opt,name=readahead,proto3,oneof"` -} - -func (*VolumeSpecUpdate_Readahead) isVolumeSpecUpdate_ReadaheadOpt() {} - -type isVolumeSpecUpdate_WinshareOpt interface { - isVolumeSpecUpdate_WinshareOpt() -} - -type VolumeSpecUpdate_Winshare struct { - Winshare bool `protobuf:"varint,42,opt,name=winshare,proto3,oneof"` -} - -func (*VolumeSpecUpdate_Winshare) isVolumeSpecUpdate_WinshareOpt() {} - -type isVolumeSpecUpdate_NearSyncReplicationStrategyOpt interface { - isVolumeSpecUpdate_NearSyncReplicationStrategyOpt() -} - -type VolumeSpecUpdate_NearSyncReplicationStrategy struct { - NearSyncReplicationStrategy NearSyncReplicationStrategy `protobuf:"varint,43,opt,name=near_sync_replication_strategy,json=nearSyncReplicationStrategy,proto3,enum=openstorage.api.NearSyncReplicationStrategy,oneof"` -} - -func (*VolumeSpecUpdate_NearSyncReplicationStrategy) isVolumeSpecUpdate_NearSyncReplicationStrategyOpt() { -} - -type isVolumeSpecUpdate_ChecksummedOpt interface { - isVolumeSpecUpdate_ChecksummedOpt() -} - -type VolumeSpecUpdate_Checksummed struct { - Checksummed bool `protobuf:"varint,44,opt,name=checksummed,proto3,oneof"` +// XXX_OneofFuncs is for the internal use of the proto package. +func (*VolumeSpecUpdate) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _VolumeSpecUpdate_OneofMarshaler, _VolumeSpecUpdate_OneofUnmarshaler, _VolumeSpecUpdate_OneofSizer, []interface{}{ + (*VolumeSpecUpdate_Size)(nil), + (*VolumeSpecUpdate_HaLevel)(nil), + (*VolumeSpecUpdate_Cos)(nil), + (*VolumeSpecUpdate_IoProfile)(nil), + (*VolumeSpecUpdate_Dedupe)(nil), + (*VolumeSpecUpdate_SnapshotInterval)(nil), + (*VolumeSpecUpdate_Shared)(nil), + (*VolumeSpecUpdate_Passphrase)(nil), + (*VolumeSpecUpdate_SnapshotSchedule)(nil), + (*VolumeSpecUpdate_Scale)(nil), + (*VolumeSpecUpdate_Sticky)(nil), + (*VolumeSpecUpdate_Group)(nil), + (*VolumeSpecUpdate_Journal)(nil), + (*VolumeSpecUpdate_Sharedv4)(nil), + (*VolumeSpecUpdate_QueueDepth)(nil), + (*VolumeSpecUpdate_Nodiscard)(nil), + (*VolumeSpecUpdate_ExportSpec)(nil), + (*VolumeSpecUpdate_Fastpath)(nil), + (*VolumeSpecUpdate_Xattr)(nil), + (*VolumeSpecUpdate_ScanPolicy)(nil), + (*VolumeSpecUpdate_MountOptSpec)(nil), + (*VolumeSpecUpdate_Sharedv4MountOptSpec)(nil), + (*VolumeSpecUpdate_ProxyWrite)(nil), + (*VolumeSpecUpdate_ProxySpec)(nil), + (*VolumeSpecUpdate_Sharedv4ServiceSpec)(nil), + (*VolumeSpecUpdate_Sharedv4Spec)(nil), + (*VolumeSpecUpdate_AutoFstrim)(nil), + (*VolumeSpecUpdate_IoThrottle)(nil), + (*VolumeSpecUpdate_NearSyncReplicationStrategy)(nil), + (*VolumeSpecUpdate_PureNfsEndpoint)(nil), + } +} + +func _VolumeSpecUpdate_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*VolumeSpecUpdate) + // size_opt + switch x := m.SizeOpt.(type) { + case *VolumeSpecUpdate_Size: + b.EncodeVarint(2<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.Size)) + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.SizeOpt has unexpected type %T", x) + } + // ha_level_opt + switch x := m.HaLevelOpt.(type) { + case *VolumeSpecUpdate_HaLevel: + b.EncodeVarint(5<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.HaLevel)) + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.HaLevelOpt has unexpected type %T", x) + } + // cos_opt + switch x := m.CosOpt.(type) { + case *VolumeSpecUpdate_Cos: + b.EncodeVarint(6<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.Cos)) + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.CosOpt has unexpected type %T", x) + } + // io_profile_opt + switch x := m.IoProfileOpt.(type) { + case *VolumeSpecUpdate_IoProfile: + b.EncodeVarint(7<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.IoProfile)) + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.IoProfileOpt has unexpected type %T", x) + } + // dedupe_opt + switch x := m.DedupeOpt.(type) { + case *VolumeSpecUpdate_Dedupe: + t := uint64(0) + if x.Dedupe { + t = 1 + } + b.EncodeVarint(8<<3 | proto.WireVarint) + b.EncodeVarint(t) + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.DedupeOpt has unexpected type %T", x) + } + // snapshot_interval_opt + switch x := m.SnapshotIntervalOpt.(type) { + case *VolumeSpecUpdate_SnapshotInterval: + b.EncodeVarint(9<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.SnapshotInterval)) + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.SnapshotIntervalOpt has unexpected type %T", x) + } + // shared_opt + switch x := m.SharedOpt.(type) { + case *VolumeSpecUpdate_Shared: + t := uint64(0) + if x.Shared { + t = 1 + } + b.EncodeVarint(11<<3 | proto.WireVarint) + b.EncodeVarint(t) + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.SharedOpt has unexpected type %T", x) + } + // passphrase_opt + switch x := m.PassphraseOpt.(type) { + case *VolumeSpecUpdate_Passphrase: + b.EncodeVarint(15<<3 | proto.WireBytes) + b.EncodeStringBytes(x.Passphrase) + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.PassphraseOpt has unexpected type %T", x) + } + // snapshot_schedule_opt + switch x := m.SnapshotScheduleOpt.(type) { + case *VolumeSpecUpdate_SnapshotSchedule: + b.EncodeVarint(16<<3 | proto.WireBytes) + b.EncodeStringBytes(x.SnapshotSchedule) + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.SnapshotScheduleOpt has unexpected type %T", x) + } + // scale_opt + switch x := m.ScaleOpt.(type) { + case *VolumeSpecUpdate_Scale: + b.EncodeVarint(17<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.Scale)) + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.ScaleOpt has unexpected type %T", x) + } + // sticky_opt + switch x := m.StickyOpt.(type) { + case *VolumeSpecUpdate_Sticky: + t := uint64(0) + if x.Sticky { + t = 1 + } + b.EncodeVarint(18<<3 | proto.WireVarint) + b.EncodeVarint(t) + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.StickyOpt has unexpected type %T", x) + } + // group_opt + switch x := m.GroupOpt.(type) { + case *VolumeSpecUpdate_Group: + b.EncodeVarint(19<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Group); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.GroupOpt has unexpected type %T", x) + } + // journal_opt + switch x := m.JournalOpt.(type) { + case *VolumeSpecUpdate_Journal: + t := uint64(0) + if x.Journal { + t = 1 + } + b.EncodeVarint(23<<3 | proto.WireVarint) + b.EncodeVarint(t) + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.JournalOpt has unexpected type %T", x) + } + // sharedv4_opt + switch x := m.Sharedv4Opt.(type) { + case *VolumeSpecUpdate_Sharedv4: + t := uint64(0) + if x.Sharedv4 { + t = 1 + } + b.EncodeVarint(24<<3 | proto.WireVarint) + b.EncodeVarint(t) + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.Sharedv4Opt has unexpected type %T", x) + } + // queue_depth_opt + switch x := m.QueueDepthOpt.(type) { + case *VolumeSpecUpdate_QueueDepth: + b.EncodeVarint(25<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.QueueDepth)) + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.QueueDepthOpt has unexpected type %T", x) + } + // nodiscard_opt + switch x := m.NodiscardOpt.(type) { + case *VolumeSpecUpdate_Nodiscard: + t := uint64(0) + if x.Nodiscard { + t = 1 + } + b.EncodeVarint(27<<3 | proto.WireVarint) + b.EncodeVarint(t) + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.NodiscardOpt has unexpected type %T", x) + } + // export_spec_opt + switch x := m.ExportSpecOpt.(type) { + case *VolumeSpecUpdate_ExportSpec: + b.EncodeVarint(29<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.ExportSpec); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.ExportSpecOpt has unexpected type %T", x) + } + // fastpath_opt + switch x := m.FastpathOpt.(type) { + case *VolumeSpecUpdate_Fastpath: + t := uint64(0) + if x.Fastpath { + t = 1 + } + b.EncodeVarint(30<<3 | proto.WireVarint) + b.EncodeVarint(t) + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.FastpathOpt has unexpected type %T", x) + } + // xattr_opt + switch x := m.XattrOpt.(type) { + case *VolumeSpecUpdate_Xattr: + b.EncodeVarint(31<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.Xattr)) + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.XattrOpt has unexpected type %T", x) + } + // scan_policy_opt + switch x := m.ScanPolicyOpt.(type) { + case *VolumeSpecUpdate_ScanPolicy: + b.EncodeVarint(32<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.ScanPolicy); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.ScanPolicyOpt has unexpected type %T", x) + } + // mount_opt + switch x := m.MountOpt.(type) { + case *VolumeSpecUpdate_MountOptSpec: + b.EncodeVarint(33<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.MountOptSpec); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.MountOpt has unexpected type %T", x) + } + // sharedv4_mount_opt + switch x := m.Sharedv4MountOpt.(type) { + case *VolumeSpecUpdate_Sharedv4MountOptSpec: + b.EncodeVarint(34<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Sharedv4MountOptSpec); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.Sharedv4MountOpt has unexpected type %T", x) + } + // proxy_write_opt + switch x := m.ProxyWriteOpt.(type) { + case *VolumeSpecUpdate_ProxyWrite: + t := uint64(0) + if x.ProxyWrite { + t = 1 + } + b.EncodeVarint(35<<3 | proto.WireVarint) + b.EncodeVarint(t) + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.ProxyWriteOpt has unexpected type %T", x) + } + // proxy_spec_opt + switch x := m.ProxySpecOpt.(type) { + case *VolumeSpecUpdate_ProxySpec: + b.EncodeVarint(36<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.ProxySpec); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.ProxySpecOpt has unexpected type %T", x) + } + // sharedv4_service_spec_opt + switch x := m.Sharedv4ServiceSpecOpt.(type) { + case *VolumeSpecUpdate_Sharedv4ServiceSpec: + b.EncodeVarint(37<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Sharedv4ServiceSpec); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.Sharedv4ServiceSpecOpt has unexpected type %T", x) + } + // sharedv4_spec_opt + switch x := m.Sharedv4SpecOpt.(type) { + case *VolumeSpecUpdate_Sharedv4Spec: + b.EncodeVarint(38<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Sharedv4Spec); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.Sharedv4SpecOpt has unexpected type %T", x) + } + // auto_fstrim_opt + switch x := m.AutoFstrimOpt.(type) { + case *VolumeSpecUpdate_AutoFstrim: + t := uint64(0) + if x.AutoFstrim { + t = 1 + } + b.EncodeVarint(39<<3 | proto.WireVarint) + b.EncodeVarint(t) + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.AutoFstrimOpt has unexpected type %T", x) + } + // io_throttle_opt + switch x := m.IoThrottleOpt.(type) { + case *VolumeSpecUpdate_IoThrottle: + b.EncodeVarint(40<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.IoThrottle); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.IoThrottleOpt has unexpected type %T", x) + } + // near_sync_replication_strategy_opt + switch x := m.NearSyncReplicationStrategyOpt.(type) { + case *VolumeSpecUpdate_NearSyncReplicationStrategy: + b.EncodeVarint(41<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.NearSyncReplicationStrategy)) + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.NearSyncReplicationStrategyOpt has unexpected type %T", x) + } + // pure_nfs_endpoint_opt + switch x := m.PureNfsEndpointOpt.(type) { + case *VolumeSpecUpdate_PureNfsEndpoint: + b.EncodeVarint(42<<3 | proto.WireBytes) + b.EncodeStringBytes(x.PureNfsEndpoint) + case nil: + default: + return fmt.Errorf("VolumeSpecUpdate.PureNfsEndpointOpt has unexpected type %T", x) + } + return nil +} + +func _VolumeSpecUpdate_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*VolumeSpecUpdate) + switch tag { + case 2: // size_opt.size + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.SizeOpt = &VolumeSpecUpdate_Size{x} + return true, err + case 5: // ha_level_opt.ha_level + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.HaLevelOpt = &VolumeSpecUpdate_HaLevel{int64(x)} + return true, err + case 6: // cos_opt.cos + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.CosOpt = &VolumeSpecUpdate_Cos{CosType(x)} + return true, err + case 7: // io_profile_opt.io_profile + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.IoProfileOpt = &VolumeSpecUpdate_IoProfile{IoProfile(x)} + return true, err + case 8: // dedupe_opt.dedupe + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.DedupeOpt = &VolumeSpecUpdate_Dedupe{x != 0} + return true, err + case 9: // snapshot_interval_opt.snapshot_interval + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.SnapshotIntervalOpt = &VolumeSpecUpdate_SnapshotInterval{uint32(x)} + return true, err + case 11: // shared_opt.shared + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.SharedOpt = &VolumeSpecUpdate_Shared{x != 0} + return true, err + case 15: // passphrase_opt.passphrase + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeStringBytes() + m.PassphraseOpt = &VolumeSpecUpdate_Passphrase{x} + return true, err + case 16: // snapshot_schedule_opt.snapshot_schedule + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeStringBytes() + m.SnapshotScheduleOpt = &VolumeSpecUpdate_SnapshotSchedule{x} + return true, err + case 17: // scale_opt.scale + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.ScaleOpt = &VolumeSpecUpdate_Scale{uint32(x)} + return true, err + case 18: // sticky_opt.sticky + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.StickyOpt = &VolumeSpecUpdate_Sticky{x != 0} + return true, err + case 19: // group_opt.group + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Group) + err := b.DecodeMessage(msg) + m.GroupOpt = &VolumeSpecUpdate_Group{msg} + return true, err + case 23: // journal_opt.journal + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.JournalOpt = &VolumeSpecUpdate_Journal{x != 0} + return true, err + case 24: // sharedv4_opt.sharedv4 + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.Sharedv4Opt = &VolumeSpecUpdate_Sharedv4{x != 0} + return true, err + case 25: // queue_depth_opt.queue_depth + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.QueueDepthOpt = &VolumeSpecUpdate_QueueDepth{uint32(x)} + return true, err + case 27: // nodiscard_opt.nodiscard + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.NodiscardOpt = &VolumeSpecUpdate_Nodiscard{x != 0} + return true, err + case 29: // export_spec_opt.export_spec + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(ExportSpec) + err := b.DecodeMessage(msg) + m.ExportSpecOpt = &VolumeSpecUpdate_ExportSpec{msg} + return true, err + case 30: // fastpath_opt.fastpath + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.FastpathOpt = &VolumeSpecUpdate_Fastpath{x != 0} + return true, err + case 31: // xattr_opt.xattr + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.XattrOpt = &VolumeSpecUpdate_Xattr{Xattr_Value(x)} + return true, err + case 32: // scan_policy_opt.scan_policy + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(ScanPolicy) + err := b.DecodeMessage(msg) + m.ScanPolicyOpt = &VolumeSpecUpdate_ScanPolicy{msg} + return true, err + case 33: // mount_opt.mount_opt_spec + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(MountOptions) + err := b.DecodeMessage(msg) + m.MountOpt = &VolumeSpecUpdate_MountOptSpec{msg} + return true, err + case 34: // sharedv4_mount_opt.sharedv4_mount_opt_spec + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(MountOptions) + err := b.DecodeMessage(msg) + m.Sharedv4MountOpt = &VolumeSpecUpdate_Sharedv4MountOptSpec{msg} + return true, err + case 35: // proxy_write_opt.proxy_write + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.ProxyWriteOpt = &VolumeSpecUpdate_ProxyWrite{x != 0} + return true, err + case 36: // proxy_spec_opt.proxy_spec + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(ProxySpec) + err := b.DecodeMessage(msg) + m.ProxySpecOpt = &VolumeSpecUpdate_ProxySpec{msg} + return true, err + case 37: // sharedv4_service_spec_opt.sharedv4_service_spec + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Sharedv4ServiceSpec) + err := b.DecodeMessage(msg) + m.Sharedv4ServiceSpecOpt = &VolumeSpecUpdate_Sharedv4ServiceSpec{msg} + return true, err + case 38: // sharedv4_spec_opt.sharedv4_spec + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Sharedv4Spec) + err := b.DecodeMessage(msg) + m.Sharedv4SpecOpt = &VolumeSpecUpdate_Sharedv4Spec{msg} + return true, err + case 39: // auto_fstrim_opt.auto_fstrim + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.AutoFstrimOpt = &VolumeSpecUpdate_AutoFstrim{x != 0} + return true, err + case 40: // io_throttle_opt.io_throttle + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(IoThrottle) + err := b.DecodeMessage(msg) + m.IoThrottleOpt = &VolumeSpecUpdate_IoThrottle{msg} + return true, err + case 41: // near_sync_replication_strategy_opt.near_sync_replication_strategy + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.NearSyncReplicationStrategyOpt = &VolumeSpecUpdate_NearSyncReplicationStrategy{NearSyncReplicationStrategy(x)} + return true, err + case 42: // pure_nfs_endpoint_opt.pure_nfs_endpoint + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeStringBytes() + m.PureNfsEndpointOpt = &VolumeSpecUpdate_PureNfsEndpoint{x} + return true, err + default: + return false, nil + } +} + +func _VolumeSpecUpdate_OneofSizer(msg proto.Message) (n int) { + m := msg.(*VolumeSpecUpdate) + // size_opt + switch x := m.SizeOpt.(type) { + case *VolumeSpecUpdate_Size: + n += 1 // tag and wire + n += proto.SizeVarint(uint64(x.Size)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // ha_level_opt + switch x := m.HaLevelOpt.(type) { + case *VolumeSpecUpdate_HaLevel: + n += 1 // tag and wire + n += proto.SizeVarint(uint64(x.HaLevel)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // cos_opt + switch x := m.CosOpt.(type) { + case *VolumeSpecUpdate_Cos: + n += 1 // tag and wire + n += proto.SizeVarint(uint64(x.Cos)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // io_profile_opt + switch x := m.IoProfileOpt.(type) { + case *VolumeSpecUpdate_IoProfile: + n += 1 // tag and wire + n += proto.SizeVarint(uint64(x.IoProfile)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // dedupe_opt + switch x := m.DedupeOpt.(type) { + case *VolumeSpecUpdate_Dedupe: + n += 1 // tag and wire + n += 1 + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // snapshot_interval_opt + switch x := m.SnapshotIntervalOpt.(type) { + case *VolumeSpecUpdate_SnapshotInterval: + n += 1 // tag and wire + n += proto.SizeVarint(uint64(x.SnapshotInterval)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // shared_opt + switch x := m.SharedOpt.(type) { + case *VolumeSpecUpdate_Shared: + n += 1 // tag and wire + n += 1 + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // passphrase_opt + switch x := m.PassphraseOpt.(type) { + case *VolumeSpecUpdate_Passphrase: + n += 1 // tag and wire + n += proto.SizeVarint(uint64(len(x.Passphrase))) + n += len(x.Passphrase) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // snapshot_schedule_opt + switch x := m.SnapshotScheduleOpt.(type) { + case *VolumeSpecUpdate_SnapshotSchedule: + n += 2 // tag and wire + n += proto.SizeVarint(uint64(len(x.SnapshotSchedule))) + n += len(x.SnapshotSchedule) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // scale_opt + switch x := m.ScaleOpt.(type) { + case *VolumeSpecUpdate_Scale: + n += 2 // tag and wire + n += proto.SizeVarint(uint64(x.Scale)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // sticky_opt + switch x := m.StickyOpt.(type) { + case *VolumeSpecUpdate_Sticky: + n += 2 // tag and wire + n += 1 + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // group_opt + switch x := m.GroupOpt.(type) { + case *VolumeSpecUpdate_Group: + s := proto.Size(x.Group) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // journal_opt + switch x := m.JournalOpt.(type) { + case *VolumeSpecUpdate_Journal: + n += 2 // tag and wire + n += 1 + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // sharedv4_opt + switch x := m.Sharedv4Opt.(type) { + case *VolumeSpecUpdate_Sharedv4: + n += 2 // tag and wire + n += 1 + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // queue_depth_opt + switch x := m.QueueDepthOpt.(type) { + case *VolumeSpecUpdate_QueueDepth: + n += 2 // tag and wire + n += proto.SizeVarint(uint64(x.QueueDepth)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // nodiscard_opt + switch x := m.NodiscardOpt.(type) { + case *VolumeSpecUpdate_Nodiscard: + n += 2 // tag and wire + n += 1 + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // export_spec_opt + switch x := m.ExportSpecOpt.(type) { + case *VolumeSpecUpdate_ExportSpec: + s := proto.Size(x.ExportSpec) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // fastpath_opt + switch x := m.FastpathOpt.(type) { + case *VolumeSpecUpdate_Fastpath: + n += 2 // tag and wire + n += 1 + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // xattr_opt + switch x := m.XattrOpt.(type) { + case *VolumeSpecUpdate_Xattr: + n += 2 // tag and wire + n += proto.SizeVarint(uint64(x.Xattr)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // scan_policy_opt + switch x := m.ScanPolicyOpt.(type) { + case *VolumeSpecUpdate_ScanPolicy: + s := proto.Size(x.ScanPolicy) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // mount_opt + switch x := m.MountOpt.(type) { + case *VolumeSpecUpdate_MountOptSpec: + s := proto.Size(x.MountOptSpec) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // sharedv4_mount_opt + switch x := m.Sharedv4MountOpt.(type) { + case *VolumeSpecUpdate_Sharedv4MountOptSpec: + s := proto.Size(x.Sharedv4MountOptSpec) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // proxy_write_opt + switch x := m.ProxyWriteOpt.(type) { + case *VolumeSpecUpdate_ProxyWrite: + n += 2 // tag and wire + n += 1 + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // proxy_spec_opt + switch x := m.ProxySpecOpt.(type) { + case *VolumeSpecUpdate_ProxySpec: + s := proto.Size(x.ProxySpec) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // sharedv4_service_spec_opt + switch x := m.Sharedv4ServiceSpecOpt.(type) { + case *VolumeSpecUpdate_Sharedv4ServiceSpec: + s := proto.Size(x.Sharedv4ServiceSpec) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // sharedv4_spec_opt + switch x := m.Sharedv4SpecOpt.(type) { + case *VolumeSpecUpdate_Sharedv4Spec: + s := proto.Size(x.Sharedv4Spec) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // auto_fstrim_opt + switch x := m.AutoFstrimOpt.(type) { + case *VolumeSpecUpdate_AutoFstrim: + n += 2 // tag and wire + n += 1 + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // io_throttle_opt + switch x := m.IoThrottleOpt.(type) { + case *VolumeSpecUpdate_IoThrottle: + s := proto.Size(x.IoThrottle) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // near_sync_replication_strategy_opt + switch x := m.NearSyncReplicationStrategyOpt.(type) { + case *VolumeSpecUpdate_NearSyncReplicationStrategy: + n += 2 // tag and wire + n += proto.SizeVarint(uint64(x.NearSyncReplicationStrategy)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // pure_nfs_endpoint_opt + switch x := m.PureNfsEndpointOpt.(type) { + case *VolumeSpecUpdate_PureNfsEndpoint: + n += 2 // tag and wire + n += proto.SizeVarint(uint64(len(x.PureNfsEndpoint))) + n += len(x.PureNfsEndpoint) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n } -func (*VolumeSpecUpdate_Checksummed) isVolumeSpecUpdate_ChecksummedOpt() {} - // VolumeSpecPolicy provides a method to set volume storage policy type VolumeSpecPolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Size specifies the thin provisioned volume size in bytes. // Use `size_operator` to show if this value is the min, max, or set. // - // Types that are assignable to SizeOpt: + // Types that are valid to be assigned to SizeOpt: // *VolumeSpecPolicy_Size SizeOpt isVolumeSpecPolicy_SizeOpt `protobuf_oneof:"size_opt"` // HaLevel specifies the number of copies of data. // Use `ha_level_operator` to show if this value is the min, max, or set. // - // Types that are assignable to HaLevelOpt: + // Types that are valid to be assigned to HaLevelOpt: // *VolumeSpecPolicy_HaLevel HaLevelOpt isVolumeSpecPolicy_HaLevelOpt `protobuf_oneof:"ha_level_opt"` // Cos specifies the relative class of service. // - // Types that are assignable to CosOpt: + // Types that are valid to be assigned to CosOpt: // *VolumeSpecPolicy_Cos CosOpt isVolumeSpecPolicy_CosOpt `protobuf_oneof:"cos_opt"` // IoProfile provides a hint about application using this volume. // - // Types that are assignable to IoProfileOpt: + // Types that are valid to be assigned to IoProfileOpt: // *VolumeSpecPolicy_IoProfile IoProfileOpt isVolumeSpecPolicy_IoProfileOpt `protobuf_oneof:"io_profile_opt"` // Dedupe specifies if the volume data is to be de-duplicated. // - // Types that are assignable to DedupeOpt: + // Types that are valid to be assigned to DedupeOpt: // *VolumeSpecPolicy_Dedupe DedupeOpt isVolumeSpecPolicy_DedupeOpt `protobuf_oneof:"dedupe_opt"` // SnapshotInterval in minutes, set to 0 to disable snapshots // - // Types that are assignable to SnapshotIntervalOpt: + // Types that are valid to be assigned to SnapshotIntervalOpt: // *VolumeSpecPolicy_SnapshotInterval SnapshotIntervalOpt isVolumeSpecPolicy_SnapshotIntervalOpt `protobuf_oneof:"snapshot_interval_opt"` // VolumeLabels configuration labels - VolumeLabels map[string]string `protobuf:"bytes,7,rep,name=volume_labels,json=volumeLabels,proto3" json:"volume_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + VolumeLabels map[string]string `protobuf:"bytes,7,rep,name=volume_labels,json=volumeLabels" json:"volume_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Shared is true if this volume can be remotely accessed. // - // Types that are assignable to SharedOpt: + // Types that are valid to be assigned to SharedOpt: // *VolumeSpecPolicy_Shared SharedOpt isVolumeSpecPolicy_SharedOpt `protobuf_oneof:"shared_opt"` // ReplicaSet is the desired set of nodes for the volume data. - ReplicaSet *ReplicaSet `protobuf:"bytes,9,opt,name=replica_set,json=replicaSet,proto3" json:"replica_set,omitempty"` + ReplicaSet *ReplicaSet `protobuf:"bytes,9,opt,name=replica_set,json=replicaSet" json:"replica_set,omitempty"` // Passphrase for an encrypted volume // - // Types that are assignable to PassphraseOpt: + // Types that are valid to be assigned to PassphraseOpt: // *VolumeSpecPolicy_Passphrase PassphraseOpt isVolumeSpecPolicy_PassphraseOpt `protobuf_oneof:"passphrase_opt"` // SnapshotSchedule a well known string that specifies when snapshots should be taken. // - // Types that are assignable to SnapshotScheduleOpt: + // Types that are valid to be assigned to SnapshotScheduleOpt: // *VolumeSpecPolicy_SnapshotSchedule SnapshotScheduleOpt isVolumeSpecPolicy_SnapshotScheduleOpt `protobuf_oneof:"snapshot_schedule_opt"` // Scale allows autocreation of volumes. // - // Types that are assignable to ScaleOpt: + // Types that are valid to be assigned to ScaleOpt: // *VolumeSpecPolicy_Scale ScaleOpt isVolumeSpecPolicy_ScaleOpt `protobuf_oneof:"scale_opt"` // Sticky volumes cannot be deleted until the flag is removed. // - // Types that are assignable to StickyOpt: + // Types that are valid to be assigned to StickyOpt: // *VolumeSpecPolicy_Sticky StickyOpt isVolumeSpecPolicy_StickyOpt `protobuf_oneof:"sticky_opt"` // Group identifies a consistency group // - // Types that are assignable to GroupOpt: + // Types that are valid to be assigned to GroupOpt: // *VolumeSpecPolicy_Group GroupOpt isVolumeSpecPolicy_GroupOpt `protobuf_oneof:"group_opt"` // Journal is true if data for the volume goes into the journal. // - // Types that are assignable to JournalOpt: + // Types that are valid to be assigned to JournalOpt: // *VolumeSpecPolicy_Journal JournalOpt isVolumeSpecPolicy_JournalOpt `protobuf_oneof:"journal_opt"` // Sharedv4 is true if this volume can be accessed via sharedv4. // - // Types that are assignable to Sharedv4Opt: + // Types that are valid to be assigned to Sharedv4Opt: // *VolumeSpecPolicy_Sharedv4 Sharedv4Opt isVolumeSpecPolicy_Sharedv4Opt `protobuf_oneof:"sharedv4_opt"` // QueueDepth defines the desired block device queue depth // - // Types that are assignable to QueueDepthOpt: + // Types that are valid to be assigned to QueueDepthOpt: // *VolumeSpecPolicy_QueueDepth QueueDepthOpt isVolumeSpecPolicy_QueueDepthOpt `protobuf_oneof:"queue_depth_opt"` // Encrypted is true if this volume will be cryptographically secured. // - // Types that are assignable to EncryptedOpt: + // Types that are valid to be assigned to EncryptedOpt: // *VolumeSpecPolicy_Encrypted EncryptedOpt isVolumeSpecPolicy_EncryptedOpt `protobuf_oneof:"encrypted_opt"` // Aggregation level Specifies the number of parts the volume can be aggregated from. // - // Types that are assignable to AggregationLevelOpt: + // Types that are valid to be assigned to AggregationLevelOpt: // *VolumeSpecPolicy_AggregationLevel AggregationLevelOpt isVolumeSpecPolicy_AggregationLevelOpt `protobuf_oneof:"aggregation_level_opt"` // Operator to check size - SizeOperator VolumeSpecPolicy_PolicyOp `protobuf:"varint,50,opt,name=size_operator,json=sizeOperator,proto3,enum=openstorage.api.VolumeSpecPolicy_PolicyOp" json:"size_operator,omitempty"` + SizeOperator VolumeSpecPolicy_PolicyOp `protobuf:"varint,50,opt,name=size_operator,json=sizeOperator,enum=openstorage.api.VolumeSpecPolicy_PolicyOp" json:"size_operator,omitempty"` // Operator to check ha_level - HaLevelOperator VolumeSpecPolicy_PolicyOp `protobuf:"varint,51,opt,name=ha_level_operator,json=haLevelOperator,proto3,enum=openstorage.api.VolumeSpecPolicy_PolicyOp" json:"ha_level_operator,omitempty"` + HaLevelOperator VolumeSpecPolicy_PolicyOp `protobuf:"varint,51,opt,name=ha_level_operator,json=haLevelOperator,enum=openstorage.api.VolumeSpecPolicy_PolicyOp" json:"ha_level_operator,omitempty"` // Operator to check scale - ScaleOperator VolumeSpecPolicy_PolicyOp `protobuf:"varint,52,opt,name=scale_operator,json=scaleOperator,proto3,enum=openstorage.api.VolumeSpecPolicy_PolicyOp" json:"scale_operator,omitempty"` + ScaleOperator VolumeSpecPolicy_PolicyOp `protobuf:"varint,52,opt,name=scale_operator,json=scaleOperator,enum=openstorage.api.VolumeSpecPolicy_PolicyOp" json:"scale_operator,omitempty"` // Operator to check snapshot_interval - SnapshotIntervalOperator VolumeSpecPolicy_PolicyOp `protobuf:"varint,53,opt,name=snapshot_interval_operator,json=snapshotIntervalOperator,proto3,enum=openstorage.api.VolumeSpecPolicy_PolicyOp" json:"snapshot_interval_operator,omitempty"` + SnapshotIntervalOperator VolumeSpecPolicy_PolicyOp `protobuf:"varint,53,opt,name=snapshot_interval_operator,json=snapshotIntervalOperator,enum=openstorage.api.VolumeSpecPolicy_PolicyOp" json:"snapshot_interval_operator,omitempty"` // Nodiscard specifies if the volume will be mounted with discard support disabled. // i.e. FS will not release allocated blocks back to the backing storage pool. // - // Types that are assignable to NodiscardOpt: + // Types that are valid to be assigned to NodiscardOpt: // *VolumeSpecPolicy_Nodiscard NodiscardOpt isVolumeSpecPolicy_NodiscardOpt `protobuf_oneof:"nodiscard_opt"` // IoStrategy preferred strategy for I/O. - IoStrategy *IoStrategy `protobuf:"bytes,55,opt,name=io_strategy,json=ioStrategy,proto3" json:"io_strategy,omitempty"` + IoStrategy *IoStrategy `protobuf:"bytes,55,opt,name=io_strategy,json=ioStrategy" json:"io_strategy,omitempty"` // ExportSpec preferred volume export options. // - // Types that are assignable to ExportSpecOpt: + // Types that are valid to be assigned to ExportSpecOpt: // *VolumeSpecPolicy_ExportSpec ExportSpecOpt isVolumeSpecPolicy_ExportSpecOpt `protobuf_oneof:"export_spec_opt"` // scan_policy_opt defines the filesystem check policy for the volume // - // Types that are assignable to ScanPolicyOpt: + // Types that are valid to be assigned to ScanPolicyOpt: // *VolumeSpecPolicy_ScanPolicy ScanPolicyOpt isVolumeSpecPolicy_ScanPolicyOpt `protobuf_oneof:"scan_policy_opt"` // mount_opt provides the mount time options for a volume // - // Types that are assignable to MountOpt: + // Types that are valid to be assigned to MountOpt: // *VolumeSpecPolicy_MountOptSpec MountOpt isVolumeSpecPolicy_MountOpt `protobuf_oneof:"mount_opt"` // sharedv4_mount_opt provides the client side mount time options for a sharedv4 volume // - // Types that are assignable to Sharedv4MountOpt: + // Types that are valid to be assigned to Sharedv4MountOpt: // *VolumeSpecPolicy_Sharedv4MountOptSpec Sharedv4MountOpt isVolumeSpecPolicy_Sharedv4MountOpt `protobuf_oneof:"sharedv4_mount_opt"` // Proxy_write is true if proxy write replication is enabled for the volume // - // Types that are assignable to ProxyWriteOpt: + // Types that are valid to be assigned to ProxyWriteOpt: // *VolumeSpecPolicy_ProxyWrite ProxyWriteOpt isVolumeSpecPolicy_ProxyWriteOpt `protobuf_oneof:"proxy_write_opt"` // proxy_spec_opt provides the spec for a proxy volume. // - // Types that are assignable to ProxySpecOpt: + // Types that are valid to be assigned to ProxySpecOpt: // *VolumeSpecPolicy_ProxySpec ProxySpecOpt isVolumeSpecPolicy_ProxySpecOpt `protobuf_oneof:"proxy_spec_opt"` // fastpath preference // - // Types that are assignable to FastpathOpt: + // Types that are valid to be assigned to FastpathOpt: // *VolumeSpecPolicy_Fastpath FastpathOpt isVolumeSpecPolicy_FastpathOpt `protobuf_oneof:"fastpath_opt"` // sharedv4_service_spec_opt provides the spec for sharedv4 volume service // - // Types that are assignable to Sharedv4ServiceSpecOpt: + // Types that are valid to be assigned to Sharedv4ServiceSpecOpt: // *VolumeSpecPolicy_Sharedv4ServiceSpec Sharedv4ServiceSpecOpt isVolumeSpecPolicy_Sharedv4ServiceSpecOpt `protobuf_oneof:"sharedv4_service_spec_opt"` // Sharedv4Spec specifies common properties of sharedv4 and sharedv4 service volumes // - // Types that are assignable to Sharedv4SpecOpt: + // Types that are valid to be assigned to Sharedv4SpecOpt: // *VolumeSpecPolicy_Sharedv4Spec Sharedv4SpecOpt isVolumeSpecPolicy_Sharedv4SpecOpt `protobuf_oneof:"sharedv4_spec_opt"` // Autofstrim is set to true, to enable automatic fstrim on this volume // - // Types that are assignable to AutoFstrimOpt: + // Types that are valid to be assigned to AutoFstrimOpt: // *VolumeSpecPolicy_AutoFstrim AutoFstrimOpt isVolumeSpecPolicy_AutoFstrimOpt `protobuf_oneof:"auto_fstrim_opt"` // io_throttle_opt defines the io throttle limits for the volume // - // Types that are assignable to IoThrottleOpt: + // Types that are valid to be assigned to IoThrottleOpt: // *VolumeSpecPolicy_IoThrottle - IoThrottleOpt isVolumeSpecPolicy_IoThrottleOpt `protobuf_oneof:"io_throttle_opt"` - // Enable readahead for the volume - // - // Types that are assignable to ReadaheadOpt: - // *VolumeSpecPolicy_Readahead - ReadaheadOpt isVolumeSpecPolicy_ReadaheadOpt `protobuf_oneof:"readahead_opt"` - // winshare is true if this volume can be accessed from windows. - // - // Types that are assignable to WinshareOpt: - // *VolumeSpecPolicy_Winshare - WinshareOpt isVolumeSpecPolicy_WinshareOpt `protobuf_oneof:"winshare_opt"` + IoThrottleOpt isVolumeSpecPolicy_IoThrottleOpt `protobuf_oneof:"io_throttle_opt"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VolumeSpecPolicy) Reset() { - *x = VolumeSpecPolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *VolumeSpecPolicy) Reset() { *m = VolumeSpecPolicy{} } +func (m *VolumeSpecPolicy) String() string { return proto.CompactTextString(m) } +func (*VolumeSpecPolicy) ProtoMessage() {} +func (*VolumeSpecPolicy) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{28} } - -func (x *VolumeSpecPolicy) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *VolumeSpecPolicy) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumeSpecPolicy.Unmarshal(m, b) } - -func (*VolumeSpecPolicy) ProtoMessage() {} - -func (x *VolumeSpecPolicy) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[28] - 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) +func (m *VolumeSpecPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumeSpecPolicy.Marshal(b, m, deterministic) } - -// Deprecated: Use VolumeSpecPolicy.ProtoReflect.Descriptor instead. -func (*VolumeSpecPolicy) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{28} +func (dst *VolumeSpecPolicy) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumeSpecPolicy.Merge(dst, src) } - -func (m *VolumeSpecPolicy) GetSizeOpt() isVolumeSpecPolicy_SizeOpt { - if m != nil { - return m.SizeOpt - } - return nil +func (m *VolumeSpecPolicy) XXX_Size() int { + return xxx_messageInfo_VolumeSpecPolicy.Size(m) } - -func (x *VolumeSpecPolicy) GetSize() uint64 { - if x, ok := x.GetSizeOpt().(*VolumeSpecPolicy_Size); ok { - return x.Size - } - return 0 +func (m *VolumeSpecPolicy) XXX_DiscardUnknown() { + xxx_messageInfo_VolumeSpecPolicy.DiscardUnknown(m) } -func (m *VolumeSpecPolicy) GetHaLevelOpt() isVolumeSpecPolicy_HaLevelOpt { - if m != nil { - return m.HaLevelOpt - } - return nil -} +var xxx_messageInfo_VolumeSpecPolicy proto.InternalMessageInfo -func (x *VolumeSpecPolicy) GetHaLevel() int64 { - if x, ok := x.GetHaLevelOpt().(*VolumeSpecPolicy_HaLevel); ok { - return x.HaLevel - } - return 0 +type isVolumeSpecPolicy_SizeOpt interface { + isVolumeSpecPolicy_SizeOpt() } - -func (m *VolumeSpecPolicy) GetCosOpt() isVolumeSpecPolicy_CosOpt { - if m != nil { - return m.CosOpt - } - return nil +type isVolumeSpecPolicy_HaLevelOpt interface { + isVolumeSpecPolicy_HaLevelOpt() } - -func (x *VolumeSpecPolicy) GetCos() CosType { - if x, ok := x.GetCosOpt().(*VolumeSpecPolicy_Cos); ok { - return x.Cos - } - return CosType_NONE +type isVolumeSpecPolicy_CosOpt interface { + isVolumeSpecPolicy_CosOpt() } - -func (m *VolumeSpecPolicy) GetIoProfileOpt() isVolumeSpecPolicy_IoProfileOpt { - if m != nil { - return m.IoProfileOpt - } - return nil +type isVolumeSpecPolicy_IoProfileOpt interface { + isVolumeSpecPolicy_IoProfileOpt() } - -func (x *VolumeSpecPolicy) GetIoProfile() IoProfile { - if x, ok := x.GetIoProfileOpt().(*VolumeSpecPolicy_IoProfile); ok { - return x.IoProfile - } - return IoProfile_IO_PROFILE_SEQUENTIAL +type isVolumeSpecPolicy_DedupeOpt interface { + isVolumeSpecPolicy_DedupeOpt() } - -func (m *VolumeSpecPolicy) GetDedupeOpt() isVolumeSpecPolicy_DedupeOpt { - if m != nil { - return m.DedupeOpt - } - return nil +type isVolumeSpecPolicy_SnapshotIntervalOpt interface { + isVolumeSpecPolicy_SnapshotIntervalOpt() } - -func (x *VolumeSpecPolicy) GetDedupe() bool { - if x, ok := x.GetDedupeOpt().(*VolumeSpecPolicy_Dedupe); ok { - return x.Dedupe - } - return false +type isVolumeSpecPolicy_SharedOpt interface { + isVolumeSpecPolicy_SharedOpt() } - -func (m *VolumeSpecPolicy) GetSnapshotIntervalOpt() isVolumeSpecPolicy_SnapshotIntervalOpt { - if m != nil { - return m.SnapshotIntervalOpt - } - return nil +type isVolumeSpecPolicy_PassphraseOpt interface { + isVolumeSpecPolicy_PassphraseOpt() } - -func (x *VolumeSpecPolicy) GetSnapshotInterval() uint32 { - if x, ok := x.GetSnapshotIntervalOpt().(*VolumeSpecPolicy_SnapshotInterval); ok { - return x.SnapshotInterval - } - return 0 +type isVolumeSpecPolicy_SnapshotScheduleOpt interface { + isVolumeSpecPolicy_SnapshotScheduleOpt() } - -func (x *VolumeSpecPolicy) GetVolumeLabels() map[string]string { - if x != nil { - return x.VolumeLabels - } - return nil +type isVolumeSpecPolicy_ScaleOpt interface { + isVolumeSpecPolicy_ScaleOpt() +} +type isVolumeSpecPolicy_StickyOpt interface { + isVolumeSpecPolicy_StickyOpt() +} +type isVolumeSpecPolicy_GroupOpt interface { + isVolumeSpecPolicy_GroupOpt() +} +type isVolumeSpecPolicy_JournalOpt interface { + isVolumeSpecPolicy_JournalOpt() +} +type isVolumeSpecPolicy_Sharedv4Opt interface { + isVolumeSpecPolicy_Sharedv4Opt() +} +type isVolumeSpecPolicy_QueueDepthOpt interface { + isVolumeSpecPolicy_QueueDepthOpt() +} +type isVolumeSpecPolicy_EncryptedOpt interface { + isVolumeSpecPolicy_EncryptedOpt() +} +type isVolumeSpecPolicy_AggregationLevelOpt interface { + isVolumeSpecPolicy_AggregationLevelOpt() +} +type isVolumeSpecPolicy_NodiscardOpt interface { + isVolumeSpecPolicy_NodiscardOpt() +} +type isVolumeSpecPolicy_ExportSpecOpt interface { + isVolumeSpecPolicy_ExportSpecOpt() +} +type isVolumeSpecPolicy_ScanPolicyOpt interface { + isVolumeSpecPolicy_ScanPolicyOpt() +} +type isVolumeSpecPolicy_MountOpt interface { + isVolumeSpecPolicy_MountOpt() +} +type isVolumeSpecPolicy_Sharedv4MountOpt interface { + isVolumeSpecPolicy_Sharedv4MountOpt() +} +type isVolumeSpecPolicy_ProxyWriteOpt interface { + isVolumeSpecPolicy_ProxyWriteOpt() +} +type isVolumeSpecPolicy_ProxySpecOpt interface { + isVolumeSpecPolicy_ProxySpecOpt() +} +type isVolumeSpecPolicy_FastpathOpt interface { + isVolumeSpecPolicy_FastpathOpt() +} +type isVolumeSpecPolicy_Sharedv4ServiceSpecOpt interface { + isVolumeSpecPolicy_Sharedv4ServiceSpecOpt() +} +type isVolumeSpecPolicy_Sharedv4SpecOpt interface { + isVolumeSpecPolicy_Sharedv4SpecOpt() +} +type isVolumeSpecPolicy_AutoFstrimOpt interface { + isVolumeSpecPolicy_AutoFstrimOpt() +} +type isVolumeSpecPolicy_IoThrottleOpt interface { + isVolumeSpecPolicy_IoThrottleOpt() } -func (m *VolumeSpecPolicy) GetSharedOpt() isVolumeSpecPolicy_SharedOpt { +type VolumeSpecPolicy_Size struct { + Size uint64 `protobuf:"varint,1,opt,name=size,oneof"` +} +type VolumeSpecPolicy_HaLevel struct { + HaLevel int64 `protobuf:"varint,2,opt,name=ha_level,json=haLevel,oneof"` +} +type VolumeSpecPolicy_Cos struct { + Cos CosType `protobuf:"varint,3,opt,name=cos,enum=openstorage.api.CosType,oneof"` +} +type VolumeSpecPolicy_IoProfile struct { + IoProfile IoProfile `protobuf:"varint,4,opt,name=io_profile,json=ioProfile,enum=openstorage.api.IoProfile,oneof"` +} +type VolumeSpecPolicy_Dedupe struct { + Dedupe bool `protobuf:"varint,5,opt,name=dedupe,oneof"` +} +type VolumeSpecPolicy_SnapshotInterval struct { + SnapshotInterval uint32 `protobuf:"varint,6,opt,name=snapshot_interval,json=snapshotInterval,oneof"` +} +type VolumeSpecPolicy_Shared struct { + Shared bool `protobuf:"varint,8,opt,name=shared,oneof"` +} +type VolumeSpecPolicy_Passphrase struct { + Passphrase string `protobuf:"bytes,10,opt,name=passphrase,oneof"` +} +type VolumeSpecPolicy_SnapshotSchedule struct { + SnapshotSchedule string `protobuf:"bytes,11,opt,name=snapshot_schedule,json=snapshotSchedule,oneof"` +} +type VolumeSpecPolicy_Scale struct { + Scale uint32 `protobuf:"varint,12,opt,name=scale,oneof"` +} +type VolumeSpecPolicy_Sticky struct { + Sticky bool `protobuf:"varint,13,opt,name=sticky,oneof"` +} +type VolumeSpecPolicy_Group struct { + Group *Group `protobuf:"bytes,14,opt,name=group,oneof"` +} +type VolumeSpecPolicy_Journal struct { + Journal bool `protobuf:"varint,15,opt,name=journal,oneof"` +} +type VolumeSpecPolicy_Sharedv4 struct { + Sharedv4 bool `protobuf:"varint,16,opt,name=sharedv4,oneof"` +} +type VolumeSpecPolicy_QueueDepth struct { + QueueDepth uint32 `protobuf:"varint,17,opt,name=queue_depth,json=queueDepth,oneof"` +} +type VolumeSpecPolicy_Encrypted struct { + Encrypted bool `protobuf:"varint,18,opt,name=encrypted,oneof"` +} +type VolumeSpecPolicy_AggregationLevel struct { + AggregationLevel uint32 `protobuf:"varint,19,opt,name=aggregation_level,json=aggregationLevel,oneof"` +} +type VolumeSpecPolicy_Nodiscard struct { + Nodiscard bool `protobuf:"varint,54,opt,name=nodiscard,oneof"` +} +type VolumeSpecPolicy_ExportSpec struct { + ExportSpec *ExportSpec `protobuf:"bytes,56,opt,name=export_spec,json=exportSpec,oneof"` +} +type VolumeSpecPolicy_ScanPolicy struct { + ScanPolicy *ScanPolicy `protobuf:"bytes,57,opt,name=scan_policy,json=scanPolicy,oneof"` +} +type VolumeSpecPolicy_MountOptSpec struct { + MountOptSpec *MountOptions `protobuf:"bytes,58,opt,name=mount_opt_spec,json=mountOptSpec,oneof"` +} +type VolumeSpecPolicy_Sharedv4MountOptSpec struct { + Sharedv4MountOptSpec *MountOptions `protobuf:"bytes,59,opt,name=sharedv4_mount_opt_spec,json=sharedv4MountOptSpec,oneof"` +} +type VolumeSpecPolicy_ProxyWrite struct { + ProxyWrite bool `protobuf:"varint,60,opt,name=proxy_write,json=proxyWrite,oneof"` +} +type VolumeSpecPolicy_ProxySpec struct { + ProxySpec *ProxySpec `protobuf:"bytes,61,opt,name=proxy_spec,json=proxySpec,oneof"` +} +type VolumeSpecPolicy_Fastpath struct { + Fastpath bool `protobuf:"varint,62,opt,name=fastpath,oneof"` +} +type VolumeSpecPolicy_Sharedv4ServiceSpec struct { + Sharedv4ServiceSpec *Sharedv4ServiceSpec `protobuf:"bytes,63,opt,name=sharedv4_service_spec,json=sharedv4ServiceSpec,oneof"` +} +type VolumeSpecPolicy_Sharedv4Spec struct { + Sharedv4Spec *Sharedv4Spec `protobuf:"bytes,64,opt,name=sharedv4_spec,json=sharedv4Spec,oneof"` +} +type VolumeSpecPolicy_AutoFstrim struct { + AutoFstrim bool `protobuf:"varint,65,opt,name=auto_fstrim,json=autoFstrim,oneof"` +} +type VolumeSpecPolicy_IoThrottle struct { + IoThrottle *IoThrottle `protobuf:"bytes,66,opt,name=io_throttle,json=ioThrottle,oneof"` +} + +func (*VolumeSpecPolicy_Size) isVolumeSpecPolicy_SizeOpt() {} +func (*VolumeSpecPolicy_HaLevel) isVolumeSpecPolicy_HaLevelOpt() {} +func (*VolumeSpecPolicy_Cos) isVolumeSpecPolicy_CosOpt() {} +func (*VolumeSpecPolicy_IoProfile) isVolumeSpecPolicy_IoProfileOpt() {} +func (*VolumeSpecPolicy_Dedupe) isVolumeSpecPolicy_DedupeOpt() {} +func (*VolumeSpecPolicy_SnapshotInterval) isVolumeSpecPolicy_SnapshotIntervalOpt() {} +func (*VolumeSpecPolicy_Shared) isVolumeSpecPolicy_SharedOpt() {} +func (*VolumeSpecPolicy_Passphrase) isVolumeSpecPolicy_PassphraseOpt() {} +func (*VolumeSpecPolicy_SnapshotSchedule) isVolumeSpecPolicy_SnapshotScheduleOpt() {} +func (*VolumeSpecPolicy_Scale) isVolumeSpecPolicy_ScaleOpt() {} +func (*VolumeSpecPolicy_Sticky) isVolumeSpecPolicy_StickyOpt() {} +func (*VolumeSpecPolicy_Group) isVolumeSpecPolicy_GroupOpt() {} +func (*VolumeSpecPolicy_Journal) isVolumeSpecPolicy_JournalOpt() {} +func (*VolumeSpecPolicy_Sharedv4) isVolumeSpecPolicy_Sharedv4Opt() {} +func (*VolumeSpecPolicy_QueueDepth) isVolumeSpecPolicy_QueueDepthOpt() {} +func (*VolumeSpecPolicy_Encrypted) isVolumeSpecPolicy_EncryptedOpt() {} +func (*VolumeSpecPolicy_AggregationLevel) isVolumeSpecPolicy_AggregationLevelOpt() {} +func (*VolumeSpecPolicy_Nodiscard) isVolumeSpecPolicy_NodiscardOpt() {} +func (*VolumeSpecPolicy_ExportSpec) isVolumeSpecPolicy_ExportSpecOpt() {} +func (*VolumeSpecPolicy_ScanPolicy) isVolumeSpecPolicy_ScanPolicyOpt() {} +func (*VolumeSpecPolicy_MountOptSpec) isVolumeSpecPolicy_MountOpt() {} +func (*VolumeSpecPolicy_Sharedv4MountOptSpec) isVolumeSpecPolicy_Sharedv4MountOpt() {} +func (*VolumeSpecPolicy_ProxyWrite) isVolumeSpecPolicy_ProxyWriteOpt() {} +func (*VolumeSpecPolicy_ProxySpec) isVolumeSpecPolicy_ProxySpecOpt() {} +func (*VolumeSpecPolicy_Fastpath) isVolumeSpecPolicy_FastpathOpt() {} +func (*VolumeSpecPolicy_Sharedv4ServiceSpec) isVolumeSpecPolicy_Sharedv4ServiceSpecOpt() {} +func (*VolumeSpecPolicy_Sharedv4Spec) isVolumeSpecPolicy_Sharedv4SpecOpt() {} +func (*VolumeSpecPolicy_AutoFstrim) isVolumeSpecPolicy_AutoFstrimOpt() {} +func (*VolumeSpecPolicy_IoThrottle) isVolumeSpecPolicy_IoThrottleOpt() {} + +func (m *VolumeSpecPolicy) GetSizeOpt() isVolumeSpecPolicy_SizeOpt { if m != nil { - return m.SharedOpt + return m.SizeOpt } return nil } - -func (x *VolumeSpecPolicy) GetShared() bool { - if x, ok := x.GetSharedOpt().(*VolumeSpecPolicy_Shared); ok { - return x.Shared +func (m *VolumeSpecPolicy) GetHaLevelOpt() isVolumeSpecPolicy_HaLevelOpt { + if m != nil { + return m.HaLevelOpt } - return false + return nil } - -func (x *VolumeSpecPolicy) GetReplicaSet() *ReplicaSet { - if x != nil { - return x.ReplicaSet +func (m *VolumeSpecPolicy) GetCosOpt() isVolumeSpecPolicy_CosOpt { + if m != nil { + return m.CosOpt } return nil } - -func (m *VolumeSpecPolicy) GetPassphraseOpt() isVolumeSpecPolicy_PassphraseOpt { +func (m *VolumeSpecPolicy) GetIoProfileOpt() isVolumeSpecPolicy_IoProfileOpt { if m != nil { - return m.PassphraseOpt + return m.IoProfileOpt } return nil } - -func (x *VolumeSpecPolicy) GetPassphrase() string { - if x, ok := x.GetPassphraseOpt().(*VolumeSpecPolicy_Passphrase); ok { - return x.Passphrase +func (m *VolumeSpecPolicy) GetDedupeOpt() isVolumeSpecPolicy_DedupeOpt { + if m != nil { + return m.DedupeOpt } - return "" + return nil } - -func (m *VolumeSpecPolicy) GetSnapshotScheduleOpt() isVolumeSpecPolicy_SnapshotScheduleOpt { +func (m *VolumeSpecPolicy) GetSnapshotIntervalOpt() isVolumeSpecPolicy_SnapshotIntervalOpt { if m != nil { - return m.SnapshotScheduleOpt + return m.SnapshotIntervalOpt } return nil } - -func (x *VolumeSpecPolicy) GetSnapshotSchedule() string { - if x, ok := x.GetSnapshotScheduleOpt().(*VolumeSpecPolicy_SnapshotSchedule); ok { - return x.SnapshotSchedule +func (m *VolumeSpecPolicy) GetSharedOpt() isVolumeSpecPolicy_SharedOpt { + if m != nil { + return m.SharedOpt } - return "" + return nil } - -func (m *VolumeSpecPolicy) GetScaleOpt() isVolumeSpecPolicy_ScaleOpt { +func (m *VolumeSpecPolicy) GetPassphraseOpt() isVolumeSpecPolicy_PassphraseOpt { if m != nil { - return m.ScaleOpt + return m.PassphraseOpt } return nil } - -func (x *VolumeSpecPolicy) GetScale() uint32 { - if x, ok := x.GetScaleOpt().(*VolumeSpecPolicy_Scale); ok { - return x.Scale +func (m *VolumeSpecPolicy) GetSnapshotScheduleOpt() isVolumeSpecPolicy_SnapshotScheduleOpt { + if m != nil { + return m.SnapshotScheduleOpt } - return 0 + return nil } - -func (m *VolumeSpecPolicy) GetStickyOpt() isVolumeSpecPolicy_StickyOpt { +func (m *VolumeSpecPolicy) GetScaleOpt() isVolumeSpecPolicy_ScaleOpt { if m != nil { - return m.StickyOpt + return m.ScaleOpt } return nil } - -func (x *VolumeSpecPolicy) GetSticky() bool { - if x, ok := x.GetStickyOpt().(*VolumeSpecPolicy_Sticky); ok { - return x.Sticky +func (m *VolumeSpecPolicy) GetStickyOpt() isVolumeSpecPolicy_StickyOpt { + if m != nil { + return m.StickyOpt } - return false + return nil } - func (m *VolumeSpecPolicy) GetGroupOpt() isVolumeSpecPolicy_GroupOpt { if m != nil { return m.GroupOpt } return nil } - -func (x *VolumeSpecPolicy) GetGroup() *Group { - if x, ok := x.GetGroupOpt().(*VolumeSpecPolicy_Group); ok { - return x.Group - } - return nil -} - func (m *VolumeSpecPolicy) GetJournalOpt() isVolumeSpecPolicy_JournalOpt { if m != nil { return m.JournalOpt } return nil } - -func (x *VolumeSpecPolicy) GetJournal() bool { - if x, ok := x.GetJournalOpt().(*VolumeSpecPolicy_Journal); ok { - return x.Journal - } - return false -} - func (m *VolumeSpecPolicy) GetSharedv4Opt() isVolumeSpecPolicy_Sharedv4Opt { if m != nil { return m.Sharedv4Opt } return nil } - -func (x *VolumeSpecPolicy) GetSharedv4() bool { - if x, ok := x.GetSharedv4Opt().(*VolumeSpecPolicy_Sharedv4); ok { - return x.Sharedv4 - } - return false -} - func (m *VolumeSpecPolicy) GetQueueDepthOpt() isVolumeSpecPolicy_QueueDepthOpt { if m != nil { return m.QueueDepthOpt } return nil } - -func (x *VolumeSpecPolicy) GetQueueDepth() uint32 { - if x, ok := x.GetQueueDepthOpt().(*VolumeSpecPolicy_QueueDepth); ok { - return x.QueueDepth - } - return 0 -} - func (m *VolumeSpecPolicy) GetEncryptedOpt() isVolumeSpecPolicy_EncryptedOpt { if m != nil { return m.EncryptedOpt } return nil } - -func (x *VolumeSpecPolicy) GetEncrypted() bool { - if x, ok := x.GetEncryptedOpt().(*VolumeSpecPolicy_Encrypted); ok { - return x.Encrypted - } - return false -} - func (m *VolumeSpecPolicy) GetAggregationLevelOpt() isVolumeSpecPolicy_AggregationLevelOpt { if m != nil { return m.AggregationLevelOpt } return nil } - -func (x *VolumeSpecPolicy) GetAggregationLevel() uint32 { - if x, ok := x.GetAggregationLevelOpt().(*VolumeSpecPolicy_AggregationLevel); ok { - return x.AggregationLevel - } - return 0 -} - -func (x *VolumeSpecPolicy) GetSizeOperator() VolumeSpecPolicy_PolicyOp { - if x != nil { - return x.SizeOperator - } - return VolumeSpecPolicy_Equal -} - -func (x *VolumeSpecPolicy) GetHaLevelOperator() VolumeSpecPolicy_PolicyOp { - if x != nil { - return x.HaLevelOperator - } - return VolumeSpecPolicy_Equal -} - -func (x *VolumeSpecPolicy) GetScaleOperator() VolumeSpecPolicy_PolicyOp { - if x != nil { - return x.ScaleOperator - } - return VolumeSpecPolicy_Equal -} - -func (x *VolumeSpecPolicy) GetSnapshotIntervalOperator() VolumeSpecPolicy_PolicyOp { - if x != nil { - return x.SnapshotIntervalOperator - } - return VolumeSpecPolicy_Equal -} - func (m *VolumeSpecPolicy) GetNodiscardOpt() isVolumeSpecPolicy_NodiscardOpt { if m != nil { return m.NodiscardOpt } return nil } - -func (x *VolumeSpecPolicy) GetNodiscard() bool { - if x, ok := x.GetNodiscardOpt().(*VolumeSpecPolicy_Nodiscard); ok { - return x.Nodiscard - } - return false -} - -func (x *VolumeSpecPolicy) GetIoStrategy() *IoStrategy { - if x != nil { - return x.IoStrategy - } - return nil -} - func (m *VolumeSpecPolicy) GetExportSpecOpt() isVolumeSpecPolicy_ExportSpecOpt { if m != nil { return m.ExportSpecOpt } return nil } - -func (x *VolumeSpecPolicy) GetExportSpec() *ExportSpec { - if x, ok := x.GetExportSpecOpt().(*VolumeSpecPolicy_ExportSpec); ok { - return x.ExportSpec - } - return nil -} - func (m *VolumeSpecPolicy) GetScanPolicyOpt() isVolumeSpecPolicy_ScanPolicyOpt { if m != nil { return m.ScanPolicyOpt } return nil } - -func (x *VolumeSpecPolicy) GetScanPolicy() *ScanPolicy { - if x, ok := x.GetScanPolicyOpt().(*VolumeSpecPolicy_ScanPolicy); ok { - return x.ScanPolicy +func (m *VolumeSpecPolicy) GetMountOpt() isVolumeSpecPolicy_MountOpt { + if m != nil { + return m.MountOpt } return nil } - -func (m *VolumeSpecPolicy) GetMountOpt() isVolumeSpecPolicy_MountOpt { +func (m *VolumeSpecPolicy) GetSharedv4MountOpt() isVolumeSpecPolicy_Sharedv4MountOpt { if m != nil { - return m.MountOpt + return m.Sharedv4MountOpt } return nil } - -func (x *VolumeSpecPolicy) GetMountOptSpec() *MountOptions { - if x, ok := x.GetMountOpt().(*VolumeSpecPolicy_MountOptSpec); ok { - return x.MountOptSpec +func (m *VolumeSpecPolicy) GetProxyWriteOpt() isVolumeSpecPolicy_ProxyWriteOpt { + if m != nil { + return m.ProxyWriteOpt } return nil } - -func (m *VolumeSpecPolicy) GetSharedv4MountOpt() isVolumeSpecPolicy_Sharedv4MountOpt { +func (m *VolumeSpecPolicy) GetProxySpecOpt() isVolumeSpecPolicy_ProxySpecOpt { if m != nil { - return m.Sharedv4MountOpt + return m.ProxySpecOpt } return nil } - -func (x *VolumeSpecPolicy) GetSharedv4MountOptSpec() *MountOptions { - if x, ok := x.GetSharedv4MountOpt().(*VolumeSpecPolicy_Sharedv4MountOptSpec); ok { - return x.Sharedv4MountOptSpec +func (m *VolumeSpecPolicy) GetFastpathOpt() isVolumeSpecPolicy_FastpathOpt { + if m != nil { + return m.FastpathOpt } return nil } - -func (m *VolumeSpecPolicy) GetProxyWriteOpt() isVolumeSpecPolicy_ProxyWriteOpt { +func (m *VolumeSpecPolicy) GetSharedv4ServiceSpecOpt() isVolumeSpecPolicy_Sharedv4ServiceSpecOpt { if m != nil { - return m.ProxyWriteOpt + return m.Sharedv4ServiceSpecOpt } return nil } - -func (x *VolumeSpecPolicy) GetProxyWrite() bool { - if x, ok := x.GetProxyWriteOpt().(*VolumeSpecPolicy_ProxyWrite); ok { - return x.ProxyWrite +func (m *VolumeSpecPolicy) GetSharedv4SpecOpt() isVolumeSpecPolicy_Sharedv4SpecOpt { + if m != nil { + return m.Sharedv4SpecOpt } - return false + return nil } - -func (m *VolumeSpecPolicy) GetProxySpecOpt() isVolumeSpecPolicy_ProxySpecOpt { +func (m *VolumeSpecPolicy) GetAutoFstrimOpt() isVolumeSpecPolicy_AutoFstrimOpt { if m != nil { - return m.ProxySpecOpt + return m.AutoFstrimOpt } return nil } - -func (x *VolumeSpecPolicy) GetProxySpec() *ProxySpec { - if x, ok := x.GetProxySpecOpt().(*VolumeSpecPolicy_ProxySpec); ok { - return x.ProxySpec +func (m *VolumeSpecPolicy) GetIoThrottleOpt() isVolumeSpecPolicy_IoThrottleOpt { + if m != nil { + return m.IoThrottleOpt } return nil } -func (m *VolumeSpecPolicy) GetFastpathOpt() isVolumeSpecPolicy_FastpathOpt { - if m != nil { - return m.FastpathOpt +func (m *VolumeSpecPolicy) GetSize() uint64 { + if x, ok := m.GetSizeOpt().(*VolumeSpecPolicy_Size); ok { + return x.Size } - return nil + return 0 } -func (x *VolumeSpecPolicy) GetFastpath() bool { - if x, ok := x.GetFastpathOpt().(*VolumeSpecPolicy_Fastpath); ok { - return x.Fastpath +func (m *VolumeSpecPolicy) GetHaLevel() int64 { + if x, ok := m.GetHaLevelOpt().(*VolumeSpecPolicy_HaLevel); ok { + return x.HaLevel } - return false + return 0 } -func (m *VolumeSpecPolicy) GetSharedv4ServiceSpecOpt() isVolumeSpecPolicy_Sharedv4ServiceSpecOpt { - if m != nil { - return m.Sharedv4ServiceSpecOpt +func (m *VolumeSpecPolicy) GetCos() CosType { + if x, ok := m.GetCosOpt().(*VolumeSpecPolicy_Cos); ok { + return x.Cos } - return nil + return CosType_NONE } -func (x *VolumeSpecPolicy) GetSharedv4ServiceSpec() *Sharedv4ServiceSpec { - if x, ok := x.GetSharedv4ServiceSpecOpt().(*VolumeSpecPolicy_Sharedv4ServiceSpec); ok { - return x.Sharedv4ServiceSpec +func (m *VolumeSpecPolicy) GetIoProfile() IoProfile { + if x, ok := m.GetIoProfileOpt().(*VolumeSpecPolicy_IoProfile); ok { + return x.IoProfile } - return nil + return IoProfile_IO_PROFILE_SEQUENTIAL } -func (m *VolumeSpecPolicy) GetSharedv4SpecOpt() isVolumeSpecPolicy_Sharedv4SpecOpt { - if m != nil { - return m.Sharedv4SpecOpt +func (m *VolumeSpecPolicy) GetDedupe() bool { + if x, ok := m.GetDedupeOpt().(*VolumeSpecPolicy_Dedupe); ok { + return x.Dedupe } - return nil + return false } -func (x *VolumeSpecPolicy) GetSharedv4Spec() *Sharedv4Spec { - if x, ok := x.GetSharedv4SpecOpt().(*VolumeSpecPolicy_Sharedv4Spec); ok { - return x.Sharedv4Spec +func (m *VolumeSpecPolicy) GetSnapshotInterval() uint32 { + if x, ok := m.GetSnapshotIntervalOpt().(*VolumeSpecPolicy_SnapshotInterval); ok { + return x.SnapshotInterval } - return nil + return 0 } -func (m *VolumeSpecPolicy) GetAutoFstrimOpt() isVolumeSpecPolicy_AutoFstrimOpt { +func (m *VolumeSpecPolicy) GetVolumeLabels() map[string]string { if m != nil { - return m.AutoFstrimOpt + return m.VolumeLabels } return nil } -func (x *VolumeSpecPolicy) GetAutoFstrim() bool { - if x, ok := x.GetAutoFstrimOpt().(*VolumeSpecPolicy_AutoFstrim); ok { - return x.AutoFstrim +func (m *VolumeSpecPolicy) GetShared() bool { + if x, ok := m.GetSharedOpt().(*VolumeSpecPolicy_Shared); ok { + return x.Shared } return false } -func (m *VolumeSpecPolicy) GetIoThrottleOpt() isVolumeSpecPolicy_IoThrottleOpt { +func (m *VolumeSpecPolicy) GetReplicaSet() *ReplicaSet { if m != nil { - return m.IoThrottleOpt + return m.ReplicaSet } return nil } -func (x *VolumeSpecPolicy) GetIoThrottle() *IoThrottle { - if x, ok := x.GetIoThrottleOpt().(*VolumeSpecPolicy_IoThrottle); ok { - return x.IoThrottle +func (m *VolumeSpecPolicy) GetPassphrase() string { + if x, ok := m.GetPassphraseOpt().(*VolumeSpecPolicy_Passphrase); ok { + return x.Passphrase } - return nil + return "" } -func (m *VolumeSpecPolicy) GetReadaheadOpt() isVolumeSpecPolicy_ReadaheadOpt { - if m != nil { - return m.ReadaheadOpt +func (m *VolumeSpecPolicy) GetSnapshotSchedule() string { + if x, ok := m.GetSnapshotScheduleOpt().(*VolumeSpecPolicy_SnapshotSchedule); ok { + return x.SnapshotSchedule } - return nil + return "" +} + +func (m *VolumeSpecPolicy) GetScale() uint32 { + if x, ok := m.GetScaleOpt().(*VolumeSpecPolicy_Scale); ok { + return x.Scale + } + return 0 } -func (x *VolumeSpecPolicy) GetReadahead() bool { - if x, ok := x.GetReadaheadOpt().(*VolumeSpecPolicy_Readahead); ok { - return x.Readahead +func (m *VolumeSpecPolicy) GetSticky() bool { + if x, ok := m.GetStickyOpt().(*VolumeSpecPolicy_Sticky); ok { + return x.Sticky } return false } -func (m *VolumeSpecPolicy) GetWinshareOpt() isVolumeSpecPolicy_WinshareOpt { - if m != nil { - return m.WinshareOpt +func (m *VolumeSpecPolicy) GetGroup() *Group { + if x, ok := m.GetGroupOpt().(*VolumeSpecPolicy_Group); ok { + return x.Group } return nil } -func (x *VolumeSpecPolicy) GetWinshare() bool { - if x, ok := x.GetWinshareOpt().(*VolumeSpecPolicy_Winshare); ok { - return x.Winshare +func (m *VolumeSpecPolicy) GetJournal() bool { + if x, ok := m.GetJournalOpt().(*VolumeSpecPolicy_Journal); ok { + return x.Journal } return false } -type isVolumeSpecPolicy_SizeOpt interface { - isVolumeSpecPolicy_SizeOpt() +func (m *VolumeSpecPolicy) GetSharedv4() bool { + if x, ok := m.GetSharedv4Opt().(*VolumeSpecPolicy_Sharedv4); ok { + return x.Sharedv4 + } + return false } -type VolumeSpecPolicy_Size struct { - Size uint64 `protobuf:"varint,1,opt,name=size,proto3,oneof"` +func (m *VolumeSpecPolicy) GetQueueDepth() uint32 { + if x, ok := m.GetQueueDepthOpt().(*VolumeSpecPolicy_QueueDepth); ok { + return x.QueueDepth + } + return 0 } -func (*VolumeSpecPolicy_Size) isVolumeSpecPolicy_SizeOpt() {} - -type isVolumeSpecPolicy_HaLevelOpt interface { - isVolumeSpecPolicy_HaLevelOpt() +func (m *VolumeSpecPolicy) GetEncrypted() bool { + if x, ok := m.GetEncryptedOpt().(*VolumeSpecPolicy_Encrypted); ok { + return x.Encrypted + } + return false } -type VolumeSpecPolicy_HaLevel struct { - HaLevel int64 `protobuf:"varint,2,opt,name=ha_level,json=haLevel,proto3,oneof"` +func (m *VolumeSpecPolicy) GetAggregationLevel() uint32 { + if x, ok := m.GetAggregationLevelOpt().(*VolumeSpecPolicy_AggregationLevel); ok { + return x.AggregationLevel + } + return 0 } -func (*VolumeSpecPolicy_HaLevel) isVolumeSpecPolicy_HaLevelOpt() {} - -type isVolumeSpecPolicy_CosOpt interface { - isVolumeSpecPolicy_CosOpt() +func (m *VolumeSpecPolicy) GetSizeOperator() VolumeSpecPolicy_PolicyOp { + if m != nil { + return m.SizeOperator + } + return VolumeSpecPolicy_Equal } -type VolumeSpecPolicy_Cos struct { - Cos CosType `protobuf:"varint,3,opt,name=cos,proto3,enum=openstorage.api.CosType,oneof"` +func (m *VolumeSpecPolicy) GetHaLevelOperator() VolumeSpecPolicy_PolicyOp { + if m != nil { + return m.HaLevelOperator + } + return VolumeSpecPolicy_Equal } -func (*VolumeSpecPolicy_Cos) isVolumeSpecPolicy_CosOpt() {} - -type isVolumeSpecPolicy_IoProfileOpt interface { - isVolumeSpecPolicy_IoProfileOpt() +func (m *VolumeSpecPolicy) GetScaleOperator() VolumeSpecPolicy_PolicyOp { + if m != nil { + return m.ScaleOperator + } + return VolumeSpecPolicy_Equal } -type VolumeSpecPolicy_IoProfile struct { - IoProfile IoProfile `protobuf:"varint,4,opt,name=io_profile,json=ioProfile,proto3,enum=openstorage.api.IoProfile,oneof"` +func (m *VolumeSpecPolicy) GetSnapshotIntervalOperator() VolumeSpecPolicy_PolicyOp { + if m != nil { + return m.SnapshotIntervalOperator + } + return VolumeSpecPolicy_Equal } -func (*VolumeSpecPolicy_IoProfile) isVolumeSpecPolicy_IoProfileOpt() {} - -type isVolumeSpecPolicy_DedupeOpt interface { - isVolumeSpecPolicy_DedupeOpt() +func (m *VolumeSpecPolicy) GetNodiscard() bool { + if x, ok := m.GetNodiscardOpt().(*VolumeSpecPolicy_Nodiscard); ok { + return x.Nodiscard + } + return false } -type VolumeSpecPolicy_Dedupe struct { - Dedupe bool `protobuf:"varint,5,opt,name=dedupe,proto3,oneof"` +func (m *VolumeSpecPolicy) GetIoStrategy() *IoStrategy { + if m != nil { + return m.IoStrategy + } + return nil } -func (*VolumeSpecPolicy_Dedupe) isVolumeSpecPolicy_DedupeOpt() {} - -type isVolumeSpecPolicy_SnapshotIntervalOpt interface { - isVolumeSpecPolicy_SnapshotIntervalOpt() +func (m *VolumeSpecPolicy) GetExportSpec() *ExportSpec { + if x, ok := m.GetExportSpecOpt().(*VolumeSpecPolicy_ExportSpec); ok { + return x.ExportSpec + } + return nil } -type VolumeSpecPolicy_SnapshotInterval struct { - SnapshotInterval uint32 `protobuf:"varint,6,opt,name=snapshot_interval,json=snapshotInterval,proto3,oneof"` +func (m *VolumeSpecPolicy) GetScanPolicy() *ScanPolicy { + if x, ok := m.GetScanPolicyOpt().(*VolumeSpecPolicy_ScanPolicy); ok { + return x.ScanPolicy + } + return nil } -func (*VolumeSpecPolicy_SnapshotInterval) isVolumeSpecPolicy_SnapshotIntervalOpt() {} - -type isVolumeSpecPolicy_SharedOpt interface { - isVolumeSpecPolicy_SharedOpt() +func (m *VolumeSpecPolicy) GetMountOptSpec() *MountOptions { + if x, ok := m.GetMountOpt().(*VolumeSpecPolicy_MountOptSpec); ok { + return x.MountOptSpec + } + return nil } -type VolumeSpecPolicy_Shared struct { - Shared bool `protobuf:"varint,8,opt,name=shared,proto3,oneof"` +func (m *VolumeSpecPolicy) GetSharedv4MountOptSpec() *MountOptions { + if x, ok := m.GetSharedv4MountOpt().(*VolumeSpecPolicy_Sharedv4MountOptSpec); ok { + return x.Sharedv4MountOptSpec + } + return nil } -func (*VolumeSpecPolicy_Shared) isVolumeSpecPolicy_SharedOpt() {} - -type isVolumeSpecPolicy_PassphraseOpt interface { - isVolumeSpecPolicy_PassphraseOpt() +func (m *VolumeSpecPolicy) GetProxyWrite() bool { + if x, ok := m.GetProxyWriteOpt().(*VolumeSpecPolicy_ProxyWrite); ok { + return x.ProxyWrite + } + return false } -type VolumeSpecPolicy_Passphrase struct { - Passphrase string `protobuf:"bytes,10,opt,name=passphrase,proto3,oneof"` +func (m *VolumeSpecPolicy) GetProxySpec() *ProxySpec { + if x, ok := m.GetProxySpecOpt().(*VolumeSpecPolicy_ProxySpec); ok { + return x.ProxySpec + } + return nil } -func (*VolumeSpecPolicy_Passphrase) isVolumeSpecPolicy_PassphraseOpt() {} - -type isVolumeSpecPolicy_SnapshotScheduleOpt interface { - isVolumeSpecPolicy_SnapshotScheduleOpt() +func (m *VolumeSpecPolicy) GetFastpath() bool { + if x, ok := m.GetFastpathOpt().(*VolumeSpecPolicy_Fastpath); ok { + return x.Fastpath + } + return false } -type VolumeSpecPolicy_SnapshotSchedule struct { - SnapshotSchedule string `protobuf:"bytes,11,opt,name=snapshot_schedule,json=snapshotSchedule,proto3,oneof"` +func (m *VolumeSpecPolicy) GetSharedv4ServiceSpec() *Sharedv4ServiceSpec { + if x, ok := m.GetSharedv4ServiceSpecOpt().(*VolumeSpecPolicy_Sharedv4ServiceSpec); ok { + return x.Sharedv4ServiceSpec + } + return nil } -func (*VolumeSpecPolicy_SnapshotSchedule) isVolumeSpecPolicy_SnapshotScheduleOpt() {} - -type isVolumeSpecPolicy_ScaleOpt interface { - isVolumeSpecPolicy_ScaleOpt() +func (m *VolumeSpecPolicy) GetSharedv4Spec() *Sharedv4Spec { + if x, ok := m.GetSharedv4SpecOpt().(*VolumeSpecPolicy_Sharedv4Spec); ok { + return x.Sharedv4Spec + } + return nil } -type VolumeSpecPolicy_Scale struct { - Scale uint32 `protobuf:"varint,12,opt,name=scale,proto3,oneof"` +func (m *VolumeSpecPolicy) GetAutoFstrim() bool { + if x, ok := m.GetAutoFstrimOpt().(*VolumeSpecPolicy_AutoFstrim); ok { + return x.AutoFstrim + } + return false } -func (*VolumeSpecPolicy_Scale) isVolumeSpecPolicy_ScaleOpt() {} - -type isVolumeSpecPolicy_StickyOpt interface { - isVolumeSpecPolicy_StickyOpt() +func (m *VolumeSpecPolicy) GetIoThrottle() *IoThrottle { + if x, ok := m.GetIoThrottleOpt().(*VolumeSpecPolicy_IoThrottle); ok { + return x.IoThrottle + } + return nil } -type VolumeSpecPolicy_Sticky struct { - Sticky bool `protobuf:"varint,13,opt,name=sticky,proto3,oneof"` +// XXX_OneofFuncs is for the internal use of the proto package. +func (*VolumeSpecPolicy) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _VolumeSpecPolicy_OneofMarshaler, _VolumeSpecPolicy_OneofUnmarshaler, _VolumeSpecPolicy_OneofSizer, []interface{}{ + (*VolumeSpecPolicy_Size)(nil), + (*VolumeSpecPolicy_HaLevel)(nil), + (*VolumeSpecPolicy_Cos)(nil), + (*VolumeSpecPolicy_IoProfile)(nil), + (*VolumeSpecPolicy_Dedupe)(nil), + (*VolumeSpecPolicy_SnapshotInterval)(nil), + (*VolumeSpecPolicy_Shared)(nil), + (*VolumeSpecPolicy_Passphrase)(nil), + (*VolumeSpecPolicy_SnapshotSchedule)(nil), + (*VolumeSpecPolicy_Scale)(nil), + (*VolumeSpecPolicy_Sticky)(nil), + (*VolumeSpecPolicy_Group)(nil), + (*VolumeSpecPolicy_Journal)(nil), + (*VolumeSpecPolicy_Sharedv4)(nil), + (*VolumeSpecPolicy_QueueDepth)(nil), + (*VolumeSpecPolicy_Encrypted)(nil), + (*VolumeSpecPolicy_AggregationLevel)(nil), + (*VolumeSpecPolicy_Nodiscard)(nil), + (*VolumeSpecPolicy_ExportSpec)(nil), + (*VolumeSpecPolicy_ScanPolicy)(nil), + (*VolumeSpecPolicy_MountOptSpec)(nil), + (*VolumeSpecPolicy_Sharedv4MountOptSpec)(nil), + (*VolumeSpecPolicy_ProxyWrite)(nil), + (*VolumeSpecPolicy_ProxySpec)(nil), + (*VolumeSpecPolicy_Fastpath)(nil), + (*VolumeSpecPolicy_Sharedv4ServiceSpec)(nil), + (*VolumeSpecPolicy_Sharedv4Spec)(nil), + (*VolumeSpecPolicy_AutoFstrim)(nil), + (*VolumeSpecPolicy_IoThrottle)(nil), + } } -func (*VolumeSpecPolicy_Sticky) isVolumeSpecPolicy_StickyOpt() {} - -type isVolumeSpecPolicy_GroupOpt interface { - isVolumeSpecPolicy_GroupOpt() +func _VolumeSpecPolicy_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*VolumeSpecPolicy) + // size_opt + switch x := m.SizeOpt.(type) { + case *VolumeSpecPolicy_Size: + b.EncodeVarint(1<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.Size)) + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.SizeOpt has unexpected type %T", x) + } + // ha_level_opt + switch x := m.HaLevelOpt.(type) { + case *VolumeSpecPolicy_HaLevel: + b.EncodeVarint(2<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.HaLevel)) + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.HaLevelOpt has unexpected type %T", x) + } + // cos_opt + switch x := m.CosOpt.(type) { + case *VolumeSpecPolicy_Cos: + b.EncodeVarint(3<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.Cos)) + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.CosOpt has unexpected type %T", x) + } + // io_profile_opt + switch x := m.IoProfileOpt.(type) { + case *VolumeSpecPolicy_IoProfile: + b.EncodeVarint(4<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.IoProfile)) + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.IoProfileOpt has unexpected type %T", x) + } + // dedupe_opt + switch x := m.DedupeOpt.(type) { + case *VolumeSpecPolicy_Dedupe: + t := uint64(0) + if x.Dedupe { + t = 1 + } + b.EncodeVarint(5<<3 | proto.WireVarint) + b.EncodeVarint(t) + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.DedupeOpt has unexpected type %T", x) + } + // snapshot_interval_opt + switch x := m.SnapshotIntervalOpt.(type) { + case *VolumeSpecPolicy_SnapshotInterval: + b.EncodeVarint(6<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.SnapshotInterval)) + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.SnapshotIntervalOpt has unexpected type %T", x) + } + // shared_opt + switch x := m.SharedOpt.(type) { + case *VolumeSpecPolicy_Shared: + t := uint64(0) + if x.Shared { + t = 1 + } + b.EncodeVarint(8<<3 | proto.WireVarint) + b.EncodeVarint(t) + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.SharedOpt has unexpected type %T", x) + } + // passphrase_opt + switch x := m.PassphraseOpt.(type) { + case *VolumeSpecPolicy_Passphrase: + b.EncodeVarint(10<<3 | proto.WireBytes) + b.EncodeStringBytes(x.Passphrase) + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.PassphraseOpt has unexpected type %T", x) + } + // snapshot_schedule_opt + switch x := m.SnapshotScheduleOpt.(type) { + case *VolumeSpecPolicy_SnapshotSchedule: + b.EncodeVarint(11<<3 | proto.WireBytes) + b.EncodeStringBytes(x.SnapshotSchedule) + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.SnapshotScheduleOpt has unexpected type %T", x) + } + // scale_opt + switch x := m.ScaleOpt.(type) { + case *VolumeSpecPolicy_Scale: + b.EncodeVarint(12<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.Scale)) + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.ScaleOpt has unexpected type %T", x) + } + // sticky_opt + switch x := m.StickyOpt.(type) { + case *VolumeSpecPolicy_Sticky: + t := uint64(0) + if x.Sticky { + t = 1 + } + b.EncodeVarint(13<<3 | proto.WireVarint) + b.EncodeVarint(t) + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.StickyOpt has unexpected type %T", x) + } + // group_opt + switch x := m.GroupOpt.(type) { + case *VolumeSpecPolicy_Group: + b.EncodeVarint(14<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Group); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.GroupOpt has unexpected type %T", x) + } + // journal_opt + switch x := m.JournalOpt.(type) { + case *VolumeSpecPolicy_Journal: + t := uint64(0) + if x.Journal { + t = 1 + } + b.EncodeVarint(15<<3 | proto.WireVarint) + b.EncodeVarint(t) + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.JournalOpt has unexpected type %T", x) + } + // sharedv4_opt + switch x := m.Sharedv4Opt.(type) { + case *VolumeSpecPolicy_Sharedv4: + t := uint64(0) + if x.Sharedv4 { + t = 1 + } + b.EncodeVarint(16<<3 | proto.WireVarint) + b.EncodeVarint(t) + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.Sharedv4Opt has unexpected type %T", x) + } + // queue_depth_opt + switch x := m.QueueDepthOpt.(type) { + case *VolumeSpecPolicy_QueueDepth: + b.EncodeVarint(17<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.QueueDepth)) + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.QueueDepthOpt has unexpected type %T", x) + } + // encrypted_opt + switch x := m.EncryptedOpt.(type) { + case *VolumeSpecPolicy_Encrypted: + t := uint64(0) + if x.Encrypted { + t = 1 + } + b.EncodeVarint(18<<3 | proto.WireVarint) + b.EncodeVarint(t) + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.EncryptedOpt has unexpected type %T", x) + } + // aggregation_level_opt + switch x := m.AggregationLevelOpt.(type) { + case *VolumeSpecPolicy_AggregationLevel: + b.EncodeVarint(19<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.AggregationLevel)) + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.AggregationLevelOpt has unexpected type %T", x) + } + // nodiscard_opt + switch x := m.NodiscardOpt.(type) { + case *VolumeSpecPolicy_Nodiscard: + t := uint64(0) + if x.Nodiscard { + t = 1 + } + b.EncodeVarint(54<<3 | proto.WireVarint) + b.EncodeVarint(t) + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.NodiscardOpt has unexpected type %T", x) + } + // export_spec_opt + switch x := m.ExportSpecOpt.(type) { + case *VolumeSpecPolicy_ExportSpec: + b.EncodeVarint(56<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.ExportSpec); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.ExportSpecOpt has unexpected type %T", x) + } + // scan_policy_opt + switch x := m.ScanPolicyOpt.(type) { + case *VolumeSpecPolicy_ScanPolicy: + b.EncodeVarint(57<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.ScanPolicy); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.ScanPolicyOpt has unexpected type %T", x) + } + // mount_opt + switch x := m.MountOpt.(type) { + case *VolumeSpecPolicy_MountOptSpec: + b.EncodeVarint(58<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.MountOptSpec); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.MountOpt has unexpected type %T", x) + } + // sharedv4_mount_opt + switch x := m.Sharedv4MountOpt.(type) { + case *VolumeSpecPolicy_Sharedv4MountOptSpec: + b.EncodeVarint(59<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Sharedv4MountOptSpec); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.Sharedv4MountOpt has unexpected type %T", x) + } + // proxy_write_opt + switch x := m.ProxyWriteOpt.(type) { + case *VolumeSpecPolicy_ProxyWrite: + t := uint64(0) + if x.ProxyWrite { + t = 1 + } + b.EncodeVarint(60<<3 | proto.WireVarint) + b.EncodeVarint(t) + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.ProxyWriteOpt has unexpected type %T", x) + } + // proxy_spec_opt + switch x := m.ProxySpecOpt.(type) { + case *VolumeSpecPolicy_ProxySpec: + b.EncodeVarint(61<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.ProxySpec); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.ProxySpecOpt has unexpected type %T", x) + } + // fastpath_opt + switch x := m.FastpathOpt.(type) { + case *VolumeSpecPolicy_Fastpath: + t := uint64(0) + if x.Fastpath { + t = 1 + } + b.EncodeVarint(62<<3 | proto.WireVarint) + b.EncodeVarint(t) + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.FastpathOpt has unexpected type %T", x) + } + // sharedv4_service_spec_opt + switch x := m.Sharedv4ServiceSpecOpt.(type) { + case *VolumeSpecPolicy_Sharedv4ServiceSpec: + b.EncodeVarint(63<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Sharedv4ServiceSpec); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.Sharedv4ServiceSpecOpt has unexpected type %T", x) + } + // sharedv4_spec_opt + switch x := m.Sharedv4SpecOpt.(type) { + case *VolumeSpecPolicy_Sharedv4Spec: + b.EncodeVarint(64<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Sharedv4Spec); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.Sharedv4SpecOpt has unexpected type %T", x) + } + // auto_fstrim_opt + switch x := m.AutoFstrimOpt.(type) { + case *VolumeSpecPolicy_AutoFstrim: + t := uint64(0) + if x.AutoFstrim { + t = 1 + } + b.EncodeVarint(65<<3 | proto.WireVarint) + b.EncodeVarint(t) + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.AutoFstrimOpt has unexpected type %T", x) + } + // io_throttle_opt + switch x := m.IoThrottleOpt.(type) { + case *VolumeSpecPolicy_IoThrottle: + b.EncodeVarint(66<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.IoThrottle); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("VolumeSpecPolicy.IoThrottleOpt has unexpected type %T", x) + } + return nil +} + +func _VolumeSpecPolicy_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*VolumeSpecPolicy) + switch tag { + case 1: // size_opt.size + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.SizeOpt = &VolumeSpecPolicy_Size{x} + return true, err + case 2: // ha_level_opt.ha_level + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.HaLevelOpt = &VolumeSpecPolicy_HaLevel{int64(x)} + return true, err + case 3: // cos_opt.cos + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.CosOpt = &VolumeSpecPolicy_Cos{CosType(x)} + return true, err + case 4: // io_profile_opt.io_profile + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.IoProfileOpt = &VolumeSpecPolicy_IoProfile{IoProfile(x)} + return true, err + case 5: // dedupe_opt.dedupe + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.DedupeOpt = &VolumeSpecPolicy_Dedupe{x != 0} + return true, err + case 6: // snapshot_interval_opt.snapshot_interval + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.SnapshotIntervalOpt = &VolumeSpecPolicy_SnapshotInterval{uint32(x)} + return true, err + case 8: // shared_opt.shared + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.SharedOpt = &VolumeSpecPolicy_Shared{x != 0} + return true, err + case 10: // passphrase_opt.passphrase + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeStringBytes() + m.PassphraseOpt = &VolumeSpecPolicy_Passphrase{x} + return true, err + case 11: // snapshot_schedule_opt.snapshot_schedule + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeStringBytes() + m.SnapshotScheduleOpt = &VolumeSpecPolicy_SnapshotSchedule{x} + return true, err + case 12: // scale_opt.scale + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.ScaleOpt = &VolumeSpecPolicy_Scale{uint32(x)} + return true, err + case 13: // sticky_opt.sticky + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.StickyOpt = &VolumeSpecPolicy_Sticky{x != 0} + return true, err + case 14: // group_opt.group + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Group) + err := b.DecodeMessage(msg) + m.GroupOpt = &VolumeSpecPolicy_Group{msg} + return true, err + case 15: // journal_opt.journal + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.JournalOpt = &VolumeSpecPolicy_Journal{x != 0} + return true, err + case 16: // sharedv4_opt.sharedv4 + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.Sharedv4Opt = &VolumeSpecPolicy_Sharedv4{x != 0} + return true, err + case 17: // queue_depth_opt.queue_depth + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.QueueDepthOpt = &VolumeSpecPolicy_QueueDepth{uint32(x)} + return true, err + case 18: // encrypted_opt.encrypted + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.EncryptedOpt = &VolumeSpecPolicy_Encrypted{x != 0} + return true, err + case 19: // aggregation_level_opt.aggregation_level + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.AggregationLevelOpt = &VolumeSpecPolicy_AggregationLevel{uint32(x)} + return true, err + case 54: // nodiscard_opt.nodiscard + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.NodiscardOpt = &VolumeSpecPolicy_Nodiscard{x != 0} + return true, err + case 56: // export_spec_opt.export_spec + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(ExportSpec) + err := b.DecodeMessage(msg) + m.ExportSpecOpt = &VolumeSpecPolicy_ExportSpec{msg} + return true, err + case 57: // scan_policy_opt.scan_policy + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(ScanPolicy) + err := b.DecodeMessage(msg) + m.ScanPolicyOpt = &VolumeSpecPolicy_ScanPolicy{msg} + return true, err + case 58: // mount_opt.mount_opt_spec + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(MountOptions) + err := b.DecodeMessage(msg) + m.MountOpt = &VolumeSpecPolicy_MountOptSpec{msg} + return true, err + case 59: // sharedv4_mount_opt.sharedv4_mount_opt_spec + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(MountOptions) + err := b.DecodeMessage(msg) + m.Sharedv4MountOpt = &VolumeSpecPolicy_Sharedv4MountOptSpec{msg} + return true, err + case 60: // proxy_write_opt.proxy_write + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.ProxyWriteOpt = &VolumeSpecPolicy_ProxyWrite{x != 0} + return true, err + case 61: // proxy_spec_opt.proxy_spec + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(ProxySpec) + err := b.DecodeMessage(msg) + m.ProxySpecOpt = &VolumeSpecPolicy_ProxySpec{msg} + return true, err + case 62: // fastpath_opt.fastpath + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.FastpathOpt = &VolumeSpecPolicy_Fastpath{x != 0} + return true, err + case 63: // sharedv4_service_spec_opt.sharedv4_service_spec + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Sharedv4ServiceSpec) + err := b.DecodeMessage(msg) + m.Sharedv4ServiceSpecOpt = &VolumeSpecPolicy_Sharedv4ServiceSpec{msg} + return true, err + case 64: // sharedv4_spec_opt.sharedv4_spec + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Sharedv4Spec) + err := b.DecodeMessage(msg) + m.Sharedv4SpecOpt = &VolumeSpecPolicy_Sharedv4Spec{msg} + return true, err + case 65: // auto_fstrim_opt.auto_fstrim + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.AutoFstrimOpt = &VolumeSpecPolicy_AutoFstrim{x != 0} + return true, err + case 66: // io_throttle_opt.io_throttle + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(IoThrottle) + err := b.DecodeMessage(msg) + m.IoThrottleOpt = &VolumeSpecPolicy_IoThrottle{msg} + return true, err + default: + return false, nil + } +} + +func _VolumeSpecPolicy_OneofSizer(msg proto.Message) (n int) { + m := msg.(*VolumeSpecPolicy) + // size_opt + switch x := m.SizeOpt.(type) { + case *VolumeSpecPolicy_Size: + n += 1 // tag and wire + n += proto.SizeVarint(uint64(x.Size)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // ha_level_opt + switch x := m.HaLevelOpt.(type) { + case *VolumeSpecPolicy_HaLevel: + n += 1 // tag and wire + n += proto.SizeVarint(uint64(x.HaLevel)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // cos_opt + switch x := m.CosOpt.(type) { + case *VolumeSpecPolicy_Cos: + n += 1 // tag and wire + n += proto.SizeVarint(uint64(x.Cos)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // io_profile_opt + switch x := m.IoProfileOpt.(type) { + case *VolumeSpecPolicy_IoProfile: + n += 1 // tag and wire + n += proto.SizeVarint(uint64(x.IoProfile)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // dedupe_opt + switch x := m.DedupeOpt.(type) { + case *VolumeSpecPolicy_Dedupe: + n += 1 // tag and wire + n += 1 + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // snapshot_interval_opt + switch x := m.SnapshotIntervalOpt.(type) { + case *VolumeSpecPolicy_SnapshotInterval: + n += 1 // tag and wire + n += proto.SizeVarint(uint64(x.SnapshotInterval)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // shared_opt + switch x := m.SharedOpt.(type) { + case *VolumeSpecPolicy_Shared: + n += 1 // tag and wire + n += 1 + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // passphrase_opt + switch x := m.PassphraseOpt.(type) { + case *VolumeSpecPolicy_Passphrase: + n += 1 // tag and wire + n += proto.SizeVarint(uint64(len(x.Passphrase))) + n += len(x.Passphrase) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // snapshot_schedule_opt + switch x := m.SnapshotScheduleOpt.(type) { + case *VolumeSpecPolicy_SnapshotSchedule: + n += 1 // tag and wire + n += proto.SizeVarint(uint64(len(x.SnapshotSchedule))) + n += len(x.SnapshotSchedule) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // scale_opt + switch x := m.ScaleOpt.(type) { + case *VolumeSpecPolicy_Scale: + n += 1 // tag and wire + n += proto.SizeVarint(uint64(x.Scale)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // sticky_opt + switch x := m.StickyOpt.(type) { + case *VolumeSpecPolicy_Sticky: + n += 1 // tag and wire + n += 1 + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // group_opt + switch x := m.GroupOpt.(type) { + case *VolumeSpecPolicy_Group: + s := proto.Size(x.Group) + n += 1 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // journal_opt + switch x := m.JournalOpt.(type) { + case *VolumeSpecPolicy_Journal: + n += 1 // tag and wire + n += 1 + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // sharedv4_opt + switch x := m.Sharedv4Opt.(type) { + case *VolumeSpecPolicy_Sharedv4: + n += 2 // tag and wire + n += 1 + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // queue_depth_opt + switch x := m.QueueDepthOpt.(type) { + case *VolumeSpecPolicy_QueueDepth: + n += 2 // tag and wire + n += proto.SizeVarint(uint64(x.QueueDepth)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // encrypted_opt + switch x := m.EncryptedOpt.(type) { + case *VolumeSpecPolicy_Encrypted: + n += 2 // tag and wire + n += 1 + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // aggregation_level_opt + switch x := m.AggregationLevelOpt.(type) { + case *VolumeSpecPolicy_AggregationLevel: + n += 2 // tag and wire + n += proto.SizeVarint(uint64(x.AggregationLevel)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // nodiscard_opt + switch x := m.NodiscardOpt.(type) { + case *VolumeSpecPolicy_Nodiscard: + n += 2 // tag and wire + n += 1 + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // export_spec_opt + switch x := m.ExportSpecOpt.(type) { + case *VolumeSpecPolicy_ExportSpec: + s := proto.Size(x.ExportSpec) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // scan_policy_opt + switch x := m.ScanPolicyOpt.(type) { + case *VolumeSpecPolicy_ScanPolicy: + s := proto.Size(x.ScanPolicy) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // mount_opt + switch x := m.MountOpt.(type) { + case *VolumeSpecPolicy_MountOptSpec: + s := proto.Size(x.MountOptSpec) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // sharedv4_mount_opt + switch x := m.Sharedv4MountOpt.(type) { + case *VolumeSpecPolicy_Sharedv4MountOptSpec: + s := proto.Size(x.Sharedv4MountOptSpec) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // proxy_write_opt + switch x := m.ProxyWriteOpt.(type) { + case *VolumeSpecPolicy_ProxyWrite: + n += 2 // tag and wire + n += 1 + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // proxy_spec_opt + switch x := m.ProxySpecOpt.(type) { + case *VolumeSpecPolicy_ProxySpec: + s := proto.Size(x.ProxySpec) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // fastpath_opt + switch x := m.FastpathOpt.(type) { + case *VolumeSpecPolicy_Fastpath: + n += 2 // tag and wire + n += 1 + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // sharedv4_service_spec_opt + switch x := m.Sharedv4ServiceSpecOpt.(type) { + case *VolumeSpecPolicy_Sharedv4ServiceSpec: + s := proto.Size(x.Sharedv4ServiceSpec) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // sharedv4_spec_opt + switch x := m.Sharedv4SpecOpt.(type) { + case *VolumeSpecPolicy_Sharedv4Spec: + s := proto.Size(x.Sharedv4Spec) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // auto_fstrim_opt + switch x := m.AutoFstrimOpt.(type) { + case *VolumeSpecPolicy_AutoFstrim: + n += 2 // tag and wire + n += 1 + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + // io_throttle_opt + switch x := m.IoThrottleOpt.(type) { + case *VolumeSpecPolicy_IoThrottle: + s := proto.Size(x.IoThrottle) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n } -type VolumeSpecPolicy_Group struct { - Group *Group `protobuf:"bytes,14,opt,name=group,proto3,oneof"` +// ReplicaSet set of machine IDs (nodes) to which part of this volume is erasure +// coded - for clustered storage arrays +type ReplicaSet struct { + Nodes []string `protobuf:"bytes,1,rep,name=nodes" json:"nodes,omitempty"` + // Unique IDs of the storage pools for this replica set + PoolUuids []string `protobuf:"bytes,2,rep,name=pool_uuids,json=poolUuids" json:"pool_uuids,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (*VolumeSpecPolicy_Group) isVolumeSpecPolicy_GroupOpt() {} - -type isVolumeSpecPolicy_JournalOpt interface { - isVolumeSpecPolicy_JournalOpt() +func (m *ReplicaSet) Reset() { *m = ReplicaSet{} } +func (m *ReplicaSet) String() string { return proto.CompactTextString(m) } +func (*ReplicaSet) ProtoMessage() {} +func (*ReplicaSet) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{29} } - -type VolumeSpecPolicy_Journal struct { - Journal bool `protobuf:"varint,15,opt,name=journal,proto3,oneof"` +func (m *ReplicaSet) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ReplicaSet.Unmarshal(m, b) } - -func (*VolumeSpecPolicy_Journal) isVolumeSpecPolicy_JournalOpt() {} - -type isVolumeSpecPolicy_Sharedv4Opt interface { - isVolumeSpecPolicy_Sharedv4Opt() +func (m *ReplicaSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ReplicaSet.Marshal(b, m, deterministic) } - -type VolumeSpecPolicy_Sharedv4 struct { - Sharedv4 bool `protobuf:"varint,16,opt,name=sharedv4,proto3,oneof"` +func (dst *ReplicaSet) XXX_Merge(src proto.Message) { + xxx_messageInfo_ReplicaSet.Merge(dst, src) } - -func (*VolumeSpecPolicy_Sharedv4) isVolumeSpecPolicy_Sharedv4Opt() {} - -type isVolumeSpecPolicy_QueueDepthOpt interface { - isVolumeSpecPolicy_QueueDepthOpt() +func (m *ReplicaSet) XXX_Size() int { + return xxx_messageInfo_ReplicaSet.Size(m) +} +func (m *ReplicaSet) XXX_DiscardUnknown() { + xxx_messageInfo_ReplicaSet.DiscardUnknown(m) } -type VolumeSpecPolicy_QueueDepth struct { - QueueDepth uint32 `protobuf:"varint,17,opt,name=queue_depth,json=queueDepth,proto3,oneof"` -} - -func (*VolumeSpecPolicy_QueueDepth) isVolumeSpecPolicy_QueueDepthOpt() {} - -type isVolumeSpecPolicy_EncryptedOpt interface { - isVolumeSpecPolicy_EncryptedOpt() -} - -type VolumeSpecPolicy_Encrypted struct { - Encrypted bool `protobuf:"varint,18,opt,name=encrypted,proto3,oneof"` -} - -func (*VolumeSpecPolicy_Encrypted) isVolumeSpecPolicy_EncryptedOpt() {} - -type isVolumeSpecPolicy_AggregationLevelOpt interface { - isVolumeSpecPolicy_AggregationLevelOpt() -} - -type VolumeSpecPolicy_AggregationLevel struct { - AggregationLevel uint32 `protobuf:"varint,19,opt,name=aggregation_level,json=aggregationLevel,proto3,oneof"` -} - -func (*VolumeSpecPolicy_AggregationLevel) isVolumeSpecPolicy_AggregationLevelOpt() {} - -type isVolumeSpecPolicy_NodiscardOpt interface { - isVolumeSpecPolicy_NodiscardOpt() -} - -type VolumeSpecPolicy_Nodiscard struct { - Nodiscard bool `protobuf:"varint,54,opt,name=nodiscard,proto3,oneof"` -} - -func (*VolumeSpecPolicy_Nodiscard) isVolumeSpecPolicy_NodiscardOpt() {} - -type isVolumeSpecPolicy_ExportSpecOpt interface { - isVolumeSpecPolicy_ExportSpecOpt() -} - -type VolumeSpecPolicy_ExportSpec struct { - ExportSpec *ExportSpec `protobuf:"bytes,56,opt,name=export_spec,json=exportSpec,proto3,oneof"` -} - -func (*VolumeSpecPolicy_ExportSpec) isVolumeSpecPolicy_ExportSpecOpt() {} - -type isVolumeSpecPolicy_ScanPolicyOpt interface { - isVolumeSpecPolicy_ScanPolicyOpt() -} +var xxx_messageInfo_ReplicaSet proto.InternalMessageInfo -type VolumeSpecPolicy_ScanPolicy struct { - ScanPolicy *ScanPolicy `protobuf:"bytes,57,opt,name=scan_policy,json=scanPolicy,proto3,oneof"` +func (m *ReplicaSet) GetNodes() []string { + if m != nil { + return m.Nodes + } + return nil } -func (*VolumeSpecPolicy_ScanPolicy) isVolumeSpecPolicy_ScanPolicyOpt() {} - -type isVolumeSpecPolicy_MountOpt interface { - isVolumeSpecPolicy_MountOpt() +func (m *ReplicaSet) GetPoolUuids() []string { + if m != nil { + return m.PoolUuids + } + return nil } -type VolumeSpecPolicy_MountOptSpec struct { - MountOptSpec *MountOptions `protobuf:"bytes,58,opt,name=mount_opt_spec,json=mountOptSpec,proto3,oneof"` +// RuntimeStateMap is a list of name value mapping of driver specific runtime +// information. +type RuntimeStateMap struct { + RuntimeState map[string]string `protobuf:"bytes,1,rep,name=runtime_state,json=runtimeState" json:"runtime_state,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (*VolumeSpecPolicy_MountOptSpec) isVolumeSpecPolicy_MountOpt() {} - -type isVolumeSpecPolicy_Sharedv4MountOpt interface { - isVolumeSpecPolicy_Sharedv4MountOpt() +func (m *RuntimeStateMap) Reset() { *m = RuntimeStateMap{} } +func (m *RuntimeStateMap) String() string { return proto.CompactTextString(m) } +func (*RuntimeStateMap) ProtoMessage() {} +func (*RuntimeStateMap) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{30} } - -type VolumeSpecPolicy_Sharedv4MountOptSpec struct { - Sharedv4MountOptSpec *MountOptions `protobuf:"bytes,59,opt,name=sharedv4_mount_opt_spec,json=sharedv4MountOptSpec,proto3,oneof"` +func (m *RuntimeStateMap) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_RuntimeStateMap.Unmarshal(m, b) } - -func (*VolumeSpecPolicy_Sharedv4MountOptSpec) isVolumeSpecPolicy_Sharedv4MountOpt() {} - -type isVolumeSpecPolicy_ProxyWriteOpt interface { - isVolumeSpecPolicy_ProxyWriteOpt() +func (m *RuntimeStateMap) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_RuntimeStateMap.Marshal(b, m, deterministic) } - -type VolumeSpecPolicy_ProxyWrite struct { - ProxyWrite bool `protobuf:"varint,60,opt,name=proxy_write,json=proxyWrite,proto3,oneof"` +func (dst *RuntimeStateMap) XXX_Merge(src proto.Message) { + xxx_messageInfo_RuntimeStateMap.Merge(dst, src) } - -func (*VolumeSpecPolicy_ProxyWrite) isVolumeSpecPolicy_ProxyWriteOpt() {} - -type isVolumeSpecPolicy_ProxySpecOpt interface { - isVolumeSpecPolicy_ProxySpecOpt() +func (m *RuntimeStateMap) XXX_Size() int { + return xxx_messageInfo_RuntimeStateMap.Size(m) } - -type VolumeSpecPolicy_ProxySpec struct { - ProxySpec *ProxySpec `protobuf:"bytes,61,opt,name=proxy_spec,json=proxySpec,proto3,oneof"` +func (m *RuntimeStateMap) XXX_DiscardUnknown() { + xxx_messageInfo_RuntimeStateMap.DiscardUnknown(m) } -func (*VolumeSpecPolicy_ProxySpec) isVolumeSpecPolicy_ProxySpecOpt() {} +var xxx_messageInfo_RuntimeStateMap proto.InternalMessageInfo -type isVolumeSpecPolicy_FastpathOpt interface { - isVolumeSpecPolicy_FastpathOpt() +func (m *RuntimeStateMap) GetRuntimeState() map[string]string { + if m != nil { + return m.RuntimeState + } + return nil } -type VolumeSpecPolicy_Fastpath struct { - Fastpath bool `protobuf:"varint,62,opt,name=fastpath,proto3,oneof"` +// Ownership information for resource. +// Administrators are users who belong to the group `*`, meaning, every group. +type Ownership struct { + // Username of owner. + // + // The storage system uses the username taken from the security authorization + // token and is saved on this field. Only users with system administration + // can edit this value. + Owner string `protobuf:"bytes,1,opt,name=owner" json:"owner,omitempty"` + // Permissions to share resource which can be set by the owner. + // + // NOTE: To create an "admin" user which has access to any resource set the group value + // in the token of the user to `*`. + Acls *Ownership_AccessControl `protobuf:"bytes,2,opt,name=acls" json:"acls,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (*VolumeSpecPolicy_Fastpath) isVolumeSpecPolicy_FastpathOpt() {} - -type isVolumeSpecPolicy_Sharedv4ServiceSpecOpt interface { - isVolumeSpecPolicy_Sharedv4ServiceSpecOpt() +func (m *Ownership) Reset() { *m = Ownership{} } +func (m *Ownership) String() string { return proto.CompactTextString(m) } +func (*Ownership) ProtoMessage() {} +func (*Ownership) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{31} } - -type VolumeSpecPolicy_Sharedv4ServiceSpec struct { - Sharedv4ServiceSpec *Sharedv4ServiceSpec `protobuf:"bytes,63,opt,name=sharedv4_service_spec,json=sharedv4ServiceSpec,proto3,oneof"` +func (m *Ownership) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Ownership.Unmarshal(m, b) } - -func (*VolumeSpecPolicy_Sharedv4ServiceSpec) isVolumeSpecPolicy_Sharedv4ServiceSpecOpt() {} - -type isVolumeSpecPolicy_Sharedv4SpecOpt interface { - isVolumeSpecPolicy_Sharedv4SpecOpt() +func (m *Ownership) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Ownership.Marshal(b, m, deterministic) } - -type VolumeSpecPolicy_Sharedv4Spec struct { - Sharedv4Spec *Sharedv4Spec `protobuf:"bytes,64,opt,name=sharedv4_spec,json=sharedv4Spec,proto3,oneof"` +func (dst *Ownership) XXX_Merge(src proto.Message) { + xxx_messageInfo_Ownership.Merge(dst, src) } - -func (*VolumeSpecPolicy_Sharedv4Spec) isVolumeSpecPolicy_Sharedv4SpecOpt() {} - -type isVolumeSpecPolicy_AutoFstrimOpt interface { - isVolumeSpecPolicy_AutoFstrimOpt() +func (m *Ownership) XXX_Size() int { + return xxx_messageInfo_Ownership.Size(m) } - -type VolumeSpecPolicy_AutoFstrim struct { - AutoFstrim bool `protobuf:"varint,65,opt,name=auto_fstrim,json=autoFstrim,proto3,oneof"` +func (m *Ownership) XXX_DiscardUnknown() { + xxx_messageInfo_Ownership.DiscardUnknown(m) } -func (*VolumeSpecPolicy_AutoFstrim) isVolumeSpecPolicy_AutoFstrimOpt() {} +var xxx_messageInfo_Ownership proto.InternalMessageInfo -type isVolumeSpecPolicy_IoThrottleOpt interface { - isVolumeSpecPolicy_IoThrottleOpt() +func (m *Ownership) GetOwner() string { + if m != nil { + return m.Owner + } + return "" } -type VolumeSpecPolicy_IoThrottle struct { - IoThrottle *IoThrottle `protobuf:"bytes,66,opt,name=io_throttle,json=ioThrottle,proto3,oneof"` +func (m *Ownership) GetAcls() *Ownership_AccessControl { + if m != nil { + return m.Acls + } + return nil } -func (*VolumeSpecPolicy_IoThrottle) isVolumeSpecPolicy_IoThrottleOpt() {} - -type isVolumeSpecPolicy_ReadaheadOpt interface { - isVolumeSpecPolicy_ReadaheadOpt() +// PublicAccessControl allows assigning public ownership +type Ownership_PublicAccessControl struct { + // AccessType declares which level of public access is allowed + Type Ownership_AccessType `protobuf:"varint,1,opt,name=type,enum=openstorage.api.Ownership_AccessType" json:"type,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -type VolumeSpecPolicy_Readahead struct { - Readahead bool `protobuf:"varint,67,opt,name=readahead,proto3,oneof"` +func (m *Ownership_PublicAccessControl) Reset() { *m = Ownership_PublicAccessControl{} } +func (m *Ownership_PublicAccessControl) String() string { return proto.CompactTextString(m) } +func (*Ownership_PublicAccessControl) ProtoMessage() {} +func (*Ownership_PublicAccessControl) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{31, 0} } - -func (*VolumeSpecPolicy_Readahead) isVolumeSpecPolicy_ReadaheadOpt() {} - -type isVolumeSpecPolicy_WinshareOpt interface { - isVolumeSpecPolicy_WinshareOpt() +func (m *Ownership_PublicAccessControl) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Ownership_PublicAccessControl.Unmarshal(m, b) } - -type VolumeSpecPolicy_Winshare struct { - Winshare bool `protobuf:"varint,68,opt,name=winshare,proto3,oneof"` +func (m *Ownership_PublicAccessControl) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Ownership_PublicAccessControl.Marshal(b, m, deterministic) } - -func (*VolumeSpecPolicy_Winshare) isVolumeSpecPolicy_WinshareOpt() {} - -// ReplicaSet set of machine IDs (nodes) to which part of this volume is erasure -// coded - for clustered storage arrays -type ReplicaSet struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Nodes []string `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"` - // Unique IDs of the storage pools for this replica set - PoolUuids []string `protobuf:"bytes,2,rep,name=pool_uuids,json=poolUuids,proto3" json:"pool_uuids,omitempty"` - // ID is the unique ID of this replica set - Id uint32 `protobuf:"varint,3,opt,name=id,proto3" json:"id,omitempty"` +func (dst *Ownership_PublicAccessControl) XXX_Merge(src proto.Message) { + xxx_messageInfo_Ownership_PublicAccessControl.Merge(dst, src) } - -func (x *ReplicaSet) Reset() { - *x = ReplicaSet{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *Ownership_PublicAccessControl) XXX_Size() int { + return xxx_messageInfo_Ownership_PublicAccessControl.Size(m) } - -func (x *ReplicaSet) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *Ownership_PublicAccessControl) XXX_DiscardUnknown() { + xxx_messageInfo_Ownership_PublicAccessControl.DiscardUnknown(m) } -func (*ReplicaSet) ProtoMessage() {} +var xxx_messageInfo_Ownership_PublicAccessControl proto.InternalMessageInfo -func (x *ReplicaSet) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (m *Ownership_PublicAccessControl) GetType() Ownership_AccessType { + if m != nil { + return m.Type } - return mi.MessageOf(x) -} - -// Deprecated: Use ReplicaSet.ProtoReflect.Descriptor instead. -func (*ReplicaSet) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{29} + return Ownership_Read } -func (x *ReplicaSet) GetNodes() []string { - if x != nil { - return x.Nodes - } - return nil +type Ownership_AccessControl struct { + // Group access to resource which must match the group set in the + // authorization token. + // Can be set by the owner or the system administrator only. + // Possible values are: + // 1. no groups: Means no groups are given access. + // 2. `["*"]`: All groups are allowed. + // 3. `["group1", "group2"]`: Only certain groups are allowed. In this example only + // _group1_ and _group2_ are allowed. + Groups map[string]Ownership_AccessType `protobuf:"bytes,1,rep,name=groups" json:"groups,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=openstorage.api.Ownership_AccessType"` + // Collaborator access to resource gives access to other user. + // Must be the username (unique id) set in the authorization token. + // The owner or the administrator can set this value. Possible values are: + // 1. no collaborators: Means no users are given access. + // 2. `["*"]`: All users are allowed. + // 3. `["username1", "username2"]`: Only certain usernames are allowed. In this example only + // _username1_ and _username2_ are allowed. + Collaborators map[string]Ownership_AccessType `protobuf:"bytes,2,rep,name=collaborators" json:"collaborators,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=openstorage.api.Ownership_AccessType"` + // Public access to resource may be assigned for access by the public userd + Public *Ownership_PublicAccessControl `protobuf:"bytes,3,opt,name=public" json:"public,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ReplicaSet) GetPoolUuids() []string { - if x != nil { - return x.PoolUuids - } - return nil +func (m *Ownership_AccessControl) Reset() { *m = Ownership_AccessControl{} } +func (m *Ownership_AccessControl) String() string { return proto.CompactTextString(m) } +func (*Ownership_AccessControl) ProtoMessage() {} +func (*Ownership_AccessControl) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{31, 1} } - -func (x *ReplicaSet) GetId() uint32 { - if x != nil { - return x.Id - } - return 0 +func (m *Ownership_AccessControl) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Ownership_AccessControl.Unmarshal(m, b) } - -// RuntimeStateMap is a list of name value mapping of driver specific runtime -// information. -type RuntimeStateMap struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RuntimeState map[string]string `protobuf:"bytes,1,rep,name=runtime_state,json=runtimeState,proto3" json:"runtime_state,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +func (m *Ownership_AccessControl) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Ownership_AccessControl.Marshal(b, m, deterministic) } - -func (x *RuntimeStateMap) Reset() { - *x = RuntimeStateMap{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (dst *Ownership_AccessControl) XXX_Merge(src proto.Message) { + xxx_messageInfo_Ownership_AccessControl.Merge(dst, src) } - -func (x *RuntimeStateMap) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *Ownership_AccessControl) XXX_Size() int { + return xxx_messageInfo_Ownership_AccessControl.Size(m) } - -func (*RuntimeStateMap) ProtoMessage() {} - -func (x *RuntimeStateMap) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[30] - 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) +func (m *Ownership_AccessControl) XXX_DiscardUnknown() { + xxx_messageInfo_Ownership_AccessControl.DiscardUnknown(m) } -// Deprecated: Use RuntimeStateMap.ProtoReflect.Descriptor instead. -func (*RuntimeStateMap) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{30} -} +var xxx_messageInfo_Ownership_AccessControl proto.InternalMessageInfo -func (x *RuntimeStateMap) GetRuntimeState() map[string]string { - if x != nil { - return x.RuntimeState +func (m *Ownership_AccessControl) GetGroups() map[string]Ownership_AccessType { + if m != nil { + return m.Groups } return nil } -// Ownership information for resource. -// Administrators are users who belong to the group `*`, meaning, every group. -type Ownership struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Username of owner. - // - // The storage system uses the username taken from the security authorization - // token and is saved on this field. Only users with system administration - // can edit this value. - Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"` - // Permissions to share resource which can be set by the owner. - // - // NOTE: To create an "admin" user which has access to any resource set the group value - // in the token of the user to `*`. - Acls *Ownership_AccessControl `protobuf:"bytes,2,opt,name=acls,proto3" json:"acls,omitempty"` -} - -func (x *Ownership) Reset() { - *x = Ownership{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Ownership) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Ownership) ProtoMessage() {} - -func (x *Ownership) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[31] - 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 Ownership.ProtoReflect.Descriptor instead. -func (*Ownership) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{31} -} - -func (x *Ownership) GetOwner() string { - if x != nil { - return x.Owner +func (m *Ownership_AccessControl) GetCollaborators() map[string]Ownership_AccessType { + if m != nil { + return m.Collaborators } - return "" + return nil } -func (x *Ownership) GetAcls() *Ownership_AccessControl { - if x != nil { - return x.Acls +func (m *Ownership_AccessControl) GetPublic() *Ownership_PublicAccessControl { + if m != nil { + return m.Public } return nil } // Volume represents an abstract storage volume. type Volume struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Self referential volume ID. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` // Source specified seed data for the volume. - Source *Source `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty"` + Source *Source `protobuf:"bytes,2,opt,name=source" json:"source,omitempty"` // Group volumes in the same group have the same group id. - Group *Group `protobuf:"bytes,3,opt,name=group,proto3" json:"group,omitempty"` + Group *Group `protobuf:"bytes,3,opt,name=group" json:"group,omitempty"` // Readonly is true if this volume is to be mounted with readonly access. - Readonly bool `protobuf:"varint,4,opt,name=readonly,proto3" json:"readonly,omitempty"` + Readonly bool `protobuf:"varint,4,opt,name=readonly" json:"readonly,omitempty"` // User specified locator - Locator *VolumeLocator `protobuf:"bytes,5,opt,name=locator,proto3" json:"locator,omitempty"` + Locator *VolumeLocator `protobuf:"bytes,5,opt,name=locator" json:"locator,omitempty"` // Volume creation time - Ctime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=ctime,proto3" json:"ctime,omitempty"` + Ctime *timestamp.Timestamp `protobuf:"bytes,6,opt,name=ctime" json:"ctime,omitempty"` // User specified VolumeSpec - Spec *VolumeSpec `protobuf:"bytes,7,opt,name=spec,proto3" json:"spec,omitempty"` + Spec *VolumeSpec `protobuf:"bytes,7,opt,name=spec" json:"spec,omitempty"` // Usage is bytes consumed by this volume. - Usage uint64 `protobuf:"varint,8,opt,name=usage,proto3" json:"usage,omitempty"` + Usage uint64 `protobuf:"varint,8,opt,name=usage" json:"usage,omitempty"` // LastScan is the time when an integrity check was run. - LastScan *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=last_scan,json=lastScan,proto3" json:"last_scan,omitempty"` + LastScan *timestamp.Timestamp `protobuf:"bytes,9,opt,name=last_scan,json=lastScan" json:"last_scan,omitempty"` // Format specifies the filesytem for this volume. - Format FSType `protobuf:"varint,10,opt,name=format,proto3,enum=openstorage.api.FSType" json:"format,omitempty"` + Format FSType `protobuf:"varint,10,opt,name=format,enum=openstorage.api.FSType" json:"format,omitempty"` // VolumeStatus is the availability status of this volume. - Status VolumeStatus `protobuf:"varint,11,opt,name=status,proto3,enum=openstorage.api.VolumeStatus" json:"status,omitempty"` + Status VolumeStatus `protobuf:"varint,11,opt,name=status,enum=openstorage.api.VolumeStatus" json:"status,omitempty"` // VolumeState is the current runtime state of this volume. - State VolumeState `protobuf:"varint,12,opt,name=state,proto3,enum=openstorage.api.VolumeState" json:"state,omitempty"` + State VolumeState `protobuf:"varint,12,opt,name=state,enum=openstorage.api.VolumeState" json:"state,omitempty"` // AttachedOn is the node instance identifier for clustered systems. - AttachedOn string `protobuf:"bytes,13,opt,name=attached_on,json=attachedOn,proto3" json:"attached_on,omitempty"` + AttachedOn string `protobuf:"bytes,13,opt,name=attached_on,json=attachedOn" json:"attached_on,omitempty"` // AttachState shows whether the device is attached for internal or external use. - AttachedState AttachState `protobuf:"varint,14,opt,name=attached_state,json=attachedState,proto3,enum=openstorage.api.AttachState" json:"attached_state,omitempty"` + AttachedState AttachState `protobuf:"varint,14,opt,name=attached_state,json=attachedState,enum=openstorage.api.AttachState" json:"attached_state,omitempty"` // DevicePath is the device exported by block device implementations. - DevicePath string `protobuf:"bytes,15,opt,name=device_path,json=devicePath,proto3" json:"device_path,omitempty"` + DevicePath string `protobuf:"bytes,15,opt,name=device_path,json=devicePath" json:"device_path,omitempty"` // SecureDevicePath is the device path for an encrypted volume. - SecureDevicePath string `protobuf:"bytes,16,opt,name=secure_device_path,json=secureDevicePath,proto3" json:"secure_device_path,omitempty"` + SecureDevicePath string `protobuf:"bytes,16,opt,name=secure_device_path,json=secureDevicePath" json:"secure_device_path,omitempty"` // AttachPath is the mounted path in the host namespace. - AttachPath []string `protobuf:"bytes,17,rep,name=attach_path,json=attachPath,proto3" json:"attach_path,omitempty"` + AttachPath []string `protobuf:"bytes,17,rep,name=attach_path,json=attachPath" json:"attach_path,omitempty"` // AttachInfo is a list of name value mappings that provides attach information. - AttachInfo map[string]string `protobuf:"bytes,18,rep,name=attach_info,json=attachInfo,proto3" json:"attach_info,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + AttachInfo map[string]string `protobuf:"bytes,18,rep,name=attach_info,json=attachInfo" json:"attach_info,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // ReplicatSets storage for this volumefor clustered storage arrays. - ReplicaSets []*ReplicaSet `protobuf:"bytes,19,rep,name=replica_sets,json=replicaSets,proto3" json:"replica_sets,omitempty"` + ReplicaSets []*ReplicaSet `protobuf:"bytes,19,rep,name=replica_sets,json=replicaSets" json:"replica_sets,omitempty"` // RuntimeState is a lst of name value mapping of driver specific runtime // information. - RuntimeState []*RuntimeStateMap `protobuf:"bytes,20,rep,name=runtime_state,json=runtimeState,proto3" json:"runtime_state,omitempty"` + RuntimeState []*RuntimeStateMap `protobuf:"bytes,20,rep,name=runtime_state,json=runtimeState" json:"runtime_state,omitempty"` // Error is the Last recorded error. - Error string `protobuf:"bytes,21,opt,name=error,proto3" json:"error,omitempty"` + Error string `protobuf:"bytes,21,opt,name=error" json:"error,omitempty"` // VolumeConsumers are entities that consume this volume - VolumeConsumers []*VolumeConsumer `protobuf:"bytes,22,rep,name=volume_consumers,json=volumeConsumers,proto3" json:"volume_consumers,omitempty"` + VolumeConsumers []*VolumeConsumer `protobuf:"bytes,22,rep,name=volume_consumers,json=volumeConsumers" json:"volume_consumers,omitempty"` // FsResizeRequired if an FS resize is required on the volume. - FsResizeRequired bool `protobuf:"varint,23,opt,name=fs_resize_required,json=fsResizeRequired,proto3" json:"fs_resize_required,omitempty"` + FsResizeRequired bool `protobuf:"varint,23,opt,name=fs_resize_required,json=fsResizeRequired" json:"fs_resize_required,omitempty"` // AttachTime time this device was last attached externally. - AttachTime *timestamppb.Timestamp `protobuf:"bytes,24,opt,name=attach_time,json=attachTime,proto3" json:"attach_time,omitempty"` + AttachTime *timestamp.Timestamp `protobuf:"bytes,24,opt,name=attach_time,json=attachTime" json:"attach_time,omitempty"` // DetachTime time this device was detached. - DetachTime *timestamppb.Timestamp `protobuf:"bytes,25,opt,name=detach_time,json=detachTime,proto3" json:"detach_time,omitempty"` + DetachTime *timestamp.Timestamp `protobuf:"bytes,25,opt,name=detach_time,json=detachTime" json:"detach_time,omitempty"` // Fastpath extensions - FpConfig *FastpathConfig `protobuf:"bytes,26,opt,name=fpConfig,proto3" json:"fpConfig,omitempty"` + FpConfig *FastpathConfig `protobuf:"bytes,26,opt,name=fpConfig" json:"fpConfig,omitempty"` // LastScanFix is the time when an integrity check fixed errors in filesystem - LastScanFix *timestamppb.Timestamp `protobuf:"bytes,27,opt,name=last_scan_fix,json=lastScanFix,proto3" json:"last_scan_fix,omitempty"` + LastScanFix *timestamp.Timestamp `protobuf:"bytes,27,opt,name=last_scan_fix,json=lastScanFix" json:"last_scan_fix,omitempty"` // LastScanStatus is the time when an integrity check fixed errors in filesystem - LastScanStatus FilesystemHealthStatus `protobuf:"varint,28,opt,name=last_scan_status,json=lastScanStatus,proto3,enum=openstorage.api.FilesystemHealthStatus" json:"last_scan_status,omitempty"` + LastScanStatus FilesystemHealthStatus `protobuf:"varint,28,opt,name=last_scan_status,json=lastScanStatus,enum=openstorage.api.FilesystemHealthStatus" json:"last_scan_status,omitempty"` // MountOptions are the runtime mount options that will be used while mounting this volume - MountOptions *MountOptions `protobuf:"bytes,29,opt,name=mount_options,json=mountOptions,proto3" json:"mount_options,omitempty"` + MountOptions *MountOptions `protobuf:"bytes,29,opt,name=mount_options,json=mountOptions" json:"mount_options,omitempty"` // Sharedv4MountOptions are the runtime mount options that will be used while mounting a sharedv4 volume // from a node where the volume replica does not exist - Sharedv4MountOptions *MountOptions `protobuf:"bytes,30,opt,name=sharedv4_mount_options,json=sharedv4MountOptions,proto3" json:"sharedv4_mount_options,omitempty"` + Sharedv4MountOptions *MountOptions `protobuf:"bytes,30,opt,name=sharedv4_mount_options,json=sharedv4MountOptions" json:"sharedv4_mount_options,omitempty"` // DerivedIoProfile the IO profile determined from the pattern - DerivedIoProfile IoProfile `protobuf:"varint,31,opt,name=derived_io_profile,json=derivedIoProfile,proto3,enum=openstorage.api.IoProfile" json:"derived_io_profile,omitempty"` + DerivedIoProfile IoProfile `protobuf:"varint,31,opt,name=derived_io_profile,json=derivedIoProfile,enum=openstorage.api.IoProfile" json:"derived_io_profile,omitempty"` // InTrashcan if the volume is in trashcan - InTrashcan bool `protobuf:"varint,32,opt,name=in_trashcan,json=inTrashcan,proto3" json:"in_trashcan,omitempty"` + InTrashcan bool `protobuf:"varint,32,opt,name=in_trashcan,json=inTrashcan" json:"in_trashcan,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Volume) Reset() { - *x = Volume{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *Volume) Reset() { *m = Volume{} } +func (m *Volume) String() string { return proto.CompactTextString(m) } +func (*Volume) ProtoMessage() {} +func (*Volume) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{32} } - -func (x *Volume) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *Volume) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Volume.Unmarshal(m, b) } - -func (*Volume) ProtoMessage() {} - -func (x *Volume) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[32] - 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) +func (m *Volume) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Volume.Marshal(b, m, deterministic) } - -// Deprecated: Use Volume.ProtoReflect.Descriptor instead. -func (*Volume) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{32} +func (dst *Volume) XXX_Merge(src proto.Message) { + xxx_messageInfo_Volume.Merge(dst, src) +} +func (m *Volume) XXX_Size() int { + return xxx_messageInfo_Volume.Size(m) +} +func (m *Volume) XXX_DiscardUnknown() { + xxx_messageInfo_Volume.DiscardUnknown(m) } -func (x *Volume) GetId() string { - if x != nil { - return x.Id +var xxx_messageInfo_Volume proto.InternalMessageInfo + +func (m *Volume) GetId() string { + if m != nil { + return m.Id } return "" } -func (x *Volume) GetSource() *Source { - if x != nil { - return x.Source +func (m *Volume) GetSource() *Source { + if m != nil { + return m.Source } return nil } -func (x *Volume) GetGroup() *Group { - if x != nil { - return x.Group +func (m *Volume) GetGroup() *Group { + if m != nil { + return m.Group } return nil } -func (x *Volume) GetReadonly() bool { - if x != nil { - return x.Readonly +func (m *Volume) GetReadonly() bool { + if m != nil { + return m.Readonly } return false } -func (x *Volume) GetLocator() *VolumeLocator { - if x != nil { - return x.Locator +func (m *Volume) GetLocator() *VolumeLocator { + if m != nil { + return m.Locator } return nil } -func (x *Volume) GetCtime() *timestamppb.Timestamp { - if x != nil { - return x.Ctime +func (m *Volume) GetCtime() *timestamp.Timestamp { + if m != nil { + return m.Ctime } return nil } -func (x *Volume) GetSpec() *VolumeSpec { - if x != nil { - return x.Spec +func (m *Volume) GetSpec() *VolumeSpec { + if m != nil { + return m.Spec } return nil } -func (x *Volume) GetUsage() uint64 { - if x != nil { - return x.Usage +func (m *Volume) GetUsage() uint64 { + if m != nil { + return m.Usage } return 0 } -func (x *Volume) GetLastScan() *timestamppb.Timestamp { - if x != nil { - return x.LastScan +func (m *Volume) GetLastScan() *timestamp.Timestamp { + if m != nil { + return m.LastScan } return nil } -func (x *Volume) GetFormat() FSType { - if x != nil { - return x.Format +func (m *Volume) GetFormat() FSType { + if m != nil { + return m.Format } return FSType_FS_TYPE_NONE } -func (x *Volume) GetStatus() VolumeStatus { - if x != nil { - return x.Status +func (m *Volume) GetStatus() VolumeStatus { + if m != nil { + return m.Status } return VolumeStatus_VOLUME_STATUS_NONE } -func (x *Volume) GetState() VolumeState { - if x != nil { - return x.State +func (m *Volume) GetState() VolumeState { + if m != nil { + return m.State } return VolumeState_VOLUME_STATE_NONE } -func (x *Volume) GetAttachedOn() string { - if x != nil { - return x.AttachedOn +func (m *Volume) GetAttachedOn() string { + if m != nil { + return m.AttachedOn } return "" } -func (x *Volume) GetAttachedState() AttachState { - if x != nil { - return x.AttachedState +func (m *Volume) GetAttachedState() AttachState { + if m != nil { + return m.AttachedState } return AttachState_ATTACH_STATE_EXTERNAL } -func (x *Volume) GetDevicePath() string { - if x != nil { - return x.DevicePath +func (m *Volume) GetDevicePath() string { + if m != nil { + return m.DevicePath } return "" } -func (x *Volume) GetSecureDevicePath() string { - if x != nil { - return x.SecureDevicePath +func (m *Volume) GetSecureDevicePath() string { + if m != nil { + return m.SecureDevicePath } return "" } -func (x *Volume) GetAttachPath() []string { - if x != nil { - return x.AttachPath +func (m *Volume) GetAttachPath() []string { + if m != nil { + return m.AttachPath } return nil } -func (x *Volume) GetAttachInfo() map[string]string { - if x != nil { - return x.AttachInfo +func (m *Volume) GetAttachInfo() map[string]string { + if m != nil { + return m.AttachInfo } return nil } -func (x *Volume) GetReplicaSets() []*ReplicaSet { - if x != nil { - return x.ReplicaSets +func (m *Volume) GetReplicaSets() []*ReplicaSet { + if m != nil { + return m.ReplicaSets } return nil } -func (x *Volume) GetRuntimeState() []*RuntimeStateMap { - if x != nil { - return x.RuntimeState +func (m *Volume) GetRuntimeState() []*RuntimeStateMap { + if m != nil { + return m.RuntimeState } return nil } -func (x *Volume) GetError() string { - if x != nil { - return x.Error +func (m *Volume) GetError() string { + if m != nil { + return m.Error } return "" } -func (x *Volume) GetVolumeConsumers() []*VolumeConsumer { - if x != nil { - return x.VolumeConsumers +func (m *Volume) GetVolumeConsumers() []*VolumeConsumer { + if m != nil { + return m.VolumeConsumers } return nil } -func (x *Volume) GetFsResizeRequired() bool { - if x != nil { - return x.FsResizeRequired +func (m *Volume) GetFsResizeRequired() bool { + if m != nil { + return m.FsResizeRequired } return false } -func (x *Volume) GetAttachTime() *timestamppb.Timestamp { - if x != nil { - return x.AttachTime +func (m *Volume) GetAttachTime() *timestamp.Timestamp { + if m != nil { + return m.AttachTime } return nil } -func (x *Volume) GetDetachTime() *timestamppb.Timestamp { - if x != nil { - return x.DetachTime +func (m *Volume) GetDetachTime() *timestamp.Timestamp { + if m != nil { + return m.DetachTime } return nil } -func (x *Volume) GetFpConfig() *FastpathConfig { - if x != nil { - return x.FpConfig +func (m *Volume) GetFpConfig() *FastpathConfig { + if m != nil { + return m.FpConfig } return nil } -func (x *Volume) GetLastScanFix() *timestamppb.Timestamp { - if x != nil { - return x.LastScanFix +func (m *Volume) GetLastScanFix() *timestamp.Timestamp { + if m != nil { + return m.LastScanFix } return nil } -func (x *Volume) GetLastScanStatus() FilesystemHealthStatus { - if x != nil { - return x.LastScanStatus +func (m *Volume) GetLastScanStatus() FilesystemHealthStatus { + if m != nil { + return m.LastScanStatus } return FilesystemHealthStatus_FS_HEALTH_STATUS_UNKNOWN } -func (x *Volume) GetMountOptions() *MountOptions { - if x != nil { - return x.MountOptions +func (m *Volume) GetMountOptions() *MountOptions { + if m != nil { + return m.MountOptions } return nil } -func (x *Volume) GetSharedv4MountOptions() *MountOptions { - if x != nil { - return x.Sharedv4MountOptions +func (m *Volume) GetSharedv4MountOptions() *MountOptions { + if m != nil { + return m.Sharedv4MountOptions } return nil } -func (x *Volume) GetDerivedIoProfile() IoProfile { - if x != nil { - return x.DerivedIoProfile +func (m *Volume) GetDerivedIoProfile() IoProfile { + if m != nil { + return m.DerivedIoProfile } return IoProfile_IO_PROFILE_SEQUENTIAL } -func (x *Volume) GetInTrashcan() bool { - if x != nil { - return x.InTrashcan +func (m *Volume) GetInTrashcan() bool { + if m != nil { + return m.InTrashcan } return false } // Stats is a structure that represents last collected stats for a volume type Stats struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Reads completed successfully - Reads uint64 `protobuf:"varint,1,opt,name=reads,proto3" json:"reads,omitempty"` + Reads uint64 `protobuf:"varint,1,opt,name=reads" json:"reads,omitempty"` // Time spent in reads in ms - ReadMs uint64 `protobuf:"varint,2,opt,name=read_ms,json=readMs,proto3" json:"read_ms,omitempty"` + ReadMs uint64 `protobuf:"varint,2,opt,name=read_ms,json=readMs" json:"read_ms,omitempty"` // Number of bytes read - ReadBytes uint64 `protobuf:"varint,3,opt,name=read_bytes,json=readBytes,proto3" json:"read_bytes,omitempty"` + ReadBytes uint64 `protobuf:"varint,3,opt,name=read_bytes,json=readBytes" json:"read_bytes,omitempty"` // Writes completed successfully - Writes uint64 `protobuf:"varint,4,opt,name=writes,proto3" json:"writes,omitempty"` + Writes uint64 `protobuf:"varint,4,opt,name=writes" json:"writes,omitempty"` // Time spent in writes in ms - WriteMs uint64 `protobuf:"varint,5,opt,name=write_ms,json=writeMs,proto3" json:"write_ms,omitempty"` + WriteMs uint64 `protobuf:"varint,5,opt,name=write_ms,json=writeMs" json:"write_ms,omitempty"` // Number of bytes written - WriteBytes uint64 `protobuf:"varint,6,opt,name=write_bytes,json=writeBytes,proto3" json:"write_bytes,omitempty"` + WriteBytes uint64 `protobuf:"varint,6,opt,name=write_bytes,json=writeBytes" json:"write_bytes,omitempty"` // IOs curently in progress - IoProgress uint64 `protobuf:"varint,7,opt,name=io_progress,json=ioProgress,proto3" json:"io_progress,omitempty"` + IoProgress uint64 `protobuf:"varint,7,opt,name=io_progress,json=ioProgress" json:"io_progress,omitempty"` // Time spent doing IOs ms - IoMs uint64 `protobuf:"varint,8,opt,name=io_ms,json=ioMs,proto3" json:"io_ms,omitempty"` + IoMs uint64 `protobuf:"varint,8,opt,name=io_ms,json=ioMs" json:"io_ms,omitempty"` // BytesUsed - BytesUsed uint64 `protobuf:"varint,9,opt,name=bytes_used,json=bytesUsed,proto3" json:"bytes_used,omitempty"` + BytesUsed uint64 `protobuf:"varint,9,opt,name=bytes_used,json=bytesUsed" json:"bytes_used,omitempty"` // Interval in ms during which stats were collected - IntervalMs uint64 `protobuf:"varint,10,opt,name=interval_ms,json=intervalMs,proto3" json:"interval_ms,omitempty"` - // Discards completed successfully - Discards uint64 `protobuf:"varint,11,opt,name=discards,proto3" json:"discards,omitempty"` - // Time spent in discards in ms - DiscardMs uint64 `protobuf:"varint,12,opt,name=discard_ms,json=discardMs,proto3" json:"discard_ms,omitempty"` - // Number of bytes discarded - DiscardBytes uint64 `protobuf:"varint,13,opt,name=discard_bytes,json=discardBytes,proto3" json:"discard_bytes,omitempty"` + IntervalMs uint64 `protobuf:"varint,10,opt,name=interval_ms,json=intervalMs" json:"interval_ms,omitempty"` // Unique Blocks - UniqueBlocks uint64 `protobuf:"varint,14,opt,name=unique_blocks,json=uniqueBlocks,proto3" json:"unique_blocks,omitempty"` + UniqueBlocks uint64 `protobuf:"varint,14,opt,name=unique_blocks,json=uniqueBlocks" json:"unique_blocks,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Stats) Reset() { - *x = Stats{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *Stats) Reset() { *m = Stats{} } +func (m *Stats) String() string { return proto.CompactTextString(m) } +func (*Stats) ProtoMessage() {} +func (*Stats) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{33} } - -func (x *Stats) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *Stats) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Stats.Unmarshal(m, b) } - -func (*Stats) ProtoMessage() {} - -func (x *Stats) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[33] - 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) +func (m *Stats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Stats.Marshal(b, m, deterministic) } - -// Deprecated: Use Stats.ProtoReflect.Descriptor instead. -func (*Stats) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{33} +func (dst *Stats) XXX_Merge(src proto.Message) { + xxx_messageInfo_Stats.Merge(dst, src) } - -func (x *Stats) GetReads() uint64 { - if x != nil { - return x.Reads - } - return 0 +func (m *Stats) XXX_Size() int { + return xxx_messageInfo_Stats.Size(m) } - -func (x *Stats) GetReadMs() uint64 { - if x != nil { - return x.ReadMs - } - return 0 +func (m *Stats) XXX_DiscardUnknown() { + xxx_messageInfo_Stats.DiscardUnknown(m) } -func (x *Stats) GetReadBytes() uint64 { - if x != nil { - return x.ReadBytes - } - return 0 -} +var xxx_messageInfo_Stats proto.InternalMessageInfo -func (x *Stats) GetWrites() uint64 { - if x != nil { - return x.Writes +func (m *Stats) GetReads() uint64 { + if m != nil { + return m.Reads } return 0 } -func (x *Stats) GetWriteMs() uint64 { - if x != nil { - return x.WriteMs +func (m *Stats) GetReadMs() uint64 { + if m != nil { + return m.ReadMs } return 0 } -func (x *Stats) GetWriteBytes() uint64 { - if x != nil { - return x.WriteBytes +func (m *Stats) GetReadBytes() uint64 { + if m != nil { + return m.ReadBytes } return 0 } -func (x *Stats) GetIoProgress() uint64 { - if x != nil { - return x.IoProgress +func (m *Stats) GetWrites() uint64 { + if m != nil { + return m.Writes } return 0 } -func (x *Stats) GetIoMs() uint64 { - if x != nil { - return x.IoMs +func (m *Stats) GetWriteMs() uint64 { + if m != nil { + return m.WriteMs } return 0 } -func (x *Stats) GetBytesUsed() uint64 { - if x != nil { - return x.BytesUsed +func (m *Stats) GetWriteBytes() uint64 { + if m != nil { + return m.WriteBytes } return 0 } -func (x *Stats) GetIntervalMs() uint64 { - if x != nil { - return x.IntervalMs +func (m *Stats) GetIoProgress() uint64 { + if m != nil { + return m.IoProgress } return 0 } -func (x *Stats) GetDiscards() uint64 { - if x != nil { - return x.Discards +func (m *Stats) GetIoMs() uint64 { + if m != nil { + return m.IoMs } return 0 } -func (x *Stats) GetDiscardMs() uint64 { - if x != nil { - return x.DiscardMs +func (m *Stats) GetBytesUsed() uint64 { + if m != nil { + return m.BytesUsed } return 0 } -func (x *Stats) GetDiscardBytes() uint64 { - if x != nil { - return x.DiscardBytes +func (m *Stats) GetIntervalMs() uint64 { + if m != nil { + return m.IntervalMs } return 0 } -func (x *Stats) GetUniqueBlocks() uint64 { - if x != nil { - return x.UniqueBlocks +func (m *Stats) GetUniqueBlocks() uint64 { + if m != nil { + return m.UniqueBlocks } return 0 } // Provides details on exclusive and shared storage used by // snapshot/volume specifically for copy-on-write(COW) snapshots. Deletion -// of snapshots and overwrite of volume will affect the exclusive storage +// of snapshots and overwirte of volume will affect the exclusive storage // used by the other dependent snaps and parent volume. type CapacityUsageInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Storage consumed exclusively by this single snapshot. Deletion of this // snapshot may increase the free storage available by this amount. - ExclusiveBytes int64 `protobuf:"varint,1,opt,name=exclusive_bytes,json=exclusiveBytes,proto3" json:"exclusive_bytes,omitempty"` + ExclusiveBytes int64 `protobuf:"varint,1,opt,name=exclusive_bytes,json=exclusiveBytes" json:"exclusive_bytes,omitempty"` // Storage consumed by this snapshot that is shared with parent and children - SharedBytes int64 `protobuf:"varint,2,opt,name=shared_bytes,json=sharedBytes,proto3" json:"shared_bytes,omitempty"` + SharedBytes int64 `protobuf:"varint,2,opt,name=shared_bytes,json=sharedBytes" json:"shared_bytes,omitempty"` // TotalBytes used by this volume - TotalBytes int64 `protobuf:"varint,3,opt,name=total_bytes,json=totalBytes,proto3" json:"total_bytes,omitempty"` + TotalBytes int64 `protobuf:"varint,3,opt,name=total_bytes,json=totalBytes" json:"total_bytes,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CapacityUsageInfo) Reset() { - *x = CapacityUsageInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CapacityUsageInfo) Reset() { *m = CapacityUsageInfo{} } +func (m *CapacityUsageInfo) String() string { return proto.CompactTextString(m) } +func (*CapacityUsageInfo) ProtoMessage() {} +func (*CapacityUsageInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{34} } - -func (x *CapacityUsageInfo) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CapacityUsageInfo) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CapacityUsageInfo.Unmarshal(m, b) } - -func (*CapacityUsageInfo) ProtoMessage() {} - -func (x *CapacityUsageInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[34] - 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) +func (m *CapacityUsageInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CapacityUsageInfo.Marshal(b, m, deterministic) } - -// Deprecated: Use CapacityUsageInfo.ProtoReflect.Descriptor instead. -func (*CapacityUsageInfo) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{34} +func (dst *CapacityUsageInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_CapacityUsageInfo.Merge(dst, src) +} +func (m *CapacityUsageInfo) XXX_Size() int { + return xxx_messageInfo_CapacityUsageInfo.Size(m) +} +func (m *CapacityUsageInfo) XXX_DiscardUnknown() { + xxx_messageInfo_CapacityUsageInfo.DiscardUnknown(m) } -func (x *CapacityUsageInfo) GetExclusiveBytes() int64 { - if x != nil { - return x.ExclusiveBytes +var xxx_messageInfo_CapacityUsageInfo proto.InternalMessageInfo + +func (m *CapacityUsageInfo) GetExclusiveBytes() int64 { + if m != nil { + return m.ExclusiveBytes } return 0 } -func (x *CapacityUsageInfo) GetSharedBytes() int64 { - if x != nil { - return x.SharedBytes +func (m *CapacityUsageInfo) GetSharedBytes() int64 { + if m != nil { + return m.SharedBytes } return 0 } -func (x *CapacityUsageInfo) GetTotalBytes() int64 { - if x != nil { - return x.TotalBytes +func (m *CapacityUsageInfo) GetTotalBytes() int64 { + if m != nil { + return m.TotalBytes } return 0 } @@ -8741,94 +8424,85 @@ func (x *CapacityUsageInfo) GetTotalBytes() int64 { // retrieved individually and is obtained as part node's usage for a given // node. type VolumeUsage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // id for the volume/snapshot - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // name of the volume/snapshot - VolumeName string `protobuf:"bytes,2,opt,name=volume_name,json=volumeName,proto3" json:"volume_name,omitempty"` + VolumeName string `protobuf:"bytes,2,opt,name=volume_name,json=volumeName" json:"volume_name,omitempty"` // uuid of the pool that this volume belongs to - PoolUuid string `protobuf:"bytes,3,opt,name=pool_uuid,json=poolUuid,proto3" json:"pool_uuid,omitempty"` + PoolUuid string `protobuf:"bytes,3,opt,name=pool_uuid,json=poolUuid" json:"pool_uuid,omitempty"` // size in bytes exclusively used by the volume/snapshot - ExclusiveBytes uint64 `protobuf:"varint,4,opt,name=exclusive_bytes,json=exclusiveBytes,proto3" json:"exclusive_bytes,omitempty"` + ExclusiveBytes uint64 `protobuf:"varint,4,opt,name=exclusive_bytes,json=exclusiveBytes" json:"exclusive_bytes,omitempty"` // size in bytes by the volume/snapshot - TotalBytes uint64 `protobuf:"varint,5,opt,name=total_bytes,json=totalBytes,proto3" json:"total_bytes,omitempty"` + TotalBytes uint64 `protobuf:"varint,5,opt,name=total_bytes,json=totalBytes" json:"total_bytes,omitempty"` // set to true if this volume is snapshot created by cloudbackups - LocalCloudSnapshot bool `protobuf:"varint,6,opt,name=local_cloud_snapshot,json=localCloudSnapshot,proto3" json:"local_cloud_snapshot,omitempty"` + LocalCloudSnapshot bool `protobuf:"varint,6,opt,name=local_cloud_snapshot,json=localCloudSnapshot" json:"local_cloud_snapshot,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VolumeUsage) Reset() { - *x = VolumeUsage{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *VolumeUsage) Reset() { *m = VolumeUsage{} } +func (m *VolumeUsage) String() string { return proto.CompactTextString(m) } +func (*VolumeUsage) ProtoMessage() {} +func (*VolumeUsage) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{35} } - -func (x *VolumeUsage) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *VolumeUsage) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumeUsage.Unmarshal(m, b) } - -func (*VolumeUsage) ProtoMessage() {} - -func (x *VolumeUsage) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[35] - 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) +func (m *VolumeUsage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumeUsage.Marshal(b, m, deterministic) } - -// Deprecated: Use VolumeUsage.ProtoReflect.Descriptor instead. -func (*VolumeUsage) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{35} +func (dst *VolumeUsage) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumeUsage.Merge(dst, src) +} +func (m *VolumeUsage) XXX_Size() int { + return xxx_messageInfo_VolumeUsage.Size(m) +} +func (m *VolumeUsage) XXX_DiscardUnknown() { + xxx_messageInfo_VolumeUsage.DiscardUnknown(m) } -func (x *VolumeUsage) GetVolumeId() string { - if x != nil { - return x.VolumeId +var xxx_messageInfo_VolumeUsage proto.InternalMessageInfo + +func (m *VolumeUsage) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *VolumeUsage) GetVolumeName() string { - if x != nil { - return x.VolumeName +func (m *VolumeUsage) GetVolumeName() string { + if m != nil { + return m.VolumeName } return "" } -func (x *VolumeUsage) GetPoolUuid() string { - if x != nil { - return x.PoolUuid +func (m *VolumeUsage) GetPoolUuid() string { + if m != nil { + return m.PoolUuid } return "" } -func (x *VolumeUsage) GetExclusiveBytes() uint64 { - if x != nil { - return x.ExclusiveBytes +func (m *VolumeUsage) GetExclusiveBytes() uint64 { + if m != nil { + return m.ExclusiveBytes } return 0 } -func (x *VolumeUsage) GetTotalBytes() uint64 { - if x != nil { - return x.TotalBytes +func (m *VolumeUsage) GetTotalBytes() uint64 { + if m != nil { + return m.TotalBytes } return 0 } -func (x *VolumeUsage) GetLocalCloudSnapshot() bool { - if x != nil { - return x.LocalCloudSnapshot +func (m *VolumeUsage) GetLocalCloudSnapshot() bool { + if m != nil { + return m.LocalCloudSnapshot } return false } @@ -8836,299 +8510,254 @@ func (x *VolumeUsage) GetLocalCloudSnapshot() bool { // Provides capacity usage of a node in terms of volumes. Returns VolumeUsage for // all the volume/snapshot(s) in the node. type VolumeUsageByNode struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // VolumeUsage returns list of VolumeUsage for given node - VolumeUsage []*VolumeUsage `protobuf:"bytes,1,rep,name=volume_usage,json=volumeUsage,proto3" json:"volume_usage,omitempty"` + VolumeUsage []*VolumeUsage `protobuf:"bytes,1,rep,name=volume_usage,json=volumeUsage" json:"volume_usage,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VolumeUsageByNode) Reset() { - *x = VolumeUsageByNode{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *VolumeUsageByNode) Reset() { *m = VolumeUsageByNode{} } +func (m *VolumeUsageByNode) String() string { return proto.CompactTextString(m) } +func (*VolumeUsageByNode) ProtoMessage() {} +func (*VolumeUsageByNode) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{36} } - -func (x *VolumeUsageByNode) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *VolumeUsageByNode) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumeUsageByNode.Unmarshal(m, b) } - -func (*VolumeUsageByNode) ProtoMessage() {} - -func (x *VolumeUsageByNode) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[36] - 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) +func (m *VolumeUsageByNode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumeUsageByNode.Marshal(b, m, deterministic) } - -// Deprecated: Use VolumeUsageByNode.ProtoReflect.Descriptor instead. -func (*VolumeUsageByNode) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{36} +func (dst *VolumeUsageByNode) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumeUsageByNode.Merge(dst, src) +} +func (m *VolumeUsageByNode) XXX_Size() int { + return xxx_messageInfo_VolumeUsageByNode.Size(m) } +func (m *VolumeUsageByNode) XXX_DiscardUnknown() { + xxx_messageInfo_VolumeUsageByNode.DiscardUnknown(m) +} + +var xxx_messageInfo_VolumeUsageByNode proto.InternalMessageInfo -func (x *VolumeUsageByNode) GetVolumeUsage() []*VolumeUsage { - if x != nil { - return x.VolumeUsage +func (m *VolumeUsageByNode) GetVolumeUsage() []*VolumeUsage { + if m != nil { + return m.VolumeUsage } return nil } // VolumeBytesUsed defines volume utilization type VolumeBytesUsed struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // id for the volume/snapshot - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // size in bytes by the volume/snapshot - TotalBytes uint64 `protobuf:"varint,2,opt,name=total_bytes,json=totalBytes,proto3" json:"total_bytes,omitempty"` + TotalBytes uint64 `protobuf:"varint,2,opt,name=total_bytes,json=totalBytes" json:"total_bytes,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VolumeBytesUsed) Reset() { - *x = VolumeBytesUsed{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *VolumeBytesUsed) Reset() { *m = VolumeBytesUsed{} } +func (m *VolumeBytesUsed) String() string { return proto.CompactTextString(m) } +func (*VolumeBytesUsed) ProtoMessage() {} +func (*VolumeBytesUsed) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{37} } - -func (x *VolumeBytesUsed) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *VolumeBytesUsed) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumeBytesUsed.Unmarshal(m, b) } - -func (*VolumeBytesUsed) ProtoMessage() {} - -func (x *VolumeBytesUsed) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[37] - 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) +func (m *VolumeBytesUsed) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumeBytesUsed.Marshal(b, m, deterministic) } - -// Deprecated: Use VolumeBytesUsed.ProtoReflect.Descriptor instead. -func (*VolumeBytesUsed) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{37} +func (dst *VolumeBytesUsed) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumeBytesUsed.Merge(dst, src) +} +func (m *VolumeBytesUsed) XXX_Size() int { + return xxx_messageInfo_VolumeBytesUsed.Size(m) } +func (m *VolumeBytesUsed) XXX_DiscardUnknown() { + xxx_messageInfo_VolumeBytesUsed.DiscardUnknown(m) +} + +var xxx_messageInfo_VolumeBytesUsed proto.InternalMessageInfo -func (x *VolumeBytesUsed) GetVolumeId() string { - if x != nil { - return x.VolumeId +func (m *VolumeBytesUsed) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *VolumeBytesUsed) GetTotalBytes() uint64 { - if x != nil { - return x.TotalBytes +func (m *VolumeBytesUsed) GetTotalBytes() uint64 { + if m != nil { + return m.TotalBytes } return 0 } // VolumeBytesUsedByNode defines volume utilization for multiple volumes in a given node type VolumeBytesUsedByNode struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // machine uuid - NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` + NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId" json:"node_id,omitempty"` // VolumeBytesUsed for each requested volume on the given node - VolUsage []*VolumeBytesUsed `protobuf:"bytes,2,rep,name=vol_usage,json=volUsage,proto3" json:"vol_usage,omitempty"` + VolUsage []*VolumeBytesUsed `protobuf:"bytes,2,rep,name=vol_usage,json=volUsage" json:"vol_usage,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VolumeBytesUsedByNode) Reset() { - *x = VolumeBytesUsedByNode{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *VolumeBytesUsedByNode) Reset() { *m = VolumeBytesUsedByNode{} } +func (m *VolumeBytesUsedByNode) String() string { return proto.CompactTextString(m) } +func (*VolumeBytesUsedByNode) ProtoMessage() {} +func (*VolumeBytesUsedByNode) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{38} } - -func (x *VolumeBytesUsedByNode) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *VolumeBytesUsedByNode) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumeBytesUsedByNode.Unmarshal(m, b) } - -func (*VolumeBytesUsedByNode) ProtoMessage() {} - -func (x *VolumeBytesUsedByNode) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[38] - 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) +func (m *VolumeBytesUsedByNode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumeBytesUsedByNode.Marshal(b, m, deterministic) } - -// Deprecated: Use VolumeBytesUsedByNode.ProtoReflect.Descriptor instead. -func (*VolumeBytesUsedByNode) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{38} +func (dst *VolumeBytesUsedByNode) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumeBytesUsedByNode.Merge(dst, src) +} +func (m *VolumeBytesUsedByNode) XXX_Size() int { + return xxx_messageInfo_VolumeBytesUsedByNode.Size(m) +} +func (m *VolumeBytesUsedByNode) XXX_DiscardUnknown() { + xxx_messageInfo_VolumeBytesUsedByNode.DiscardUnknown(m) } -func (x *VolumeBytesUsedByNode) GetNodeId() string { - if x != nil { - return x.NodeId +var xxx_messageInfo_VolumeBytesUsedByNode proto.InternalMessageInfo + +func (m *VolumeBytesUsedByNode) GetNodeId() string { + if m != nil { + return m.NodeId } return "" } -func (x *VolumeBytesUsedByNode) GetVolUsage() []*VolumeBytesUsed { - if x != nil { - return x.VolUsage +func (m *VolumeBytesUsedByNode) GetVolUsage() []*VolumeBytesUsed { + if m != nil { + return m.VolUsage } return nil } // FstrimVolUsageInfo type FstrimVolumeUsageInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Volume name - VolumeName string `protobuf:"bytes,1,opt,name=volume_name,json=volumeName,proto3" json:"volume_name,omitempty"` + VolumeName string `protobuf:"bytes,1,opt,name=volume_name,json=volumeName" json:"volume_name,omitempty"` // Volume size - VolumeSize uint64 `protobuf:"varint,2,opt,name=volume_size,json=volumeSize,proto3" json:"volume_size,omitempty"` + VolumeSize uint64 `protobuf:"varint,2,opt,name=volume_size,json=volumeSize" json:"volume_size,omitempty"` // Disk usage in bytes - DuUsage uint64 `protobuf:"varint,3,opt,name=du_usage,json=duUsage,proto3" json:"du_usage,omitempty"` + DuUsage uint64 `protobuf:"varint,3,opt,name=du_usage,json=duUsage" json:"du_usage,omitempty"` // Disk usage seen in Portworx in bytes - PxUsage uint64 `protobuf:"varint,4,opt,name=px_usage,json=pxUsage,proto3" json:"px_usage,omitempty"` + PxUsage uint64 `protobuf:"varint,4,opt,name=px_usage,json=pxUsage" json:"px_usage,omitempty"` // If auto fstrim is performed to the volume, if not, why - PerformAutoFstrim string `protobuf:"bytes,5,opt,name=perform_auto_fstrim,json=performAutoFstrim,proto3" json:"perform_auto_fstrim,omitempty"` + PerformAutoFstrim string `protobuf:"bytes,5,opt,name=perform_auto_fstrim,json=performAutoFstrim" json:"perform_auto_fstrim,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *FstrimVolumeUsageInfo) Reset() { - *x = FstrimVolumeUsageInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *FstrimVolumeUsageInfo) Reset() { *m = FstrimVolumeUsageInfo{} } +func (m *FstrimVolumeUsageInfo) String() string { return proto.CompactTextString(m) } +func (*FstrimVolumeUsageInfo) ProtoMessage() {} +func (*FstrimVolumeUsageInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{39} } - -func (x *FstrimVolumeUsageInfo) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *FstrimVolumeUsageInfo) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_FstrimVolumeUsageInfo.Unmarshal(m, b) } - -func (*FstrimVolumeUsageInfo) ProtoMessage() {} - -func (x *FstrimVolumeUsageInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[39] - 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) +func (m *FstrimVolumeUsageInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_FstrimVolumeUsageInfo.Marshal(b, m, deterministic) } - -// Deprecated: Use FstrimVolumeUsageInfo.ProtoReflect.Descriptor instead. -func (*FstrimVolumeUsageInfo) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{39} +func (dst *FstrimVolumeUsageInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_FstrimVolumeUsageInfo.Merge(dst, src) +} +func (m *FstrimVolumeUsageInfo) XXX_Size() int { + return xxx_messageInfo_FstrimVolumeUsageInfo.Size(m) } +func (m *FstrimVolumeUsageInfo) XXX_DiscardUnknown() { + xxx_messageInfo_FstrimVolumeUsageInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_FstrimVolumeUsageInfo proto.InternalMessageInfo -func (x *FstrimVolumeUsageInfo) GetVolumeName() string { - if x != nil { - return x.VolumeName +func (m *FstrimVolumeUsageInfo) GetVolumeName() string { + if m != nil { + return m.VolumeName } return "" } -func (x *FstrimVolumeUsageInfo) GetVolumeSize() uint64 { - if x != nil { - return x.VolumeSize +func (m *FstrimVolumeUsageInfo) GetVolumeSize() uint64 { + if m != nil { + return m.VolumeSize } return 0 } -func (x *FstrimVolumeUsageInfo) GetDuUsage() uint64 { - if x != nil { - return x.DuUsage +func (m *FstrimVolumeUsageInfo) GetDuUsage() uint64 { + if m != nil { + return m.DuUsage } return 0 } -func (x *FstrimVolumeUsageInfo) GetPxUsage() uint64 { - if x != nil { - return x.PxUsage +func (m *FstrimVolumeUsageInfo) GetPxUsage() uint64 { + if m != nil { + return m.PxUsage } return 0 } -func (x *FstrimVolumeUsageInfo) GetPerformAutoFstrim() string { - if x != nil { - return x.PerformAutoFstrim +func (m *FstrimVolumeUsageInfo) GetPerformAutoFstrim() string { + if m != nil { + return m.PerformAutoFstrim } return "" } // Purges the RelaxedReclaim queue type RelaxedReclaimPurge struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // num_purged returns number of volumes purged - NumPurged uint64 `protobuf:"varint,1,opt,name=num_purged,json=numPurged,proto3" json:"num_purged,omitempty"` + NumPurged uint64 `protobuf:"varint,1,opt,name=num_purged,json=numPurged" json:"num_purged,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *RelaxedReclaimPurge) Reset() { - *x = RelaxedReclaimPurge{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *RelaxedReclaimPurge) Reset() { *m = RelaxedReclaimPurge{} } +func (m *RelaxedReclaimPurge) String() string { return proto.CompactTextString(m) } +func (*RelaxedReclaimPurge) ProtoMessage() {} +func (*RelaxedReclaimPurge) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{40} } - -func (x *RelaxedReclaimPurge) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *RelaxedReclaimPurge) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_RelaxedReclaimPurge.Unmarshal(m, b) } - -func (*RelaxedReclaimPurge) ProtoMessage() {} - -func (x *RelaxedReclaimPurge) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[40] - 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) +func (m *RelaxedReclaimPurge) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_RelaxedReclaimPurge.Marshal(b, m, deterministic) } - -// Deprecated: Use RelaxedReclaimPurge.ProtoReflect.Descriptor instead. -func (*RelaxedReclaimPurge) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{40} +func (dst *RelaxedReclaimPurge) XXX_Merge(src proto.Message) { + xxx_messageInfo_RelaxedReclaimPurge.Merge(dst, src) +} +func (m *RelaxedReclaimPurge) XXX_Size() int { + return xxx_messageInfo_RelaxedReclaimPurge.Size(m) } +func (m *RelaxedReclaimPurge) XXX_DiscardUnknown() { + xxx_messageInfo_RelaxedReclaimPurge.DiscardUnknown(m) +} + +var xxx_messageInfo_RelaxedReclaimPurge proto.InternalMessageInfo -func (x *RelaxedReclaimPurge) GetNumPurged() uint64 { - if x != nil { - return x.NumPurged +func (m *RelaxedReclaimPurge) GetNumPurged() uint64 { + if m != nil { + return m.NumPurged } return 0 } @@ -9139,401 +8768,378 @@ func (x *RelaxedReclaimPurge) GetNumPurged() uint64 { // used before creating volume to validate volume specs or ensure minimum volume creation // rules followed type SdkStoragePolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Name of storage policy. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` // VolumeSpecs to apply while creating volume. - Policy *VolumeSpecPolicy `protobuf:"bytes,2,opt,name=policy,proto3" json:"policy,omitempty"` + Policy *VolumeSpecPolicy `protobuf:"bytes,2,opt,name=policy" json:"policy,omitempty"` // Force if set to true volume specs will be overwritten, otherwise // volume creation will fail if the volume specifications are not inline with storage policy - Force bool `protobuf:"varint,3,opt,name=force,proto3" json:"force,omitempty"` + Force bool `protobuf:"varint,3,opt,name=force" json:"force,omitempty"` // If set a volume can be updated without storage Policy // restriction, otherwise volume update will be followed as per storage policy // specification - AllowUpdate bool `protobuf:"varint,4,opt,name=allow_update,json=allowUpdate,proto3" json:"allow_update,omitempty"` + AllowUpdate bool `protobuf:"varint,4,opt,name=allow_update,json=allowUpdate" json:"allow_update,omitempty"` // Owner info of storage policy - Ownership *Ownership `protobuf:"bytes,5,opt,name=ownership,proto3" json:"ownership,omitempty"` + Ownership *Ownership `protobuf:"bytes,5,opt,name=ownership" json:"ownership,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkStoragePolicy) Reset() { - *x = SdkStoragePolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkStoragePolicy) Reset() { *m = SdkStoragePolicy{} } +func (m *SdkStoragePolicy) String() string { return proto.CompactTextString(m) } +func (*SdkStoragePolicy) ProtoMessage() {} +func (*SdkStoragePolicy) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{41} } - -func (x *SdkStoragePolicy) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkStoragePolicy) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkStoragePolicy.Unmarshal(m, b) } - -func (*SdkStoragePolicy) ProtoMessage() {} - -func (x *SdkStoragePolicy) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[41] - 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) +func (m *SdkStoragePolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkStoragePolicy.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkStoragePolicy.ProtoReflect.Descriptor instead. -func (*SdkStoragePolicy) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{41} +func (dst *SdkStoragePolicy) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkStoragePolicy.Merge(dst, src) +} +func (m *SdkStoragePolicy) XXX_Size() int { + return xxx_messageInfo_SdkStoragePolicy.Size(m) } +func (m *SdkStoragePolicy) XXX_DiscardUnknown() { + xxx_messageInfo_SdkStoragePolicy.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkStoragePolicy proto.InternalMessageInfo -func (x *SdkStoragePolicy) GetName() string { - if x != nil { - return x.Name +func (m *SdkStoragePolicy) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *SdkStoragePolicy) GetPolicy() *VolumeSpecPolicy { - if x != nil { - return x.Policy +func (m *SdkStoragePolicy) GetPolicy() *VolumeSpecPolicy { + if m != nil { + return m.Policy } return nil } -func (x *SdkStoragePolicy) GetForce() bool { - if x != nil { - return x.Force +func (m *SdkStoragePolicy) GetForce() bool { + if m != nil { + return m.Force } return false } -func (x *SdkStoragePolicy) GetAllowUpdate() bool { - if x != nil { - return x.AllowUpdate +func (m *SdkStoragePolicy) GetAllowUpdate() bool { + if m != nil { + return m.AllowUpdate } return false } -func (x *SdkStoragePolicy) GetOwnership() *Ownership { - if x != nil { - return x.Ownership +func (m *SdkStoragePolicy) GetOwnership() *Ownership { + if m != nil { + return m.Ownership } return nil } // Alert is a structure that represents an alert object type Alert struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id for Alert - Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Id int64 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"` // Severity of the Alert - Severity SeverityType `protobuf:"varint,2,opt,name=severity,proto3,enum=openstorage.api.SeverityType" json:"severity,omitempty"` + Severity SeverityType `protobuf:"varint,2,opt,name=severity,enum=openstorage.api.SeverityType" json:"severity,omitempty"` // AlertType user defined alert type - AlertType int64 `protobuf:"varint,3,opt,name=alert_type,json=alertType,proto3" json:"alert_type,omitempty"` + AlertType int64 `protobuf:"varint,3,opt,name=alert_type,json=alertType" json:"alert_type,omitempty"` // Message describing the Alert - Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` - //Timestamp when Alert occurred - Timestamp *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - // ResourceId where Alert occurred - ResourceId string `protobuf:"bytes,6,opt,name=resource_id,json=resourceId,proto3" json:"resource_id,omitempty"` - // Resource where Alert occurred - Resource ResourceType `protobuf:"varint,7,opt,name=resource,proto3,enum=openstorage.api.ResourceType" json:"resource,omitempty"` + Message string `protobuf:"bytes,4,opt,name=message" json:"message,omitempty"` + // Timestamp when Alert occured + Timestamp *timestamp.Timestamp `protobuf:"bytes,5,opt,name=timestamp" json:"timestamp,omitempty"` + // ResourceId where Alert occured + ResourceId string `protobuf:"bytes,6,opt,name=resource_id,json=resourceId" json:"resource_id,omitempty"` + // Resource where Alert occured + Resource ResourceType `protobuf:"varint,7,opt,name=resource,enum=openstorage.api.ResourceType" json:"resource,omitempty"` // Cleared Flag - Cleared bool `protobuf:"varint,8,opt,name=cleared,proto3" json:"cleared,omitempty"` + Cleared bool `protobuf:"varint,8,opt,name=cleared" json:"cleared,omitempty"` // Time-to-live in seconds for this Alert - Ttl uint64 `protobuf:"varint,9,opt,name=ttl,proto3" json:"ttl,omitempty"` + Ttl uint64 `protobuf:"varint,9,opt,name=ttl" json:"ttl,omitempty"` // UniqueTag helps identify a unique alert for a given resouce - UniqueTag string `protobuf:"bytes,10,opt,name=unique_tag,json=uniqueTag,proto3" json:"unique_tag,omitempty"` + UniqueTag string `protobuf:"bytes,10,opt,name=unique_tag,json=uniqueTag" json:"unique_tag,omitempty"` // Count of such alerts raised so far. - Count int64 `protobuf:"varint,11,opt,name=count,proto3" json:"count,omitempty"` + Count int64 `protobuf:"varint,11,opt,name=count" json:"count,omitempty"` // Timestamp when such alert was raised the very first time. - FirstSeen *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=first_seen,json=firstSeen,proto3" json:"first_seen,omitempty"` + FirstSeen *timestamp.Timestamp `protobuf:"bytes,12,opt,name=first_seen,json=firstSeen" json:"first_seen,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Alert) Reset() { - *x = Alert{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *Alert) Reset() { *m = Alert{} } +func (m *Alert) String() string { return proto.CompactTextString(m) } +func (*Alert) ProtoMessage() {} +func (*Alert) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{42} } - -func (x *Alert) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *Alert) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Alert.Unmarshal(m, b) } - -func (*Alert) ProtoMessage() {} - -func (x *Alert) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[42] - 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) +func (m *Alert) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Alert.Marshal(b, m, deterministic) } - -// Deprecated: Use Alert.ProtoReflect.Descriptor instead. -func (*Alert) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{42} +func (dst *Alert) XXX_Merge(src proto.Message) { + xxx_messageInfo_Alert.Merge(dst, src) +} +func (m *Alert) XXX_Size() int { + return xxx_messageInfo_Alert.Size(m) } +func (m *Alert) XXX_DiscardUnknown() { + xxx_messageInfo_Alert.DiscardUnknown(m) +} + +var xxx_messageInfo_Alert proto.InternalMessageInfo -func (x *Alert) GetId() int64 { - if x != nil { - return x.Id +func (m *Alert) GetId() int64 { + if m != nil { + return m.Id } return 0 } -func (x *Alert) GetSeverity() SeverityType { - if x != nil { - return x.Severity +func (m *Alert) GetSeverity() SeverityType { + if m != nil { + return m.Severity } return SeverityType_SEVERITY_TYPE_NONE } -func (x *Alert) GetAlertType() int64 { - if x != nil { - return x.AlertType +func (m *Alert) GetAlertType() int64 { + if m != nil { + return m.AlertType } return 0 } -func (x *Alert) GetMessage() string { - if x != nil { - return x.Message +func (m *Alert) GetMessage() string { + if m != nil { + return m.Message } return "" } -func (x *Alert) GetTimestamp() *timestamppb.Timestamp { - if x != nil { - return x.Timestamp +func (m *Alert) GetTimestamp() *timestamp.Timestamp { + if m != nil { + return m.Timestamp } return nil } -func (x *Alert) GetResourceId() string { - if x != nil { - return x.ResourceId +func (m *Alert) GetResourceId() string { + if m != nil { + return m.ResourceId } return "" } -func (x *Alert) GetResource() ResourceType { - if x != nil { - return x.Resource +func (m *Alert) GetResource() ResourceType { + if m != nil { + return m.Resource } return ResourceType_RESOURCE_TYPE_NONE } -func (x *Alert) GetCleared() bool { - if x != nil { - return x.Cleared +func (m *Alert) GetCleared() bool { + if m != nil { + return m.Cleared } return false } -func (x *Alert) GetTtl() uint64 { - if x != nil { - return x.Ttl +func (m *Alert) GetTtl() uint64 { + if m != nil { + return m.Ttl } return 0 } -func (x *Alert) GetUniqueTag() string { - if x != nil { - return x.UniqueTag +func (m *Alert) GetUniqueTag() string { + if m != nil { + return m.UniqueTag } return "" } -func (x *Alert) GetCount() int64 { - if x != nil { - return x.Count +func (m *Alert) GetCount() int64 { + if m != nil { + return m.Count } return 0 } -func (x *Alert) GetFirstSeen() *timestamppb.Timestamp { - if x != nil { - return x.FirstSeen +func (m *Alert) GetFirstSeen() *timestamp.Timestamp { + if m != nil { + return m.FirstSeen } return nil } // SdkAlertsTimeSpan to store time window information. type SdkAlertsTimeSpan struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - //Start timestamp when Alert occurred - StartTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` - //End timestamp when Alert occurred - EndTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + // Start timestamp when Alert occured + StartTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime" json:"start_time,omitempty"` + // End timestamp when Alert occured + EndTime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime" json:"end_time,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SdkAlertsTimeSpan) Reset() { *m = SdkAlertsTimeSpan{} } +func (m *SdkAlertsTimeSpan) String() string { return proto.CompactTextString(m) } +func (*SdkAlertsTimeSpan) ProtoMessage() {} +func (*SdkAlertsTimeSpan) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{43} } - -func (x *SdkAlertsTimeSpan) Reset() { - *x = SdkAlertsTimeSpan{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkAlertsTimeSpan) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAlertsTimeSpan.Unmarshal(m, b) } - -func (x *SdkAlertsTimeSpan) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAlertsTimeSpan) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAlertsTimeSpan.Marshal(b, m, deterministic) } - -func (*SdkAlertsTimeSpan) ProtoMessage() {} - -func (x *SdkAlertsTimeSpan) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[43] - 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) +func (dst *SdkAlertsTimeSpan) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAlertsTimeSpan.Merge(dst, src) } - -// Deprecated: Use SdkAlertsTimeSpan.ProtoReflect.Descriptor instead. -func (*SdkAlertsTimeSpan) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{43} +func (m *SdkAlertsTimeSpan) XXX_Size() int { + return xxx_messageInfo_SdkAlertsTimeSpan.Size(m) +} +func (m *SdkAlertsTimeSpan) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAlertsTimeSpan.DiscardUnknown(m) } -func (x *SdkAlertsTimeSpan) GetStartTime() *timestamppb.Timestamp { - if x != nil { - return x.StartTime +var xxx_messageInfo_SdkAlertsTimeSpan proto.InternalMessageInfo + +func (m *SdkAlertsTimeSpan) GetStartTime() *timestamp.Timestamp { + if m != nil { + return m.StartTime } return nil } -func (x *SdkAlertsTimeSpan) GetEndTime() *timestamppb.Timestamp { - if x != nil { - return x.EndTime +func (m *SdkAlertsTimeSpan) GetEndTime() *timestamp.Timestamp { + if m != nil { + return m.EndTime } return nil } // SdkAlertsCountSpan to store count range information. type SdkAlertsCountSpan struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Min count of such alerts raised so far. - MinCount int64 `protobuf:"varint,1,opt,name=min_count,json=minCount,proto3" json:"min_count,omitempty"` + MinCount int64 `protobuf:"varint,1,opt,name=min_count,json=minCount" json:"min_count,omitempty"` // Max count of such alerts raised so far. - MaxCount int64 `protobuf:"varint,2,opt,name=max_count,json=maxCount,proto3" json:"max_count,omitempty"` + MaxCount int64 `protobuf:"varint,2,opt,name=max_count,json=maxCount" json:"max_count,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkAlertsCountSpan) Reset() { - *x = SdkAlertsCountSpan{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkAlertsCountSpan) Reset() { *m = SdkAlertsCountSpan{} } +func (m *SdkAlertsCountSpan) String() string { return proto.CompactTextString(m) } +func (*SdkAlertsCountSpan) ProtoMessage() {} +func (*SdkAlertsCountSpan) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{44} } - -func (x *SdkAlertsCountSpan) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAlertsCountSpan) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAlertsCountSpan.Unmarshal(m, b) } - -func (*SdkAlertsCountSpan) ProtoMessage() {} - -func (x *SdkAlertsCountSpan) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[44] - 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) +func (m *SdkAlertsCountSpan) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAlertsCountSpan.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkAlertsCountSpan.ProtoReflect.Descriptor instead. -func (*SdkAlertsCountSpan) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{44} +func (dst *SdkAlertsCountSpan) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAlertsCountSpan.Merge(dst, src) +} +func (m *SdkAlertsCountSpan) XXX_Size() int { + return xxx_messageInfo_SdkAlertsCountSpan.Size(m) } +func (m *SdkAlertsCountSpan) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAlertsCountSpan.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkAlertsCountSpan proto.InternalMessageInfo -func (x *SdkAlertsCountSpan) GetMinCount() int64 { - if x != nil { - return x.MinCount +func (m *SdkAlertsCountSpan) GetMinCount() int64 { + if m != nil { + return m.MinCount } return 0 } -func (x *SdkAlertsCountSpan) GetMaxCount() int64 { - if x != nil { - return x.MaxCount +func (m *SdkAlertsCountSpan) GetMaxCount() int64 { + if m != nil { + return m.MaxCount } return 0 } // SdkAlertsOption contains options for filtering alerts. type SdkAlertsOption struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Opt: + // Types that are valid to be assigned to Opt: // *SdkAlertsOption_MinSeverityType // *SdkAlertsOption_IsCleared // *SdkAlertsOption_TimeSpan // *SdkAlertsOption_CountSpan - Opt isSdkAlertsOption_Opt `protobuf_oneof:"opt"` + Opt isSdkAlertsOption_Opt `protobuf_oneof:"opt"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkAlertsOption) Reset() { - *x = SdkAlertsOption{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[45] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkAlertsOption) Reset() { *m = SdkAlertsOption{} } +func (m *SdkAlertsOption) String() string { return proto.CompactTextString(m) } +func (*SdkAlertsOption) ProtoMessage() {} +func (*SdkAlertsOption) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{45} } - -func (x *SdkAlertsOption) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAlertsOption) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAlertsOption.Unmarshal(m, b) +} +func (m *SdkAlertsOption) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAlertsOption.Marshal(b, m, deterministic) +} +func (dst *SdkAlertsOption) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAlertsOption.Merge(dst, src) +} +func (m *SdkAlertsOption) XXX_Size() int { + return xxx_messageInfo_SdkAlertsOption.Size(m) +} +func (m *SdkAlertsOption) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAlertsOption.DiscardUnknown(m) } -func (*SdkAlertsOption) ProtoMessage() {} +var xxx_messageInfo_SdkAlertsOption proto.InternalMessageInfo -func (x *SdkAlertsOption) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[45] - 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) +type isSdkAlertsOption_Opt interface { + isSdkAlertsOption_Opt() } -// Deprecated: Use SdkAlertsOption.ProtoReflect.Descriptor instead. -func (*SdkAlertsOption) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{45} +type SdkAlertsOption_MinSeverityType struct { + MinSeverityType SeverityType `protobuf:"varint,1,opt,name=min_severity_type,json=minSeverityType,enum=openstorage.api.SeverityType,oneof"` } +type SdkAlertsOption_IsCleared struct { + IsCleared bool `protobuf:"varint,2,opt,name=is_cleared,json=isCleared,oneof"` +} +type SdkAlertsOption_TimeSpan struct { + TimeSpan *SdkAlertsTimeSpan `protobuf:"bytes,3,opt,name=time_span,json=timeSpan,oneof"` +} +type SdkAlertsOption_CountSpan struct { + CountSpan *SdkAlertsCountSpan `protobuf:"bytes,4,opt,name=count_span,json=countSpan,oneof"` +} + +func (*SdkAlertsOption_MinSeverityType) isSdkAlertsOption_Opt() {} +func (*SdkAlertsOption_IsCleared) isSdkAlertsOption_Opt() {} +func (*SdkAlertsOption_TimeSpan) isSdkAlertsOption_Opt() {} +func (*SdkAlertsOption_CountSpan) isSdkAlertsOption_Opt() {} func (m *SdkAlertsOption) GetOpt() isSdkAlertsOption_Opt { if m != nil { @@ -9542,111 +9148,176 @@ func (m *SdkAlertsOption) GetOpt() isSdkAlertsOption_Opt { return nil } -func (x *SdkAlertsOption) GetMinSeverityType() SeverityType { - if x, ok := x.GetOpt().(*SdkAlertsOption_MinSeverityType); ok { +func (m *SdkAlertsOption) GetMinSeverityType() SeverityType { + if x, ok := m.GetOpt().(*SdkAlertsOption_MinSeverityType); ok { return x.MinSeverityType } return SeverityType_SEVERITY_TYPE_NONE } -func (x *SdkAlertsOption) GetIsCleared() bool { - if x, ok := x.GetOpt().(*SdkAlertsOption_IsCleared); ok { +func (m *SdkAlertsOption) GetIsCleared() bool { + if x, ok := m.GetOpt().(*SdkAlertsOption_IsCleared); ok { return x.IsCleared } return false } -func (x *SdkAlertsOption) GetTimeSpan() *SdkAlertsTimeSpan { - if x, ok := x.GetOpt().(*SdkAlertsOption_TimeSpan); ok { +func (m *SdkAlertsOption) GetTimeSpan() *SdkAlertsTimeSpan { + if x, ok := m.GetOpt().(*SdkAlertsOption_TimeSpan); ok { return x.TimeSpan } return nil } -func (x *SdkAlertsOption) GetCountSpan() *SdkAlertsCountSpan { - if x, ok := x.GetOpt().(*SdkAlertsOption_CountSpan); ok { +func (m *SdkAlertsOption) GetCountSpan() *SdkAlertsCountSpan { + if x, ok := m.GetOpt().(*SdkAlertsOption_CountSpan); ok { return x.CountSpan } return nil } -type isSdkAlertsOption_Opt interface { - isSdkAlertsOption_Opt() +// XXX_OneofFuncs is for the internal use of the proto package. +func (*SdkAlertsOption) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _SdkAlertsOption_OneofMarshaler, _SdkAlertsOption_OneofUnmarshaler, _SdkAlertsOption_OneofSizer, []interface{}{ + (*SdkAlertsOption_MinSeverityType)(nil), + (*SdkAlertsOption_IsCleared)(nil), + (*SdkAlertsOption_TimeSpan)(nil), + (*SdkAlertsOption_CountSpan)(nil), + } } -type SdkAlertsOption_MinSeverityType struct { - // Query using minimum severity type. - MinSeverityType SeverityType `protobuf:"varint,1,opt,name=min_severity_type,json=minSeverityType,proto3,enum=openstorage.api.SeverityType,oneof"` +func _SdkAlertsOption_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*SdkAlertsOption) + // opt + switch x := m.Opt.(type) { + case *SdkAlertsOption_MinSeverityType: + b.EncodeVarint(1<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.MinSeverityType)) + case *SdkAlertsOption_IsCleared: + t := uint64(0) + if x.IsCleared { + t = 1 + } + b.EncodeVarint(2<<3 | proto.WireVarint) + b.EncodeVarint(t) + case *SdkAlertsOption_TimeSpan: + b.EncodeVarint(3<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.TimeSpan); err != nil { + return err + } + case *SdkAlertsOption_CountSpan: + b.EncodeVarint(4<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.CountSpan); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("SdkAlertsOption.Opt has unexpected type %T", x) + } + return nil +} + +func _SdkAlertsOption_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*SdkAlertsOption) + switch tag { + case 1: // opt.min_severity_type + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.Opt = &SdkAlertsOption_MinSeverityType{SeverityType(x)} + return true, err + case 2: // opt.is_cleared + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.Opt = &SdkAlertsOption_IsCleared{x != 0} + return true, err + case 3: // opt.time_span + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkAlertsTimeSpan) + err := b.DecodeMessage(msg) + m.Opt = &SdkAlertsOption_TimeSpan{msg} + return true, err + case 4: // opt.count_span + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkAlertsCountSpan) + err := b.DecodeMessage(msg) + m.Opt = &SdkAlertsOption_CountSpan{msg} + return true, err + default: + return false, nil + } +} + +func _SdkAlertsOption_OneofSizer(msg proto.Message) (n int) { + m := msg.(*SdkAlertsOption) + // opt + switch x := m.Opt.(type) { + case *SdkAlertsOption_MinSeverityType: + n += 1 // tag and wire + n += proto.SizeVarint(uint64(x.MinSeverityType)) + case *SdkAlertsOption_IsCleared: + n += 1 // tag and wire + n += 1 + case *SdkAlertsOption_TimeSpan: + s := proto.Size(x.TimeSpan) + n += 1 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case *SdkAlertsOption_CountSpan: + s := proto.Size(x.CountSpan) + n += 1 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n } -type SdkAlertsOption_IsCleared struct { - // Query using cleared flag. - IsCleared bool `protobuf:"varint,2,opt,name=is_cleared,json=isCleared,proto3,oneof"` +// SdkAlertsResourceTypeQuery queries for alerts using only resource id. +type SdkAlertsResourceTypeQuery struct { + // Resource type used to build query. + ResourceType ResourceType `protobuf:"varint,1,opt,name=resource_type,json=resourceType,enum=openstorage.api.ResourceType" json:"resource_type,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -type SdkAlertsOption_TimeSpan struct { - // Query using a time span during which alert was last seen. - TimeSpan *SdkAlertsTimeSpan `protobuf:"bytes,3,opt,name=time_span,json=timeSpan,proto3,oneof"` +func (m *SdkAlertsResourceTypeQuery) Reset() { *m = SdkAlertsResourceTypeQuery{} } +func (m *SdkAlertsResourceTypeQuery) String() string { return proto.CompactTextString(m) } +func (*SdkAlertsResourceTypeQuery) ProtoMessage() {} +func (*SdkAlertsResourceTypeQuery) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{46} } - -type SdkAlertsOption_CountSpan struct { - // Query using a count span in which alert count exists. - CountSpan *SdkAlertsCountSpan `protobuf:"bytes,4,opt,name=count_span,json=countSpan,proto3,oneof"` +func (m *SdkAlertsResourceTypeQuery) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAlertsResourceTypeQuery.Unmarshal(m, b) } - -func (*SdkAlertsOption_MinSeverityType) isSdkAlertsOption_Opt() {} - -func (*SdkAlertsOption_IsCleared) isSdkAlertsOption_Opt() {} - -func (*SdkAlertsOption_TimeSpan) isSdkAlertsOption_Opt() {} - -func (*SdkAlertsOption_CountSpan) isSdkAlertsOption_Opt() {} - -// SdkAlertsResourceTypeQuery queries for alerts using only resource id. -type SdkAlertsResourceTypeQuery struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Resource type used to build query. - ResourceType ResourceType `protobuf:"varint,1,opt,name=resource_type,json=resourceType,proto3,enum=openstorage.api.ResourceType" json:"resource_type,omitempty"` +func (m *SdkAlertsResourceTypeQuery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAlertsResourceTypeQuery.Marshal(b, m, deterministic) } - -func (x *SdkAlertsResourceTypeQuery) Reset() { - *x = SdkAlertsResourceTypeQuery{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[46] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (dst *SdkAlertsResourceTypeQuery) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAlertsResourceTypeQuery.Merge(dst, src) } - -func (x *SdkAlertsResourceTypeQuery) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAlertsResourceTypeQuery) XXX_Size() int { + return xxx_messageInfo_SdkAlertsResourceTypeQuery.Size(m) } - -func (*SdkAlertsResourceTypeQuery) ProtoMessage() {} - -func (x *SdkAlertsResourceTypeQuery) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[46] - 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) +func (m *SdkAlertsResourceTypeQuery) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAlertsResourceTypeQuery.DiscardUnknown(m) } -// Deprecated: Use SdkAlertsResourceTypeQuery.ProtoReflect.Descriptor instead. -func (*SdkAlertsResourceTypeQuery) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{46} -} +var xxx_messageInfo_SdkAlertsResourceTypeQuery proto.InternalMessageInfo -func (x *SdkAlertsResourceTypeQuery) GetResourceType() ResourceType { - if x != nil { - return x.ResourceType +func (m *SdkAlertsResourceTypeQuery) GetResourceType() ResourceType { + if m != nil { + return m.ResourceType } return ResourceType_RESOURCE_TYPE_NONE } @@ -9654,58 +9325,49 @@ func (x *SdkAlertsResourceTypeQuery) GetResourceType() ResourceType { // SdkAlertsAlertTypeQuery queries for alerts using alert type // and it requires that resource type be provided as well. type SdkAlertsAlertTypeQuery struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Resource type used to build query. - ResourceType ResourceType `protobuf:"varint,1,opt,name=resource_type,json=resourceType,proto3,enum=openstorage.api.ResourceType" json:"resource_type,omitempty"` + ResourceType ResourceType `protobuf:"varint,1,opt,name=resource_type,json=resourceType,enum=openstorage.api.ResourceType" json:"resource_type,omitempty"` // Alert type used to build query. - AlertType int64 `protobuf:"varint,2,opt,name=alert_type,json=alertType,proto3" json:"alert_type,omitempty"` + AlertType int64 `protobuf:"varint,2,opt,name=alert_type,json=alertType" json:"alert_type,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkAlertsAlertTypeQuery) Reset() { - *x = SdkAlertsAlertTypeQuery{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[47] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkAlertsAlertTypeQuery) Reset() { *m = SdkAlertsAlertTypeQuery{} } +func (m *SdkAlertsAlertTypeQuery) String() string { return proto.CompactTextString(m) } +func (*SdkAlertsAlertTypeQuery) ProtoMessage() {} +func (*SdkAlertsAlertTypeQuery) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{47} } - -func (x *SdkAlertsAlertTypeQuery) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAlertsAlertTypeQuery) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAlertsAlertTypeQuery.Unmarshal(m, b) } - -func (*SdkAlertsAlertTypeQuery) ProtoMessage() {} - -func (x *SdkAlertsAlertTypeQuery) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[47] - 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) +func (m *SdkAlertsAlertTypeQuery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAlertsAlertTypeQuery.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkAlertsAlertTypeQuery.ProtoReflect.Descriptor instead. -func (*SdkAlertsAlertTypeQuery) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{47} +func (dst *SdkAlertsAlertTypeQuery) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAlertsAlertTypeQuery.Merge(dst, src) +} +func (m *SdkAlertsAlertTypeQuery) XXX_Size() int { + return xxx_messageInfo_SdkAlertsAlertTypeQuery.Size(m) +} +func (m *SdkAlertsAlertTypeQuery) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAlertsAlertTypeQuery.DiscardUnknown(m) } -func (x *SdkAlertsAlertTypeQuery) GetResourceType() ResourceType { - if x != nil { - return x.ResourceType +var xxx_messageInfo_SdkAlertsAlertTypeQuery proto.InternalMessageInfo + +func (m *SdkAlertsAlertTypeQuery) GetResourceType() ResourceType { + if m != nil { + return m.ResourceType } return ResourceType_RESOURCE_TYPE_NONE } -func (x *SdkAlertsAlertTypeQuery) GetAlertType() int64 { - if x != nil { - return x.AlertType +func (m *SdkAlertsAlertTypeQuery) GetAlertType() int64 { + if m != nil { + return m.AlertType } return 0 } @@ -9714,67 +9376,58 @@ func (x *SdkAlertsAlertTypeQuery) GetAlertType() int64 { // and it requires that both alert type and resource type be provided // as well. type SdkAlertsResourceIdQuery struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Resource type used to build query. - ResourceType ResourceType `protobuf:"varint,1,opt,name=resource_type,json=resourceType,proto3,enum=openstorage.api.ResourceType" json:"resource_type,omitempty"` + ResourceType ResourceType `protobuf:"varint,1,opt,name=resource_type,json=resourceType,enum=openstorage.api.ResourceType" json:"resource_type,omitempty"` // Alert type used to build query. - AlertType int64 `protobuf:"varint,2,opt,name=alert_type,json=alertType,proto3" json:"alert_type,omitempty"` + AlertType int64 `protobuf:"varint,2,opt,name=alert_type,json=alertType" json:"alert_type,omitempty"` // Resource ID used to build query. - ResourceId string `protobuf:"bytes,3,opt,name=resource_id,json=resourceId,proto3" json:"resource_id,omitempty"` + ResourceId string `protobuf:"bytes,3,opt,name=resource_id,json=resourceId" json:"resource_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkAlertsResourceIdQuery) Reset() { - *x = SdkAlertsResourceIdQuery{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[48] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkAlertsResourceIdQuery) Reset() { *m = SdkAlertsResourceIdQuery{} } +func (m *SdkAlertsResourceIdQuery) String() string { return proto.CompactTextString(m) } +func (*SdkAlertsResourceIdQuery) ProtoMessage() {} +func (*SdkAlertsResourceIdQuery) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{48} } - -func (x *SdkAlertsResourceIdQuery) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAlertsResourceIdQuery) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAlertsResourceIdQuery.Unmarshal(m, b) } - -func (*SdkAlertsResourceIdQuery) ProtoMessage() {} - -func (x *SdkAlertsResourceIdQuery) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[48] - 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) +func (m *SdkAlertsResourceIdQuery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAlertsResourceIdQuery.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkAlertsResourceIdQuery.ProtoReflect.Descriptor instead. -func (*SdkAlertsResourceIdQuery) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{48} +func (dst *SdkAlertsResourceIdQuery) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAlertsResourceIdQuery.Merge(dst, src) +} +func (m *SdkAlertsResourceIdQuery) XXX_Size() int { + return xxx_messageInfo_SdkAlertsResourceIdQuery.Size(m) } +func (m *SdkAlertsResourceIdQuery) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAlertsResourceIdQuery.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkAlertsResourceIdQuery proto.InternalMessageInfo -func (x *SdkAlertsResourceIdQuery) GetResourceType() ResourceType { - if x != nil { - return x.ResourceType +func (m *SdkAlertsResourceIdQuery) GetResourceType() ResourceType { + if m != nil { + return m.ResourceType } return ResourceType_RESOURCE_TYPE_NONE } -func (x *SdkAlertsResourceIdQuery) GetAlertType() int64 { - if x != nil { - return x.AlertType +func (m *SdkAlertsResourceIdQuery) GetAlertType() int64 { + if m != nil { + return m.AlertType } return 0 } -func (x *SdkAlertsResourceIdQuery) GetResourceId() string { - if x != nil { - return x.ResourceId +func (m *SdkAlertsResourceIdQuery) GetResourceId() string { + if m != nil { + return m.ResourceId } return "" } @@ -9783,53 +9436,62 @@ func (x *SdkAlertsResourceIdQuery) GetResourceId() string { // Each query object is one of the three query types and a list of // options. type SdkAlertsQuery struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // One of the query types can be used to build SdkAlertsQuery. // - // Types that are assignable to Query: + // Types that are valid to be assigned to Query: // *SdkAlertsQuery_ResourceTypeQuery // *SdkAlertsQuery_AlertTypeQuery // *SdkAlertsQuery_ResourceIdQuery Query isSdkAlertsQuery_Query `protobuf_oneof:"query"` // Opts is a list of options associated with one of the queries. - Opts []*SdkAlertsOption `protobuf:"bytes,4,rep,name=opts,proto3" json:"opts,omitempty"` + Opts []*SdkAlertsOption `protobuf:"bytes,4,rep,name=opts" json:"opts,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkAlertsQuery) Reset() { - *x = SdkAlertsQuery{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[49] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkAlertsQuery) Reset() { *m = SdkAlertsQuery{} } +func (m *SdkAlertsQuery) String() string { return proto.CompactTextString(m) } +func (*SdkAlertsQuery) ProtoMessage() {} +func (*SdkAlertsQuery) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{49} } - -func (x *SdkAlertsQuery) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAlertsQuery) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAlertsQuery.Unmarshal(m, b) +} +func (m *SdkAlertsQuery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAlertsQuery.Marshal(b, m, deterministic) +} +func (dst *SdkAlertsQuery) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAlertsQuery.Merge(dst, src) +} +func (m *SdkAlertsQuery) XXX_Size() int { + return xxx_messageInfo_SdkAlertsQuery.Size(m) +} +func (m *SdkAlertsQuery) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAlertsQuery.DiscardUnknown(m) } -func (*SdkAlertsQuery) ProtoMessage() {} +var xxx_messageInfo_SdkAlertsQuery proto.InternalMessageInfo -func (x *SdkAlertsQuery) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[49] - 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) +type isSdkAlertsQuery_Query interface { + isSdkAlertsQuery_Query() } -// Deprecated: Use SdkAlertsQuery.ProtoReflect.Descriptor instead. -func (*SdkAlertsQuery) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{49} +type SdkAlertsQuery_ResourceTypeQuery struct { + ResourceTypeQuery *SdkAlertsResourceTypeQuery `protobuf:"bytes,1,opt,name=resource_type_query,json=resourceTypeQuery,oneof"` +} +type SdkAlertsQuery_AlertTypeQuery struct { + AlertTypeQuery *SdkAlertsAlertTypeQuery `protobuf:"bytes,2,opt,name=alert_type_query,json=alertTypeQuery,oneof"` +} +type SdkAlertsQuery_ResourceIdQuery struct { + ResourceIdQuery *SdkAlertsResourceIdQuery `protobuf:"bytes,3,opt,name=resource_id_query,json=resourceIdQuery,oneof"` } +func (*SdkAlertsQuery_ResourceTypeQuery) isSdkAlertsQuery_Query() {} +func (*SdkAlertsQuery_AlertTypeQuery) isSdkAlertsQuery_Query() {} +func (*SdkAlertsQuery_ResourceIdQuery) isSdkAlertsQuery_Query() {} + func (m *SdkAlertsQuery) GetQuery() isSdkAlertsQuery_Query { if m != nil { return m.Query @@ -9837,433 +9499,448 @@ func (m *SdkAlertsQuery) GetQuery() isSdkAlertsQuery_Query { return nil } -func (x *SdkAlertsQuery) GetResourceTypeQuery() *SdkAlertsResourceTypeQuery { - if x, ok := x.GetQuery().(*SdkAlertsQuery_ResourceTypeQuery); ok { +func (m *SdkAlertsQuery) GetResourceTypeQuery() *SdkAlertsResourceTypeQuery { + if x, ok := m.GetQuery().(*SdkAlertsQuery_ResourceTypeQuery); ok { return x.ResourceTypeQuery } return nil } -func (x *SdkAlertsQuery) GetAlertTypeQuery() *SdkAlertsAlertTypeQuery { - if x, ok := x.GetQuery().(*SdkAlertsQuery_AlertTypeQuery); ok { +func (m *SdkAlertsQuery) GetAlertTypeQuery() *SdkAlertsAlertTypeQuery { + if x, ok := m.GetQuery().(*SdkAlertsQuery_AlertTypeQuery); ok { return x.AlertTypeQuery } return nil } -func (x *SdkAlertsQuery) GetResourceIdQuery() *SdkAlertsResourceIdQuery { - if x, ok := x.GetQuery().(*SdkAlertsQuery_ResourceIdQuery); ok { +func (m *SdkAlertsQuery) GetResourceIdQuery() *SdkAlertsResourceIdQuery { + if x, ok := m.GetQuery().(*SdkAlertsQuery_ResourceIdQuery); ok { return x.ResourceIdQuery } return nil } -func (x *SdkAlertsQuery) GetOpts() []*SdkAlertsOption { - if x != nil { - return x.Opts +func (m *SdkAlertsQuery) GetOpts() []*SdkAlertsOption { + if m != nil { + return m.Opts } return nil } -type isSdkAlertsQuery_Query interface { - isSdkAlertsQuery_Query() -} - -type SdkAlertsQuery_ResourceTypeQuery struct { - // Query only using resource type. - ResourceTypeQuery *SdkAlertsResourceTypeQuery `protobuf:"bytes,1,opt,name=resource_type_query,json=resourceTypeQuery,proto3,oneof"` -} - -type SdkAlertsQuery_AlertTypeQuery struct { - // Query using alert type and resource type. - AlertTypeQuery *SdkAlertsAlertTypeQuery `protobuf:"bytes,2,opt,name=alert_type_query,json=alertTypeQuery,proto3,oneof"` +// XXX_OneofFuncs is for the internal use of the proto package. +func (*SdkAlertsQuery) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _SdkAlertsQuery_OneofMarshaler, _SdkAlertsQuery_OneofUnmarshaler, _SdkAlertsQuery_OneofSizer, []interface{}{ + (*SdkAlertsQuery_ResourceTypeQuery)(nil), + (*SdkAlertsQuery_AlertTypeQuery)(nil), + (*SdkAlertsQuery_ResourceIdQuery)(nil), + } } -type SdkAlertsQuery_ResourceIdQuery struct { - // Query using resource id, alert type and resource type. - ResourceIdQuery *SdkAlertsResourceIdQuery `protobuf:"bytes,3,opt,name=resource_id_query,json=resourceIdQuery,proto3,oneof"` +func _SdkAlertsQuery_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*SdkAlertsQuery) + // query + switch x := m.Query.(type) { + case *SdkAlertsQuery_ResourceTypeQuery: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.ResourceTypeQuery); err != nil { + return err + } + case *SdkAlertsQuery_AlertTypeQuery: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.AlertTypeQuery); err != nil { + return err + } + case *SdkAlertsQuery_ResourceIdQuery: + b.EncodeVarint(3<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.ResourceIdQuery); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("SdkAlertsQuery.Query has unexpected type %T", x) + } + return nil +} + +func _SdkAlertsQuery_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*SdkAlertsQuery) + switch tag { + case 1: // query.resource_type_query + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkAlertsResourceTypeQuery) + err := b.DecodeMessage(msg) + m.Query = &SdkAlertsQuery_ResourceTypeQuery{msg} + return true, err + case 2: // query.alert_type_query + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkAlertsAlertTypeQuery) + err := b.DecodeMessage(msg) + m.Query = &SdkAlertsQuery_AlertTypeQuery{msg} + return true, err + case 3: // query.resource_id_query + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkAlertsResourceIdQuery) + err := b.DecodeMessage(msg) + m.Query = &SdkAlertsQuery_ResourceIdQuery{msg} + return true, err + default: + return false, nil + } +} + +func _SdkAlertsQuery_OneofSizer(msg proto.Message) (n int) { + m := msg.(*SdkAlertsQuery) + // query + switch x := m.Query.(type) { + case *SdkAlertsQuery_ResourceTypeQuery: + s := proto.Size(x.ResourceTypeQuery) + n += 1 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case *SdkAlertsQuery_AlertTypeQuery: + s := proto.Size(x.AlertTypeQuery) + n += 1 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case *SdkAlertsQuery_ResourceIdQuery: + s := proto.Size(x.ResourceIdQuery) + n += 1 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n } -func (*SdkAlertsQuery_ResourceTypeQuery) isSdkAlertsQuery_Query() {} - -func (*SdkAlertsQuery_AlertTypeQuery) isSdkAlertsQuery_Query() {} - -func (*SdkAlertsQuery_ResourceIdQuery) isSdkAlertsQuery_Query() {} - // SdkAlertsEnumerateRequest is a request message to enumerate alerts. type SdkAlertsEnumerateWithFiltersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // It is a list of queries to find matching alerts. // Output of each of these queries is added to a global pool // and returned as output of an RPC call. // In that sense alerts are fetched if they match any of the // queries. - Queries []*SdkAlertsQuery `protobuf:"bytes,1,rep,name=queries,proto3" json:"queries,omitempty"` + Queries []*SdkAlertsQuery `protobuf:"bytes,1,rep,name=queries" json:"queries,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkAlertsEnumerateWithFiltersRequest) Reset() { - *x = SdkAlertsEnumerateWithFiltersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[50] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkAlertsEnumerateWithFiltersRequest) Reset() { *m = SdkAlertsEnumerateWithFiltersRequest{} } +func (m *SdkAlertsEnumerateWithFiltersRequest) String() string { return proto.CompactTextString(m) } +func (*SdkAlertsEnumerateWithFiltersRequest) ProtoMessage() {} +func (*SdkAlertsEnumerateWithFiltersRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{50} } - -func (x *SdkAlertsEnumerateWithFiltersRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAlertsEnumerateWithFiltersRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAlertsEnumerateWithFiltersRequest.Unmarshal(m, b) } - -func (*SdkAlertsEnumerateWithFiltersRequest) ProtoMessage() {} - -func (x *SdkAlertsEnumerateWithFiltersRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[50] - 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) +func (m *SdkAlertsEnumerateWithFiltersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAlertsEnumerateWithFiltersRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkAlertsEnumerateWithFiltersRequest.ProtoReflect.Descriptor instead. -func (*SdkAlertsEnumerateWithFiltersRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{50} +func (dst *SdkAlertsEnumerateWithFiltersRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAlertsEnumerateWithFiltersRequest.Merge(dst, src) +} +func (m *SdkAlertsEnumerateWithFiltersRequest) XXX_Size() int { + return xxx_messageInfo_SdkAlertsEnumerateWithFiltersRequest.Size(m) } +func (m *SdkAlertsEnumerateWithFiltersRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAlertsEnumerateWithFiltersRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkAlertsEnumerateWithFiltersRequest proto.InternalMessageInfo -func (x *SdkAlertsEnumerateWithFiltersRequest) GetQueries() []*SdkAlertsQuery { - if x != nil { - return x.Queries +func (m *SdkAlertsEnumerateWithFiltersRequest) GetQueries() []*SdkAlertsQuery { + if m != nil { + return m.Queries } return nil } // SdkAlertsEnumerateResponse is a list of alerts. type SdkAlertsEnumerateWithFiltersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Response contains a list of alerts. - Alerts []*Alert `protobuf:"bytes,1,rep,name=alerts,proto3" json:"alerts,omitempty"` + Alerts []*Alert `protobuf:"bytes,1,rep,name=alerts" json:"alerts,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkAlertsEnumerateWithFiltersResponse) Reset() { - *x = SdkAlertsEnumerateWithFiltersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[51] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkAlertsEnumerateWithFiltersResponse) Reset() { *m = SdkAlertsEnumerateWithFiltersResponse{} } +func (m *SdkAlertsEnumerateWithFiltersResponse) String() string { return proto.CompactTextString(m) } +func (*SdkAlertsEnumerateWithFiltersResponse) ProtoMessage() {} +func (*SdkAlertsEnumerateWithFiltersResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{51} } - -func (x *SdkAlertsEnumerateWithFiltersResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAlertsEnumerateWithFiltersResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAlertsEnumerateWithFiltersResponse.Unmarshal(m, b) } - -func (*SdkAlertsEnumerateWithFiltersResponse) ProtoMessage() {} - -func (x *SdkAlertsEnumerateWithFiltersResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[51] - 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) +func (m *SdkAlertsEnumerateWithFiltersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAlertsEnumerateWithFiltersResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkAlertsEnumerateWithFiltersResponse.ProtoReflect.Descriptor instead. -func (*SdkAlertsEnumerateWithFiltersResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{51} +func (dst *SdkAlertsEnumerateWithFiltersResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAlertsEnumerateWithFiltersResponse.Merge(dst, src) +} +func (m *SdkAlertsEnumerateWithFiltersResponse) XXX_Size() int { + return xxx_messageInfo_SdkAlertsEnumerateWithFiltersResponse.Size(m) } +func (m *SdkAlertsEnumerateWithFiltersResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAlertsEnumerateWithFiltersResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkAlertsEnumerateWithFiltersResponse proto.InternalMessageInfo -func (x *SdkAlertsEnumerateWithFiltersResponse) GetAlerts() []*Alert { - if x != nil { - return x.Alerts +func (m *SdkAlertsEnumerateWithFiltersResponse) GetAlerts() []*Alert { + if m != nil { + return m.Alerts } return nil } // SdkAlertsDeleteRequest is a request message to delete alerts. type SdkAlertsDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // It takes a list of queries to find matching alerts. // Matching alerts are deleted. - Queries []*SdkAlertsQuery `protobuf:"bytes,1,rep,name=queries,proto3" json:"queries,omitempty"` + Queries []*SdkAlertsQuery `protobuf:"bytes,1,rep,name=queries" json:"queries,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkAlertsDeleteRequest) Reset() { - *x = SdkAlertsDeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[52] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkAlertsDeleteRequest) Reset() { *m = SdkAlertsDeleteRequest{} } +func (m *SdkAlertsDeleteRequest) String() string { return proto.CompactTextString(m) } +func (*SdkAlertsDeleteRequest) ProtoMessage() {} +func (*SdkAlertsDeleteRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{52} } - -func (x *SdkAlertsDeleteRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAlertsDeleteRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAlertsDeleteRequest.Unmarshal(m, b) } - -func (*SdkAlertsDeleteRequest) ProtoMessage() {} - -func (x *SdkAlertsDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[52] - 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) +func (m *SdkAlertsDeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAlertsDeleteRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkAlertsDeleteRequest.ProtoReflect.Descriptor instead. -func (*SdkAlertsDeleteRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{52} +func (dst *SdkAlertsDeleteRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAlertsDeleteRequest.Merge(dst, src) +} +func (m *SdkAlertsDeleteRequest) XXX_Size() int { + return xxx_messageInfo_SdkAlertsDeleteRequest.Size(m) } +func (m *SdkAlertsDeleteRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAlertsDeleteRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkAlertsDeleteRequest proto.InternalMessageInfo -func (x *SdkAlertsDeleteRequest) GetQueries() []*SdkAlertsQuery { - if x != nil { - return x.Queries +func (m *SdkAlertsDeleteRequest) GetQueries() []*SdkAlertsQuery { + if m != nil { + return m.Queries } return nil } // SdkAlertsDeleteResponse is empty. type SdkAlertsDeleteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkAlertsDeleteResponse) Reset() { - *x = SdkAlertsDeleteResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[53] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkAlertsDeleteResponse) Reset() { *m = SdkAlertsDeleteResponse{} } +func (m *SdkAlertsDeleteResponse) String() string { return proto.CompactTextString(m) } +func (*SdkAlertsDeleteResponse) ProtoMessage() {} +func (*SdkAlertsDeleteResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{53} } - -func (x *SdkAlertsDeleteResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAlertsDeleteResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAlertsDeleteResponse.Unmarshal(m, b) } - -func (*SdkAlertsDeleteResponse) ProtoMessage() {} - -func (x *SdkAlertsDeleteResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[53] - 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) +func (m *SdkAlertsDeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAlertsDeleteResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkAlertsDeleteResponse.ProtoReflect.Descriptor instead. -func (*SdkAlertsDeleteResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{53} +func (dst *SdkAlertsDeleteResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAlertsDeleteResponse.Merge(dst, src) +} +func (m *SdkAlertsDeleteResponse) XXX_Size() int { + return xxx_messageInfo_SdkAlertsDeleteResponse.Size(m) +} +func (m *SdkAlertsDeleteResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAlertsDeleteResponse.DiscardUnknown(m) } +var xxx_messageInfo_SdkAlertsDeleteResponse proto.InternalMessageInfo + // Alerts is an array of Alert objects type Alerts struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Alert []*Alert `protobuf:"bytes,1,rep,name=alert,proto3" json:"alert,omitempty"` + Alert []*Alert `protobuf:"bytes,1,rep,name=alert" json:"alert,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Alerts) Reset() { - *x = Alerts{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[54] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *Alerts) Reset() { *m = Alerts{} } +func (m *Alerts) String() string { return proto.CompactTextString(m) } +func (*Alerts) ProtoMessage() {} +func (*Alerts) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{54} } - -func (x *Alerts) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *Alerts) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Alerts.Unmarshal(m, b) } - -func (*Alerts) ProtoMessage() {} - -func (x *Alerts) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[54] - 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) +func (m *Alerts) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Alerts.Marshal(b, m, deterministic) } - -// Deprecated: Use Alerts.ProtoReflect.Descriptor instead. -func (*Alerts) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{54} +func (dst *Alerts) XXX_Merge(src proto.Message) { + xxx_messageInfo_Alerts.Merge(dst, src) +} +func (m *Alerts) XXX_Size() int { + return xxx_messageInfo_Alerts.Size(m) } +func (m *Alerts) XXX_DiscardUnknown() { + xxx_messageInfo_Alerts.DiscardUnknown(m) +} + +var xxx_messageInfo_Alerts proto.InternalMessageInfo -func (x *Alerts) GetAlert() []*Alert { - if x != nil { - return x.Alert +func (m *Alerts) GetAlert() []*Alert { + if m != nil { + return m.Alert } return nil } // ObjectstoreInfo is a structure that has current objectstore info type ObjectstoreInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // UUID of objectstore - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + Uuid string `protobuf:"bytes,1,opt,name=uuid" json:"uuid,omitempty"` // VolumeID of volume used by object store - VolumeId string `protobuf:"bytes,2,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,2,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // Enable/Disable created objectstore - Enabled bool `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"` + Enabled bool `protobuf:"varint,3,opt,name=enabled" json:"enabled,omitempty"` // Status of objectstore running/failed - Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"` + Status string `protobuf:"bytes,4,opt,name=status" json:"status,omitempty"` // Action being taken on this objectstore - Action int64 `protobuf:"varint,5,opt,name=action,proto3" json:"action,omitempty"` + Action int64 `protobuf:"varint,5,opt,name=action" json:"action,omitempty"` // AccessKey for login into objectstore - AccessKey string `protobuf:"bytes,6,opt,name=access_key,json=accessKey,proto3" json:"access_key,omitempty"` + AccessKey string `protobuf:"bytes,6,opt,name=access_key,json=accessKey" json:"access_key,omitempty"` // SecretKey for login into objectstore - SecretKey string `protobuf:"bytes,7,opt,name=secret_key,json=secretKey,proto3" json:"secret_key,omitempty"` + SecretKey string `protobuf:"bytes,7,opt,name=secret_key,json=secretKey" json:"secret_key,omitempty"` // Endpoints for accessing objectstore - Endpoints []string `protobuf:"bytes,8,rep,name=endpoints,proto3" json:"endpoints,omitempty"` + Endpoints []string `protobuf:"bytes,8,rep,name=endpoints" json:"endpoints,omitempty"` // CurrentEndpoint on which objectstore server is accessible - CurrentEndpoint string `protobuf:"bytes,9,opt,name=current_endpoint,json=currentEndpoint,proto3" json:"current_endpoint,omitempty"` + CurrentEndpoint string `protobuf:"bytes,9,opt,name=current_endpoint,json=currentEndpoint" json:"current_endpoint,omitempty"` // AccessPort is objectstore server port - AccessPort int64 `protobuf:"varint,10,opt,name=access_port,json=accessPort,proto3" json:"access_port,omitempty"` + AccessPort int64 `protobuf:"varint,10,opt,name=access_port,json=accessPort" json:"access_port,omitempty"` // Region for this objectstore - Region string `protobuf:"bytes,11,opt,name=region,proto3" json:"region,omitempty"` + Region string `protobuf:"bytes,11,opt,name=region" json:"region,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ObjectstoreInfo) Reset() { - *x = ObjectstoreInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[55] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *ObjectstoreInfo) Reset() { *m = ObjectstoreInfo{} } +func (m *ObjectstoreInfo) String() string { return proto.CompactTextString(m) } +func (*ObjectstoreInfo) ProtoMessage() {} +func (*ObjectstoreInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{55} } - -func (x *ObjectstoreInfo) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *ObjectstoreInfo) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ObjectstoreInfo.Unmarshal(m, b) } - -func (*ObjectstoreInfo) ProtoMessage() {} - -func (x *ObjectstoreInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[55] - 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) +func (m *ObjectstoreInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ObjectstoreInfo.Marshal(b, m, deterministic) } - -// Deprecated: Use ObjectstoreInfo.ProtoReflect.Descriptor instead. -func (*ObjectstoreInfo) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{55} +func (dst *ObjectstoreInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_ObjectstoreInfo.Merge(dst, src) +} +func (m *ObjectstoreInfo) XXX_Size() int { + return xxx_messageInfo_ObjectstoreInfo.Size(m) } +func (m *ObjectstoreInfo) XXX_DiscardUnknown() { + xxx_messageInfo_ObjectstoreInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_ObjectstoreInfo proto.InternalMessageInfo -func (x *ObjectstoreInfo) GetUuid() string { - if x != nil { - return x.Uuid +func (m *ObjectstoreInfo) GetUuid() string { + if m != nil { + return m.Uuid } return "" } -func (x *ObjectstoreInfo) GetVolumeId() string { - if x != nil { - return x.VolumeId +func (m *ObjectstoreInfo) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *ObjectstoreInfo) GetEnabled() bool { - if x != nil { - return x.Enabled +func (m *ObjectstoreInfo) GetEnabled() bool { + if m != nil { + return m.Enabled } return false } -func (x *ObjectstoreInfo) GetStatus() string { - if x != nil { - return x.Status +func (m *ObjectstoreInfo) GetStatus() string { + if m != nil { + return m.Status } return "" } -func (x *ObjectstoreInfo) GetAction() int64 { - if x != nil { - return x.Action +func (m *ObjectstoreInfo) GetAction() int64 { + if m != nil { + return m.Action } return 0 } -func (x *ObjectstoreInfo) GetAccessKey() string { - if x != nil { - return x.AccessKey +func (m *ObjectstoreInfo) GetAccessKey() string { + if m != nil { + return m.AccessKey } return "" } -func (x *ObjectstoreInfo) GetSecretKey() string { - if x != nil { - return x.SecretKey +func (m *ObjectstoreInfo) GetSecretKey() string { + if m != nil { + return m.SecretKey } return "" } -func (x *ObjectstoreInfo) GetEndpoints() []string { - if x != nil { - return x.Endpoints +func (m *ObjectstoreInfo) GetEndpoints() []string { + if m != nil { + return m.Endpoints } return nil } -func (x *ObjectstoreInfo) GetCurrentEndpoint() string { - if x != nil { - return x.CurrentEndpoint +func (m *ObjectstoreInfo) GetCurrentEndpoint() string { + if m != nil { + return m.CurrentEndpoint } return "" } -func (x *ObjectstoreInfo) GetAccessPort() int64 { - if x != nil { - return x.AccessPort +func (m *ObjectstoreInfo) GetAccessPort() int64 { + if m != nil { + return m.AccessPort } return 0 } -func (x *ObjectstoreInfo) GetRegion() string { - if x != nil { - return x.Region +func (m *ObjectstoreInfo) GetRegion() string { + if m != nil { + return m.Region } return "" } @@ -10271,584 +9948,503 @@ func (x *ObjectstoreInfo) GetRegion() string { // VolumeCreateRequest is a structure that has the locator, source and spec // to create a volume type VolumeCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // User specified volume name and labels - Locator *VolumeLocator `protobuf:"bytes,1,opt,name=locator,proto3" json:"locator,omitempty"` + Locator *VolumeLocator `protobuf:"bytes,1,opt,name=locator" json:"locator,omitempty"` // Source to create volume - Source *Source `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty"` + Source *Source `protobuf:"bytes,2,opt,name=source" json:"source,omitempty"` // The storage spec for the volume - Spec *VolumeSpec `protobuf:"bytes,3,opt,name=spec,proto3" json:"spec,omitempty"` + Spec *VolumeSpec `protobuf:"bytes,3,opt,name=spec" json:"spec,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VolumeCreateRequest) Reset() { - *x = VolumeCreateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[56] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *VolumeCreateRequest) Reset() { *m = VolumeCreateRequest{} } +func (m *VolumeCreateRequest) String() string { return proto.CompactTextString(m) } +func (*VolumeCreateRequest) ProtoMessage() {} +func (*VolumeCreateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{56} } - -func (x *VolumeCreateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *VolumeCreateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumeCreateRequest.Unmarshal(m, b) } - -func (*VolumeCreateRequest) ProtoMessage() {} - -func (x *VolumeCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[56] - 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) +func (m *VolumeCreateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumeCreateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use VolumeCreateRequest.ProtoReflect.Descriptor instead. -func (*VolumeCreateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{56} +func (dst *VolumeCreateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumeCreateRequest.Merge(dst, src) +} +func (m *VolumeCreateRequest) XXX_Size() int { + return xxx_messageInfo_VolumeCreateRequest.Size(m) } +func (m *VolumeCreateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_VolumeCreateRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_VolumeCreateRequest proto.InternalMessageInfo -func (x *VolumeCreateRequest) GetLocator() *VolumeLocator { - if x != nil { - return x.Locator +func (m *VolumeCreateRequest) GetLocator() *VolumeLocator { + if m != nil { + return m.Locator } return nil } -func (x *VolumeCreateRequest) GetSource() *Source { - if x != nil { - return x.Source +func (m *VolumeCreateRequest) GetSource() *Source { + if m != nil { + return m.Source } return nil } -func (x *VolumeCreateRequest) GetSpec() *VolumeSpec { - if x != nil { - return x.Spec +func (m *VolumeCreateRequest) GetSpec() *VolumeSpec { + if m != nil { + return m.Spec } return nil } // VolumeResponse is a structure that wraps an error. type VolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Error message // // in: body // Required: true - Error string `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + Error string `protobuf:"bytes,1,opt,name=error" json:"error,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VolumeResponse) Reset() { - *x = VolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[57] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *VolumeResponse) Reset() { *m = VolumeResponse{} } +func (m *VolumeResponse) String() string { return proto.CompactTextString(m) } +func (*VolumeResponse) ProtoMessage() {} +func (*VolumeResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{57} } - -func (x *VolumeResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *VolumeResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumeResponse.Unmarshal(m, b) } - -func (*VolumeResponse) ProtoMessage() {} - -func (x *VolumeResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[57] - 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) +func (m *VolumeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumeResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use VolumeResponse.ProtoReflect.Descriptor instead. -func (*VolumeResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{57} +func (dst *VolumeResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumeResponse.Merge(dst, src) +} +func (m *VolumeResponse) XXX_Size() int { + return xxx_messageInfo_VolumeResponse.Size(m) } +func (m *VolumeResponse) XXX_DiscardUnknown() { + xxx_messageInfo_VolumeResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_VolumeResponse proto.InternalMessageInfo -func (x *VolumeResponse) GetError() string { - if x != nil { - return x.Error +func (m *VolumeResponse) GetError() string { + if m != nil { + return m.Error } return "" } // VolumeCreateResponse type VolumeCreateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // ID of the newly created volume // // in: body // Required: true - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` // Volume Response // // in: body // Required: true - VolumeResponse *VolumeResponse `protobuf:"bytes,2,opt,name=volume_response,json=volumeResponse,proto3" json:"volume_response,omitempty"` + VolumeResponse *VolumeResponse `protobuf:"bytes,2,opt,name=volume_response,json=volumeResponse" json:"volume_response,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VolumeCreateResponse) Reset() { - *x = VolumeCreateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[58] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *VolumeCreateResponse) Reset() { *m = VolumeCreateResponse{} } +func (m *VolumeCreateResponse) String() string { return proto.CompactTextString(m) } +func (*VolumeCreateResponse) ProtoMessage() {} +func (*VolumeCreateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{58} } - -func (x *VolumeCreateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *VolumeCreateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumeCreateResponse.Unmarshal(m, b) } - -func (*VolumeCreateResponse) ProtoMessage() {} - -func (x *VolumeCreateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[58] - 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) +func (m *VolumeCreateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumeCreateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use VolumeCreateResponse.ProtoReflect.Descriptor instead. -func (*VolumeCreateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{58} +func (dst *VolumeCreateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumeCreateResponse.Merge(dst, src) +} +func (m *VolumeCreateResponse) XXX_Size() int { + return xxx_messageInfo_VolumeCreateResponse.Size(m) } +func (m *VolumeCreateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_VolumeCreateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_VolumeCreateResponse proto.InternalMessageInfo -func (x *VolumeCreateResponse) GetId() string { - if x != nil { - return x.Id +func (m *VolumeCreateResponse) GetId() string { + if m != nil { + return m.Id } return "" } -func (x *VolumeCreateResponse) GetVolumeResponse() *VolumeResponse { - if x != nil { - return x.VolumeResponse +func (m *VolumeCreateResponse) GetVolumeResponse() *VolumeResponse { + if m != nil { + return m.VolumeResponse } return nil } // VolumeStateAction specifies desired actions. type VolumeStateAction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Attach or Detach volume - Attach VolumeActionParam `protobuf:"varint,1,opt,name=attach,proto3,enum=openstorage.api.VolumeActionParam" json:"attach,omitempty"` + Attach VolumeActionParam `protobuf:"varint,1,opt,name=attach,enum=openstorage.api.VolumeActionParam" json:"attach,omitempty"` // Mount or unmount volume - Mount VolumeActionParam `protobuf:"varint,2,opt,name=mount,proto3,enum=openstorage.api.VolumeActionParam" json:"mount,omitempty"` + Mount VolumeActionParam `protobuf:"varint,2,opt,name=mount,enum=openstorage.api.VolumeActionParam" json:"mount,omitempty"` // MountPath Path where the device is mounted - MountPath string `protobuf:"bytes,3,opt,name=mount_path,json=mountPath,proto3" json:"mount_path,omitempty"` + MountPath string `protobuf:"bytes,3,opt,name=mount_path,json=mountPath" json:"mount_path,omitempty"` // DevicePath Path returned in attach - DevicePath string `protobuf:"bytes,4,opt,name=device_path,json=devicePath,proto3" json:"device_path,omitempty"` + DevicePath string `protobuf:"bytes,4,opt,name=device_path,json=devicePath" json:"device_path,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VolumeStateAction) Reset() { - *x = VolumeStateAction{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[59] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *VolumeStateAction) Reset() { *m = VolumeStateAction{} } +func (m *VolumeStateAction) String() string { return proto.CompactTextString(m) } +func (*VolumeStateAction) ProtoMessage() {} +func (*VolumeStateAction) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{59} } - -func (x *VolumeStateAction) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *VolumeStateAction) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumeStateAction.Unmarshal(m, b) } - -func (*VolumeStateAction) ProtoMessage() {} - -func (x *VolumeStateAction) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[59] - 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) +func (m *VolumeStateAction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumeStateAction.Marshal(b, m, deterministic) } - -// Deprecated: Use VolumeStateAction.ProtoReflect.Descriptor instead. -func (*VolumeStateAction) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{59} +func (dst *VolumeStateAction) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumeStateAction.Merge(dst, src) +} +func (m *VolumeStateAction) XXX_Size() int { + return xxx_messageInfo_VolumeStateAction.Size(m) +} +func (m *VolumeStateAction) XXX_DiscardUnknown() { + xxx_messageInfo_VolumeStateAction.DiscardUnknown(m) } -func (x *VolumeStateAction) GetAttach() VolumeActionParam { - if x != nil { - return x.Attach +var xxx_messageInfo_VolumeStateAction proto.InternalMessageInfo + +func (m *VolumeStateAction) GetAttach() VolumeActionParam { + if m != nil { + return m.Attach } return VolumeActionParam_VOLUME_ACTION_PARAM_NONE } -func (x *VolumeStateAction) GetMount() VolumeActionParam { - if x != nil { - return x.Mount +func (m *VolumeStateAction) GetMount() VolumeActionParam { + if m != nil { + return m.Mount } return VolumeActionParam_VOLUME_ACTION_PARAM_NONE } -func (x *VolumeStateAction) GetMountPath() string { - if x != nil { - return x.MountPath +func (m *VolumeStateAction) GetMountPath() string { + if m != nil { + return m.MountPath } return "" } -func (x *VolumeStateAction) GetDevicePath() string { - if x != nil { - return x.DevicePath +func (m *VolumeStateAction) GetDevicePath() string { + if m != nil { + return m.DevicePath } return "" } // VolumeSet specifies a request to update a volume. type VolumeSetRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // User specified volume name and labels - Locator *VolumeLocator `protobuf:"bytes,1,opt,name=locator,proto3" json:"locator,omitempty"` + Locator *VolumeLocator `protobuf:"bytes,1,opt,name=locator" json:"locator,omitempty"` // The storage spec for the volume - Spec *VolumeSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` + Spec *VolumeSpec `protobuf:"bytes,2,opt,name=spec" json:"spec,omitempty"` // State modification on this volume. - Action *VolumeStateAction `protobuf:"bytes,3,opt,name=action,proto3" json:"action,omitempty"` + Action *VolumeStateAction `protobuf:"bytes,3,opt,name=action" json:"action,omitempty"` // additional options // required for the Set operation. - Options map[string]string `protobuf:"bytes,4,rep,name=options,proto3" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Options map[string]string `protobuf:"bytes,4,rep,name=options" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VolumeSetRequest) Reset() { - *x = VolumeSetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[60] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *VolumeSetRequest) Reset() { *m = VolumeSetRequest{} } +func (m *VolumeSetRequest) String() string { return proto.CompactTextString(m) } +func (*VolumeSetRequest) ProtoMessage() {} +func (*VolumeSetRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{60} } - -func (x *VolumeSetRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *VolumeSetRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumeSetRequest.Unmarshal(m, b) +} +func (m *VolumeSetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumeSetRequest.Marshal(b, m, deterministic) +} +func (dst *VolumeSetRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumeSetRequest.Merge(dst, src) +} +func (m *VolumeSetRequest) XXX_Size() int { + return xxx_messageInfo_VolumeSetRequest.Size(m) +} +func (m *VolumeSetRequest) XXX_DiscardUnknown() { + xxx_messageInfo_VolumeSetRequest.DiscardUnknown(m) } -func (*VolumeSetRequest) ProtoMessage() {} +var xxx_messageInfo_VolumeSetRequest proto.InternalMessageInfo -func (x *VolumeSetRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[60] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (m *VolumeSetRequest) GetLocator() *VolumeLocator { + if m != nil { + return m.Locator } - return mi.MessageOf(x) + return nil } -// Deprecated: Use VolumeSetRequest.ProtoReflect.Descriptor instead. -func (*VolumeSetRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{60} -} - -func (x *VolumeSetRequest) GetLocator() *VolumeLocator { - if x != nil { - return x.Locator - } - return nil -} - -func (x *VolumeSetRequest) GetSpec() *VolumeSpec { - if x != nil { - return x.Spec +func (m *VolumeSetRequest) GetSpec() *VolumeSpec { + if m != nil { + return m.Spec } return nil } -func (x *VolumeSetRequest) GetAction() *VolumeStateAction { - if x != nil { - return x.Action +func (m *VolumeSetRequest) GetAction() *VolumeStateAction { + if m != nil { + return m.Action } return nil } -func (x *VolumeSetRequest) GetOptions() map[string]string { - if x != nil { - return x.Options +func (m *VolumeSetRequest) GetOptions() map[string]string { + if m != nil { + return m.Options } return nil } // VolumeSetResponse type VolumeSetResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Volume - Volume *Volume `protobuf:"bytes,1,opt,name=volume,proto3" json:"volume,omitempty"` - //VolumeResponse - VolumeResponse *VolumeResponse `protobuf:"bytes,2,opt,name=volume_response,json=volumeResponse,proto3" json:"volume_response,omitempty"` + Volume *Volume `protobuf:"bytes,1,opt,name=volume" json:"volume,omitempty"` + // VolumeResponse + VolumeResponse *VolumeResponse `protobuf:"bytes,2,opt,name=volume_response,json=volumeResponse" json:"volume_response,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VolumeSetResponse) Reset() { - *x = VolumeSetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[61] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *VolumeSetResponse) Reset() { *m = VolumeSetResponse{} } +func (m *VolumeSetResponse) String() string { return proto.CompactTextString(m) } +func (*VolumeSetResponse) ProtoMessage() {} +func (*VolumeSetResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{61} } - -func (x *VolumeSetResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *VolumeSetResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumeSetResponse.Unmarshal(m, b) } - -func (*VolumeSetResponse) ProtoMessage() {} - -func (x *VolumeSetResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[61] - 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) +func (m *VolumeSetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumeSetResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use VolumeSetResponse.ProtoReflect.Descriptor instead. -func (*VolumeSetResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{61} +func (dst *VolumeSetResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumeSetResponse.Merge(dst, src) +} +func (m *VolumeSetResponse) XXX_Size() int { + return xxx_messageInfo_VolumeSetResponse.Size(m) +} +func (m *VolumeSetResponse) XXX_DiscardUnknown() { + xxx_messageInfo_VolumeSetResponse.DiscardUnknown(m) } -func (x *VolumeSetResponse) GetVolume() *Volume { - if x != nil { - return x.Volume +var xxx_messageInfo_VolumeSetResponse proto.InternalMessageInfo + +func (m *VolumeSetResponse) GetVolume() *Volume { + if m != nil { + return m.Volume } return nil } -func (x *VolumeSetResponse) GetVolumeResponse() *VolumeResponse { - if x != nil { - return x.VolumeResponse +func (m *VolumeSetResponse) GetVolumeResponse() *VolumeResponse { + if m != nil { + return m.VolumeResponse } return nil } // SnapCreateRequest specifies a request to create a snapshot of given volume. type SnapCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // volume id - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Locator *VolumeLocator `protobuf:"bytes,2,opt,name=locator,proto3" json:"locator,omitempty"` - Readonly bool `protobuf:"varint,3,opt,name=readonly,proto3" json:"readonly,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` + Locator *VolumeLocator `protobuf:"bytes,2,opt,name=locator" json:"locator,omitempty"` + Readonly bool `protobuf:"varint,3,opt,name=readonly" json:"readonly,omitempty"` // NoRetry indicates not to retry snapshot creation in the background. - NoRetry bool `protobuf:"varint,4,opt,name=no_retry,json=noRetry,proto3" json:"no_retry,omitempty"` + NoRetry bool `protobuf:"varint,4,opt,name=no_retry,json=noRetry" json:"no_retry,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SnapCreateRequest) Reset() { - *x = SnapCreateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[62] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SnapCreateRequest) Reset() { *m = SnapCreateRequest{} } +func (m *SnapCreateRequest) String() string { return proto.CompactTextString(m) } +func (*SnapCreateRequest) ProtoMessage() {} +func (*SnapCreateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{62} } - -func (x *SnapCreateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SnapCreateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SnapCreateRequest.Unmarshal(m, b) } - -func (*SnapCreateRequest) ProtoMessage() {} - -func (x *SnapCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[62] - 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) +func (m *SnapCreateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SnapCreateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SnapCreateRequest.ProtoReflect.Descriptor instead. -func (*SnapCreateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{62} +func (dst *SnapCreateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SnapCreateRequest.Merge(dst, src) +} +func (m *SnapCreateRequest) XXX_Size() int { + return xxx_messageInfo_SnapCreateRequest.Size(m) +} +func (m *SnapCreateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SnapCreateRequest.DiscardUnknown(m) } -func (x *SnapCreateRequest) GetId() string { - if x != nil { - return x.Id +var xxx_messageInfo_SnapCreateRequest proto.InternalMessageInfo + +func (m *SnapCreateRequest) GetId() string { + if m != nil { + return m.Id } return "" } -func (x *SnapCreateRequest) GetLocator() *VolumeLocator { - if x != nil { - return x.Locator +func (m *SnapCreateRequest) GetLocator() *VolumeLocator { + if m != nil { + return m.Locator } return nil } -func (x *SnapCreateRequest) GetReadonly() bool { - if x != nil { - return x.Readonly +func (m *SnapCreateRequest) GetReadonly() bool { + if m != nil { + return m.Readonly } return false } -func (x *SnapCreateRequest) GetNoRetry() bool { - if x != nil { - return x.NoRetry +func (m *SnapCreateRequest) GetNoRetry() bool { + if m != nil { + return m.NoRetry } return false } // SnapCreateRequest specifies a response that get's returned when creating a snapshot. type SnapCreateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // VolumeCreateResponse // // in: body // Required: true - VolumeCreateResponse *VolumeCreateResponse `protobuf:"bytes,1,opt,name=volume_create_response,json=volumeCreateResponse,proto3" json:"volume_create_response,omitempty"` + VolumeCreateResponse *VolumeCreateResponse `protobuf:"bytes,1,opt,name=volume_create_response,json=volumeCreateResponse" json:"volume_create_response,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SnapCreateResponse) Reset() { - *x = SnapCreateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[63] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SnapCreateResponse) Reset() { *m = SnapCreateResponse{} } +func (m *SnapCreateResponse) String() string { return proto.CompactTextString(m) } +func (*SnapCreateResponse) ProtoMessage() {} +func (*SnapCreateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{63} } - -func (x *SnapCreateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SnapCreateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SnapCreateResponse.Unmarshal(m, b) } - -func (*SnapCreateResponse) ProtoMessage() {} - -func (x *SnapCreateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[63] - 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) +func (m *SnapCreateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SnapCreateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SnapCreateResponse.ProtoReflect.Descriptor instead. -func (*SnapCreateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{63} +func (dst *SnapCreateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SnapCreateResponse.Merge(dst, src) +} +func (m *SnapCreateResponse) XXX_Size() int { + return xxx_messageInfo_SnapCreateResponse.Size(m) } +func (m *SnapCreateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SnapCreateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SnapCreateResponse proto.InternalMessageInfo -func (x *SnapCreateResponse) GetVolumeCreateResponse() *VolumeCreateResponse { - if x != nil { - return x.VolumeCreateResponse +func (m *SnapCreateResponse) GetVolumeCreateResponse() *VolumeCreateResponse { + if m != nil { + return m.VolumeCreateResponse } return nil } // VolumeInfo type VolumeInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` - Storage *VolumeSpec `protobuf:"bytes,3,opt,name=storage,proto3" json:"storage,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` + Path string `protobuf:"bytes,2,opt,name=path" json:"path,omitempty"` + Storage *VolumeSpec `protobuf:"bytes,3,opt,name=storage" json:"storage,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VolumeInfo) Reset() { - *x = VolumeInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[64] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *VolumeInfo) Reset() { *m = VolumeInfo{} } +func (m *VolumeInfo) String() string { return proto.CompactTextString(m) } +func (*VolumeInfo) ProtoMessage() {} +func (*VolumeInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{64} } - -func (x *VolumeInfo) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *VolumeInfo) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumeInfo.Unmarshal(m, b) } - -func (*VolumeInfo) ProtoMessage() {} - -func (x *VolumeInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[64] - 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) +func (m *VolumeInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumeInfo.Marshal(b, m, deterministic) } - -// Deprecated: Use VolumeInfo.ProtoReflect.Descriptor instead. -func (*VolumeInfo) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{64} +func (dst *VolumeInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumeInfo.Merge(dst, src) +} +func (m *VolumeInfo) XXX_Size() int { + return xxx_messageInfo_VolumeInfo.Size(m) } +func (m *VolumeInfo) XXX_DiscardUnknown() { + xxx_messageInfo_VolumeInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_VolumeInfo proto.InternalMessageInfo -func (x *VolumeInfo) GetVolumeId() string { - if x != nil { - return x.VolumeId +func (m *VolumeInfo) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *VolumeInfo) GetPath() string { - if x != nil { - return x.Path +func (m *VolumeInfo) GetPath() string { + if m != nil { + return m.Path } return "" } -func (x *VolumeInfo) GetStorage() *VolumeSpec { - if x != nil { - return x.Storage +func (m *VolumeInfo) GetStorage() *VolumeSpec { + if m != nil { + return m.Storage } return nil } @@ -10857,99 +10453,90 @@ func (x *VolumeInfo) GetStorage() *VolumeSpec { // would be a Pod in Kubernetes who has mounted the PersistentVolumeClaim for the // Volume type VolumeConsumer struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Name is the name of the volume consumer - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` // Namespace is the namespace of the volume consumer - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace" json:"namespace,omitempty"` // Type is the type of the consumer. E.g a Kubernetes pod - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + Type string `protobuf:"bytes,3,opt,name=type" json:"type,omitempty"` // NodeID is the identifier of the node on which the consumer is running. This // identifier would be from the perspective of the container runtime or // orchestrator under which the volume consumer resides. For example, NodeID // can be name of a minion in Kubernetes. - NodeId string `protobuf:"bytes,4,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` + NodeId string `protobuf:"bytes,4,opt,name=node_id,json=nodeId" json:"node_id,omitempty"` // OwnerName is the name of the entity who owns this volume consumer - OwnerName string `protobuf:"bytes,5,opt,name=owner_name,json=ownerName,proto3" json:"owner_name,omitempty"` + OwnerName string `protobuf:"bytes,5,opt,name=owner_name,json=ownerName" json:"owner_name,omitempty"` // OwnerType is the type of the entity who owns this volume consumer. The type would // be from the perspective of the container runtime or the orchestrator under which // the volume consumer resides. For e.g OwnerType can be a Deployment in Kubernetes. - OwnerType string `protobuf:"bytes,6,opt,name=owner_type,json=ownerType,proto3" json:"owner_type,omitempty"` + OwnerType string `protobuf:"bytes,6,opt,name=owner_type,json=ownerType" json:"owner_type,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VolumeConsumer) Reset() { - *x = VolumeConsumer{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[65] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *VolumeConsumer) Reset() { *m = VolumeConsumer{} } +func (m *VolumeConsumer) String() string { return proto.CompactTextString(m) } +func (*VolumeConsumer) ProtoMessage() {} +func (*VolumeConsumer) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{65} } - -func (x *VolumeConsumer) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *VolumeConsumer) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumeConsumer.Unmarshal(m, b) } - -func (*VolumeConsumer) ProtoMessage() {} - -func (x *VolumeConsumer) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[65] - 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) +func (m *VolumeConsumer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumeConsumer.Marshal(b, m, deterministic) } - -// Deprecated: Use VolumeConsumer.ProtoReflect.Descriptor instead. -func (*VolumeConsumer) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{65} +func (dst *VolumeConsumer) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumeConsumer.Merge(dst, src) +} +func (m *VolumeConsumer) XXX_Size() int { + return xxx_messageInfo_VolumeConsumer.Size(m) } +func (m *VolumeConsumer) XXX_DiscardUnknown() { + xxx_messageInfo_VolumeConsumer.DiscardUnknown(m) +} + +var xxx_messageInfo_VolumeConsumer proto.InternalMessageInfo -func (x *VolumeConsumer) GetName() string { - if x != nil { - return x.Name +func (m *VolumeConsumer) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *VolumeConsumer) GetNamespace() string { - if x != nil { - return x.Namespace +func (m *VolumeConsumer) GetNamespace() string { + if m != nil { + return m.Namespace } return "" } -func (x *VolumeConsumer) GetType() string { - if x != nil { - return x.Type +func (m *VolumeConsumer) GetType() string { + if m != nil { + return m.Type } return "" } -func (x *VolumeConsumer) GetNodeId() string { - if x != nil { - return x.NodeId +func (m *VolumeConsumer) GetNodeId() string { + if m != nil { + return m.NodeId } return "" } -func (x *VolumeConsumer) GetOwnerName() string { - if x != nil { - return x.OwnerName +func (m *VolumeConsumer) GetOwnerName() string { + if m != nil { + return m.OwnerName } return "" } -func (x *VolumeConsumer) GetOwnerType() string { - if x != nil { - return x.OwnerType +func (m *VolumeConsumer) GetOwnerType() string { + if m != nil { + return m.OwnerType } return "" } @@ -10957,115 +10544,97 @@ func (x *VolumeConsumer) GetOwnerType() string { // VolumeServiceRequest provides details on what volume service command to // perform in background on the volume type VolumeServiceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // User specified volume service command - SrvCmd string `protobuf:"bytes,1,opt,name=srv_cmd,json=srvCmd,proto3" json:"srv_cmd,omitempty"` + SrvCmd string `protobuf:"bytes,1,opt,name=srv_cmd,json=srvCmd" json:"srv_cmd,omitempty"` // User specified volume service command's params - SrvCmdParams map[string]string `protobuf:"bytes,2,rep,name=srv_cmd_params,json=srvCmdParams,proto3" json:"srv_cmd_params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + SrvCmdParams map[string]string `protobuf:"bytes,2,rep,name=srv_cmd_params,json=srvCmdParams" json:"srv_cmd_params,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VolumeServiceRequest) Reset() { - *x = VolumeServiceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[66] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *VolumeServiceRequest) Reset() { *m = VolumeServiceRequest{} } +func (m *VolumeServiceRequest) String() string { return proto.CompactTextString(m) } +func (*VolumeServiceRequest) ProtoMessage() {} +func (*VolumeServiceRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{66} } - -func (x *VolumeServiceRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *VolumeServiceRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumeServiceRequest.Unmarshal(m, b) } - -func (*VolumeServiceRequest) ProtoMessage() {} - -func (x *VolumeServiceRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[66] - 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) +func (m *VolumeServiceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumeServiceRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use VolumeServiceRequest.ProtoReflect.Descriptor instead. -func (*VolumeServiceRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{66} +func (dst *VolumeServiceRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumeServiceRequest.Merge(dst, src) +} +func (m *VolumeServiceRequest) XXX_Size() int { + return xxx_messageInfo_VolumeServiceRequest.Size(m) } +func (m *VolumeServiceRequest) XXX_DiscardUnknown() { + xxx_messageInfo_VolumeServiceRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_VolumeServiceRequest proto.InternalMessageInfo -func (x *VolumeServiceRequest) GetSrvCmd() string { - if x != nil { - return x.SrvCmd +func (m *VolumeServiceRequest) GetSrvCmd() string { + if m != nil { + return m.SrvCmd } return "" } -func (x *VolumeServiceRequest) GetSrvCmdParams() map[string]string { - if x != nil { - return x.SrvCmdParams +func (m *VolumeServiceRequest) GetSrvCmdParams() map[string]string { + if m != nil { + return m.SrvCmdParams } return nil } type VolumeServiceInstanceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Error code - Error string `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + Error string `protobuf:"bytes,1,opt,name=error" json:"error,omitempty"` // Status information exposed a map - Status map[string]string `protobuf:"bytes,2,rep,name=status,proto3" json:"status,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Status map[string]string `protobuf:"bytes,2,rep,name=status" json:"status,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VolumeServiceInstanceResponse) Reset() { - *x = VolumeServiceInstanceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[67] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *VolumeServiceInstanceResponse) Reset() { *m = VolumeServiceInstanceResponse{} } +func (m *VolumeServiceInstanceResponse) String() string { return proto.CompactTextString(m) } +func (*VolumeServiceInstanceResponse) ProtoMessage() {} +func (*VolumeServiceInstanceResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{67} } - -func (x *VolumeServiceInstanceResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *VolumeServiceInstanceResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumeServiceInstanceResponse.Unmarshal(m, b) } - -func (*VolumeServiceInstanceResponse) ProtoMessage() {} - -func (x *VolumeServiceInstanceResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[67] - 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) +func (m *VolumeServiceInstanceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumeServiceInstanceResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use VolumeServiceInstanceResponse.ProtoReflect.Descriptor instead. -func (*VolumeServiceInstanceResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{67} +func (dst *VolumeServiceInstanceResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumeServiceInstanceResponse.Merge(dst, src) +} +func (m *VolumeServiceInstanceResponse) XXX_Size() int { + return xxx_messageInfo_VolumeServiceInstanceResponse.Size(m) +} +func (m *VolumeServiceInstanceResponse) XXX_DiscardUnknown() { + xxx_messageInfo_VolumeServiceInstanceResponse.DiscardUnknown(m) } -func (x *VolumeServiceInstanceResponse) GetError() string { - if x != nil { - return x.Error +var xxx_messageInfo_VolumeServiceInstanceResponse proto.InternalMessageInfo + +func (m *VolumeServiceInstanceResponse) GetError() string { + if m != nil { + return m.Error } return "" } -func (x *VolumeServiceInstanceResponse) GetStatus() map[string]string { - if x != nil { - return x.Status +func (m *VolumeServiceInstanceResponse) GetStatus() map[string]string { + if m != nil { + return m.Status } return nil } @@ -11073,58 +10642,49 @@ func (x *VolumeServiceInstanceResponse) GetStatus() map[string]string { // VolumeServiceResponse specifies the response to a Volume Service command // performed on a volumen type VolumeServiceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Number of VolumeServiceInstanceResponse returned as part of this response // structure - VolSrvRspObjCnt int32 `protobuf:"varint,1,opt,name=vol_srv_rsp_obj_cnt,json=volSrvRspObjCnt,proto3" json:"vol_srv_rsp_obj_cnt,omitempty"` - VolSrvRsp []*VolumeServiceInstanceResponse `protobuf:"bytes,2,rep,name=vol_srv_rsp,json=volSrvRsp,proto3" json:"vol_srv_rsp,omitempty"` + VolSrvRspObjCnt int32 `protobuf:"varint,1,opt,name=vol_srv_rsp_obj_cnt,json=volSrvRspObjCnt" json:"vol_srv_rsp_obj_cnt,omitempty"` + VolSrvRsp []*VolumeServiceInstanceResponse `protobuf:"bytes,2,rep,name=vol_srv_rsp,json=volSrvRsp" json:"vol_srv_rsp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VolumeServiceResponse) Reset() { - *x = VolumeServiceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[68] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *VolumeServiceResponse) Reset() { *m = VolumeServiceResponse{} } +func (m *VolumeServiceResponse) String() string { return proto.CompactTextString(m) } +func (*VolumeServiceResponse) ProtoMessage() {} +func (*VolumeServiceResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{68} } - -func (x *VolumeServiceResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *VolumeServiceResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumeServiceResponse.Unmarshal(m, b) } - -func (*VolumeServiceResponse) ProtoMessage() {} - -func (x *VolumeServiceResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[68] - 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) +func (m *VolumeServiceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumeServiceResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use VolumeServiceResponse.ProtoReflect.Descriptor instead. -func (*VolumeServiceResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{68} +func (dst *VolumeServiceResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumeServiceResponse.Merge(dst, src) +} +func (m *VolumeServiceResponse) XXX_Size() int { + return xxx_messageInfo_VolumeServiceResponse.Size(m) } +func (m *VolumeServiceResponse) XXX_DiscardUnknown() { + xxx_messageInfo_VolumeServiceResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_VolumeServiceResponse proto.InternalMessageInfo -func (x *VolumeServiceResponse) GetVolSrvRspObjCnt() int32 { - if x != nil { - return x.VolSrvRspObjCnt +func (m *VolumeServiceResponse) GetVolSrvRspObjCnt() int32 { + if m != nil { + return m.VolSrvRspObjCnt } return 0 } -func (x *VolumeServiceResponse) GetVolSrvRsp() []*VolumeServiceInstanceResponse { - if x != nil { - return x.VolSrvRsp +func (m *VolumeServiceResponse) GetVolSrvRsp() []*VolumeServiceInstanceResponse { + if m != nil { + return m.VolSrvRsp } return nil } @@ -11134,2616 +10694,2221 @@ func (x *VolumeServiceResponse) GetVolSrvRsp() []*VolumeServiceInstanceResponse // case there is no parent. // Where the Path is the filesystem path within the layered filesystem type GraphDriverChanges struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - Kind GraphDriverChangeType `protobuf:"varint,2,opt,name=kind,proto3,enum=openstorage.api.GraphDriverChangeType" json:"kind,omitempty"` + Path string `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"` + Kind GraphDriverChangeType `protobuf:"varint,2,opt,name=kind,enum=openstorage.api.GraphDriverChangeType" json:"kind,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GraphDriverChanges) Reset() { - *x = GraphDriverChanges{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[69] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *GraphDriverChanges) Reset() { *m = GraphDriverChanges{} } +func (m *GraphDriverChanges) String() string { return proto.CompactTextString(m) } +func (*GraphDriverChanges) ProtoMessage() {} +func (*GraphDriverChanges) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{69} } - -func (x *GraphDriverChanges) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *GraphDriverChanges) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GraphDriverChanges.Unmarshal(m, b) } - -func (*GraphDriverChanges) ProtoMessage() {} - -func (x *GraphDriverChanges) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[69] - 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) +func (m *GraphDriverChanges) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GraphDriverChanges.Marshal(b, m, deterministic) } - -// Deprecated: Use GraphDriverChanges.ProtoReflect.Descriptor instead. -func (*GraphDriverChanges) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{69} +func (dst *GraphDriverChanges) XXX_Merge(src proto.Message) { + xxx_messageInfo_GraphDriverChanges.Merge(dst, src) +} +func (m *GraphDriverChanges) XXX_Size() int { + return xxx_messageInfo_GraphDriverChanges.Size(m) +} +func (m *GraphDriverChanges) XXX_DiscardUnknown() { + xxx_messageInfo_GraphDriverChanges.DiscardUnknown(m) } -func (x *GraphDriverChanges) GetPath() string { - if x != nil { - return x.Path +var xxx_messageInfo_GraphDriverChanges proto.InternalMessageInfo + +func (m *GraphDriverChanges) GetPath() string { + if m != nil { + return m.Path } return "" } -func (x *GraphDriverChanges) GetKind() GraphDriverChangeType { - if x != nil { - return x.Kind +func (m *GraphDriverChanges) GetKind() GraphDriverChangeType { + if m != nil { + return m.Kind } return GraphDriverChangeType_GRAPH_DRIVER_CHANGE_TYPE_NONE } // ClusterResponse specifies a response that gets returned when requesting the cluster type ClusterResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Error code // // in: body - Error string `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + Error string `protobuf:"bytes,1,opt,name=error" json:"error,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ClusterResponse) Reset() { - *x = ClusterResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[70] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *ClusterResponse) Reset() { *m = ClusterResponse{} } +func (m *ClusterResponse) String() string { return proto.CompactTextString(m) } +func (*ClusterResponse) ProtoMessage() {} +func (*ClusterResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{70} } - -func (x *ClusterResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *ClusterResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ClusterResponse.Unmarshal(m, b) } - -func (*ClusterResponse) ProtoMessage() {} - -func (x *ClusterResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[70] - 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) +func (m *ClusterResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ClusterResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use ClusterResponse.ProtoReflect.Descriptor instead. -func (*ClusterResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{70} +func (dst *ClusterResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ClusterResponse.Merge(dst, src) +} +func (m *ClusterResponse) XXX_Size() int { + return xxx_messageInfo_ClusterResponse.Size(m) } +func (m *ClusterResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ClusterResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ClusterResponse proto.InternalMessageInfo -func (x *ClusterResponse) GetError() string { - if x != nil { - return x.Error +func (m *ClusterResponse) GetError() string { + if m != nil { + return m.Error } return "" } // Active Request type ActiveRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ReqestKV map[int64]string `protobuf:"bytes,1,rep,name=ReqestKV,proto3" json:"ReqestKV,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ReqestKV map[int64]string `protobuf:"bytes,1,rep,name=ReqestKV" json:"ReqestKV,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ActiveRequest) Reset() { - *x = ActiveRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[71] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *ActiveRequest) Reset() { *m = ActiveRequest{} } +func (m *ActiveRequest) String() string { return proto.CompactTextString(m) } +func (*ActiveRequest) ProtoMessage() {} +func (*ActiveRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{71} } - -func (x *ActiveRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *ActiveRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ActiveRequest.Unmarshal(m, b) } - -func (*ActiveRequest) ProtoMessage() {} - -func (x *ActiveRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[71] - 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) +func (m *ActiveRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ActiveRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use ActiveRequest.ProtoReflect.Descriptor instead. -func (*ActiveRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{71} +func (dst *ActiveRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ActiveRequest.Merge(dst, src) +} +func (m *ActiveRequest) XXX_Size() int { + return xxx_messageInfo_ActiveRequest.Size(m) } +func (m *ActiveRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ActiveRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ActiveRequest proto.InternalMessageInfo -func (x *ActiveRequest) GetReqestKV() map[int64]string { - if x != nil { - return x.ReqestKV +func (m *ActiveRequest) GetReqestKV() map[int64]string { + if m != nil { + return m.ReqestKV } return nil } // Active Requests type ActiveRequests struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RequestCount int64 `protobuf:"varint,1,opt,name=RequestCount,proto3" json:"RequestCount,omitempty"` - ActiveRequest []*ActiveRequest `protobuf:"bytes,2,rep,name=ActiveRequest,proto3" json:"ActiveRequest,omitempty"` + RequestCount int64 `protobuf:"varint,1,opt,name=RequestCount" json:"RequestCount,omitempty"` + ActiveRequest []*ActiveRequest `protobuf:"bytes,2,rep,name=ActiveRequest" json:"ActiveRequest,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ActiveRequests) Reset() { - *x = ActiveRequests{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[72] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *ActiveRequests) Reset() { *m = ActiveRequests{} } +func (m *ActiveRequests) String() string { return proto.CompactTextString(m) } +func (*ActiveRequests) ProtoMessage() {} +func (*ActiveRequests) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{72} } - -func (x *ActiveRequests) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *ActiveRequests) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ActiveRequests.Unmarshal(m, b) } - -func (*ActiveRequests) ProtoMessage() {} - -func (x *ActiveRequests) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[72] - 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) +func (m *ActiveRequests) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ActiveRequests.Marshal(b, m, deterministic) } - -// Deprecated: Use ActiveRequests.ProtoReflect.Descriptor instead. -func (*ActiveRequests) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{72} +func (dst *ActiveRequests) XXX_Merge(src proto.Message) { + xxx_messageInfo_ActiveRequests.Merge(dst, src) +} +func (m *ActiveRequests) XXX_Size() int { + return xxx_messageInfo_ActiveRequests.Size(m) } +func (m *ActiveRequests) XXX_DiscardUnknown() { + xxx_messageInfo_ActiveRequests.DiscardUnknown(m) +} + +var xxx_messageInfo_ActiveRequests proto.InternalMessageInfo -func (x *ActiveRequests) GetRequestCount() int64 { - if x != nil { - return x.RequestCount +func (m *ActiveRequests) GetRequestCount() int64 { + if m != nil { + return m.RequestCount } return 0 } -func (x *ActiveRequests) GetActiveRequest() []*ActiveRequest { - if x != nil { - return x.ActiveRequest +func (m *ActiveRequests) GetActiveRequest() []*ActiveRequest { + if m != nil { + return m.ActiveRequest } return nil } // GroupSnapCreateRequest specifies a request to create a snapshot of given group. type GroupSnapCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Labels map[string]string `protobuf:"bytes,2,rep,name=Labels,proto3" json:"Labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - VolumeIds []string `protobuf:"bytes,3,rep,name=volume_ids,json=volumeIds,proto3" json:"volume_ids,omitempty"` - DeleteOnFailure bool `protobuf:"varint,4,opt,name=delete_on_failure,json=deleteOnFailure,proto3" json:"delete_on_failure,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` + Labels map[string]string `protobuf:"bytes,2,rep,name=Labels" json:"Labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + VolumeIds []string `protobuf:"bytes,3,rep,name=volume_ids,json=volumeIds" json:"volume_ids,omitempty"` + DeleteOnFailure bool `protobuf:"varint,4,opt,name=delete_on_failure,json=deleteOnFailure" json:"delete_on_failure,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GroupSnapCreateRequest) Reset() { *m = GroupSnapCreateRequest{} } +func (m *GroupSnapCreateRequest) String() string { return proto.CompactTextString(m) } +func (*GroupSnapCreateRequest) ProtoMessage() {} +func (*GroupSnapCreateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{73} } - -func (x *GroupSnapCreateRequest) Reset() { - *x = GroupSnapCreateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[73] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *GroupSnapCreateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GroupSnapCreateRequest.Unmarshal(m, b) } - -func (x *GroupSnapCreateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *GroupSnapCreateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GroupSnapCreateRequest.Marshal(b, m, deterministic) } - -func (*GroupSnapCreateRequest) ProtoMessage() {} - -func (x *GroupSnapCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[73] - 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) +func (dst *GroupSnapCreateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GroupSnapCreateRequest.Merge(dst, src) } - -// Deprecated: Use GroupSnapCreateRequest.ProtoReflect.Descriptor instead. -func (*GroupSnapCreateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{73} +func (m *GroupSnapCreateRequest) XXX_Size() int { + return xxx_messageInfo_GroupSnapCreateRequest.Size(m) +} +func (m *GroupSnapCreateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GroupSnapCreateRequest.DiscardUnknown(m) } -func (x *GroupSnapCreateRequest) GetId() string { - if x != nil { - return x.Id +var xxx_messageInfo_GroupSnapCreateRequest proto.InternalMessageInfo + +func (m *GroupSnapCreateRequest) GetId() string { + if m != nil { + return m.Id } return "" } -func (x *GroupSnapCreateRequest) GetLabels() map[string]string { - if x != nil { - return x.Labels +func (m *GroupSnapCreateRequest) GetLabels() map[string]string { + if m != nil { + return m.Labels } return nil } -func (x *GroupSnapCreateRequest) GetVolumeIds() []string { - if x != nil { - return x.VolumeIds +func (m *GroupSnapCreateRequest) GetVolumeIds() []string { + if m != nil { + return m.VolumeIds } return nil } -func (x *GroupSnapCreateRequest) GetDeleteOnFailure() bool { - if x != nil { - return x.DeleteOnFailure +func (m *GroupSnapCreateRequest) GetDeleteOnFailure() bool { + if m != nil { + return m.DeleteOnFailure } return false } // GroupSnapCreateRequest specifies a response that get's returned when creating a group snapshot. type GroupSnapCreateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Created snapshots // // in: body // Required: true - Snapshots map[string]*SnapCreateResponse `protobuf:"bytes,1,rep,name=snapshots,proto3" json:"snapshots,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Snapshots map[string]*SnapCreateResponse `protobuf:"bytes,1,rep,name=snapshots" json:"snapshots,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Error message // // in: body // Required: true - Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` + Error string `protobuf:"bytes,2,opt,name=error" json:"error,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *GroupSnapCreateResponse) Reset() { - *x = GroupSnapCreateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[74] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *GroupSnapCreateResponse) Reset() { *m = GroupSnapCreateResponse{} } +func (m *GroupSnapCreateResponse) String() string { return proto.CompactTextString(m) } +func (*GroupSnapCreateResponse) ProtoMessage() {} +func (*GroupSnapCreateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{74} } - -func (x *GroupSnapCreateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *GroupSnapCreateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GroupSnapCreateResponse.Unmarshal(m, b) } - -func (*GroupSnapCreateResponse) ProtoMessage() {} - -func (x *GroupSnapCreateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[74] - 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) +func (m *GroupSnapCreateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GroupSnapCreateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use GroupSnapCreateResponse.ProtoReflect.Descriptor instead. -func (*GroupSnapCreateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{74} +func (dst *GroupSnapCreateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GroupSnapCreateResponse.Merge(dst, src) +} +func (m *GroupSnapCreateResponse) XXX_Size() int { + return xxx_messageInfo_GroupSnapCreateResponse.Size(m) } +func (m *GroupSnapCreateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GroupSnapCreateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_GroupSnapCreateResponse proto.InternalMessageInfo -func (x *GroupSnapCreateResponse) GetSnapshots() map[string]*SnapCreateResponse { - if x != nil { - return x.Snapshots +func (m *GroupSnapCreateResponse) GetSnapshots() map[string]*SnapCreateResponse { + if m != nil { + return m.Snapshots } return nil } -func (x *GroupSnapCreateResponse) GetError() string { - if x != nil { - return x.Error +func (m *GroupSnapCreateResponse) GetError() string { + if m != nil { + return m.Error } return "" } // StorageNode describes the state of the node type StorageNode struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of the node - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` // Cpu usage of the node - Cpu float64 `protobuf:"fixed64,2,opt,name=cpu,proto3" json:"cpu,omitempty"` + Cpu float64 `protobuf:"fixed64,2,opt,name=cpu" json:"cpu,omitempty"` // Number of Cpu Cores - CpuCores int64 `protobuf:"varint,21,opt,name=cpu_cores,json=cpuCores,proto3" json:"cpu_cores,omitempty"` + CpuCores int64 `protobuf:"varint,21,opt,name=cpu_cores,json=cpuCores" json:"cpu_cores,omitempty"` // Total memory of the node - MemTotal uint64 `protobuf:"varint,3,opt,name=mem_total,json=memTotal,proto3" json:"mem_total,omitempty"` + MemTotal uint64 `protobuf:"varint,3,opt,name=mem_total,json=memTotal" json:"mem_total,omitempty"` // Used memory of the node - MemUsed uint64 `protobuf:"varint,4,opt,name=mem_used,json=memUsed,proto3" json:"mem_used,omitempty"` + MemUsed uint64 `protobuf:"varint,4,opt,name=mem_used,json=memUsed" json:"mem_used,omitempty"` // Free memory of the node - MemFree uint64 `protobuf:"varint,5,opt,name=mem_free,json=memFree,proto3" json:"mem_free,omitempty"` + MemFree uint64 `protobuf:"varint,5,opt,name=mem_free,json=memFree" json:"mem_free,omitempty"` // Average load (percentage) - AvgLoad int64 `protobuf:"varint,6,opt,name=avg_load,json=avgLoad,proto3" json:"avg_load,omitempty"` + AvgLoad int64 `protobuf:"varint,6,opt,name=avg_load,json=avgLoad" json:"avg_load,omitempty"` // Node status - Status Status `protobuf:"varint,7,opt,name=status,proto3,enum=openstorage.api.Status" json:"status,omitempty"` + Status Status `protobuf:"varint,7,opt,name=status,enum=openstorage.api.Status" json:"status,omitempty"` // List of disks on the node - Disks map[string]*StorageResource `protobuf:"bytes,9,rep,name=disks,proto3" json:"disks,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Disks map[string]*StorageResource `protobuf:"bytes,9,rep,name=disks" json:"disks,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // List of storage pools this node supports - Pools []*StoragePool `protobuf:"bytes,10,rep,name=pools,proto3" json:"pools,omitempty"` + Pools []*StoragePool `protobuf:"bytes,10,rep,name=pools" json:"pools,omitempty"` // Management IP - MgmtIp string `protobuf:"bytes,11,opt,name=mgmt_ip,json=mgmtIp,proto3" json:"mgmt_ip,omitempty"` + MgmtIp string `protobuf:"bytes,11,opt,name=mgmt_ip,json=mgmtIp" json:"mgmt_ip,omitempty"` // Data IP - DataIp string `protobuf:"bytes,12,opt,name=data_ip,json=dataIp,proto3" json:"data_ip,omitempty"` + DataIp string `protobuf:"bytes,12,opt,name=data_ip,json=dataIp" json:"data_ip,omitempty"` // Hostname of the node - Hostname string `protobuf:"bytes,15,opt,name=hostname,proto3" json:"hostname,omitempty"` + Hostname string `protobuf:"bytes,15,opt,name=hostname" json:"hostname,omitempty"` // User defined labels for the node - NodeLabels map[string]string `protobuf:"bytes,16,rep,name=node_labels,json=nodeLabels,proto3" json:"node_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + NodeLabels map[string]string `protobuf:"bytes,16,rep,name=node_labels,json=nodeLabels" json:"node_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // SchedulerNodeName is name of the node in scheduler context. It can be // empty if unable to get the name from the scheduler. - SchedulerNodeName string `protobuf:"bytes,17,opt,name=scheduler_node_name,json=schedulerNodeName,proto3" json:"scheduler_node_name,omitempty"` + SchedulerNodeName string `protobuf:"bytes,17,opt,name=scheduler_node_name,json=schedulerNodeName" json:"scheduler_node_name,omitempty"` // HardwareType is the type of the hardware the node has - HWType HardwareType `protobuf:"varint,18,opt,name=HWType,proto3,enum=openstorage.api.HardwareType" json:"HWType,omitempty"` + HWType HardwareType `protobuf:"varint,18,opt,name=HWType,enum=openstorage.api.HardwareType" json:"HWType,omitempty"` // Determine if the node is secured - SecurityStatus StorageNode_SecurityStatus `protobuf:"varint,19,opt,name=security_status,json=securityStatus,proto3,enum=openstorage.api.StorageNode_SecurityStatus" json:"security_status,omitempty"` + SecurityStatus StorageNode_SecurityStatus `protobuf:"varint,19,opt,name=security_status,json=securityStatus,enum=openstorage.api.StorageNode_SecurityStatus" json:"security_status,omitempty"` // Topology information of the node in scheduler context - SchedulerTopology *SchedulerTopology `protobuf:"bytes,20,opt,name=scheduler_topology,json=schedulerTopology,proto3" json:"scheduler_topology,omitempty"` + SchedulerTopology *SchedulerTopology `protobuf:"bytes,20,opt,name=scheduler_topology,json=schedulerTopology" json:"scheduler_topology,omitempty"` // Flag indicating whether the node is a quorum member or not. Using inverse value // to handle intialization and upgrades. Node will always be counted as a quorum member // when initializing until it reaches a point where we can definitely determine whether // it is a quorum member or not. - NonQuorumMember bool `protobuf:"varint,22,opt,name=non_quorum_member,json=nonQuorumMember,proto3" json:"non_quorum_member,omitempty"` + NonQuorumMember bool `protobuf:"varint,22,opt,name=non_quorum_member,json=nonQuorumMember" json:"non_quorum_member,omitempty"` // Name of the cluster domain where the node belongs. - ClusterDomain string `protobuf:"bytes,23,opt,name=cluster_domain,json=clusterDomain,proto3" json:"cluster_domain,omitempty"` + ClusterDomain string `protobuf:"bytes,23,opt,name=cluster_domain,json=clusterDomain" json:"cluster_domain,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *StorageNode) Reset() { - *x = StorageNode{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[75] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *StorageNode) Reset() { *m = StorageNode{} } +func (m *StorageNode) String() string { return proto.CompactTextString(m) } +func (*StorageNode) ProtoMessage() {} +func (*StorageNode) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{75} } - -func (x *StorageNode) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *StorageNode) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_StorageNode.Unmarshal(m, b) } - -func (*StorageNode) ProtoMessage() {} - -func (x *StorageNode) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[75] - 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) +func (m *StorageNode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_StorageNode.Marshal(b, m, deterministic) } - -// Deprecated: Use StorageNode.ProtoReflect.Descriptor instead. -func (*StorageNode) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{75} +func (dst *StorageNode) XXX_Merge(src proto.Message) { + xxx_messageInfo_StorageNode.Merge(dst, src) +} +func (m *StorageNode) XXX_Size() int { + return xxx_messageInfo_StorageNode.Size(m) +} +func (m *StorageNode) XXX_DiscardUnknown() { + xxx_messageInfo_StorageNode.DiscardUnknown(m) } -func (x *StorageNode) GetId() string { - if x != nil { - return x.Id +var xxx_messageInfo_StorageNode proto.InternalMessageInfo + +func (m *StorageNode) GetId() string { + if m != nil { + return m.Id } return "" } -func (x *StorageNode) GetCpu() float64 { - if x != nil { - return x.Cpu +func (m *StorageNode) GetCpu() float64 { + if m != nil { + return m.Cpu } return 0 } -func (x *StorageNode) GetCpuCores() int64 { - if x != nil { - return x.CpuCores +func (m *StorageNode) GetCpuCores() int64 { + if m != nil { + return m.CpuCores } return 0 } -func (x *StorageNode) GetMemTotal() uint64 { - if x != nil { - return x.MemTotal +func (m *StorageNode) GetMemTotal() uint64 { + if m != nil { + return m.MemTotal } return 0 } -func (x *StorageNode) GetMemUsed() uint64 { - if x != nil { - return x.MemUsed +func (m *StorageNode) GetMemUsed() uint64 { + if m != nil { + return m.MemUsed } return 0 } -func (x *StorageNode) GetMemFree() uint64 { - if x != nil { - return x.MemFree +func (m *StorageNode) GetMemFree() uint64 { + if m != nil { + return m.MemFree } return 0 } -func (x *StorageNode) GetAvgLoad() int64 { - if x != nil { - return x.AvgLoad +func (m *StorageNode) GetAvgLoad() int64 { + if m != nil { + return m.AvgLoad } return 0 } -func (x *StorageNode) GetStatus() Status { - if x != nil { - return x.Status +func (m *StorageNode) GetStatus() Status { + if m != nil { + return m.Status } return Status_STATUS_NONE } -func (x *StorageNode) GetDisks() map[string]*StorageResource { - if x != nil { - return x.Disks +func (m *StorageNode) GetDisks() map[string]*StorageResource { + if m != nil { + return m.Disks } return nil } -func (x *StorageNode) GetPools() []*StoragePool { - if x != nil { - return x.Pools +func (m *StorageNode) GetPools() []*StoragePool { + if m != nil { + return m.Pools } return nil } -func (x *StorageNode) GetMgmtIp() string { - if x != nil { - return x.MgmtIp +func (m *StorageNode) GetMgmtIp() string { + if m != nil { + return m.MgmtIp } return "" } -func (x *StorageNode) GetDataIp() string { - if x != nil { - return x.DataIp +func (m *StorageNode) GetDataIp() string { + if m != nil { + return m.DataIp } return "" } -func (x *StorageNode) GetHostname() string { - if x != nil { - return x.Hostname +func (m *StorageNode) GetHostname() string { + if m != nil { + return m.Hostname } return "" } -func (x *StorageNode) GetNodeLabels() map[string]string { - if x != nil { - return x.NodeLabels +func (m *StorageNode) GetNodeLabels() map[string]string { + if m != nil { + return m.NodeLabels } return nil } -func (x *StorageNode) GetSchedulerNodeName() string { - if x != nil { - return x.SchedulerNodeName +func (m *StorageNode) GetSchedulerNodeName() string { + if m != nil { + return m.SchedulerNodeName } return "" } -func (x *StorageNode) GetHWType() HardwareType { - if x != nil { - return x.HWType +func (m *StorageNode) GetHWType() HardwareType { + if m != nil { + return m.HWType } return HardwareType_UnknownMachine } -func (x *StorageNode) GetSecurityStatus() StorageNode_SecurityStatus { - if x != nil { - return x.SecurityStatus +func (m *StorageNode) GetSecurityStatus() StorageNode_SecurityStatus { + if m != nil { + return m.SecurityStatus } return StorageNode_UNSPECIFIED } -func (x *StorageNode) GetSchedulerTopology() *SchedulerTopology { - if x != nil { - return x.SchedulerTopology +func (m *StorageNode) GetSchedulerTopology() *SchedulerTopology { + if m != nil { + return m.SchedulerTopology } return nil } -func (x *StorageNode) GetNonQuorumMember() bool { - if x != nil { - return x.NonQuorumMember +func (m *StorageNode) GetNonQuorumMember() bool { + if m != nil { + return m.NonQuorumMember } return false } -func (x *StorageNode) GetClusterDomain() string { - if x != nil { - return x.ClusterDomain +func (m *StorageNode) GetClusterDomain() string { + if m != nil { + return m.ClusterDomain } return "" } // StorageCluster represents the state and information about the cluster type StorageCluster struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Status of the cluster - Status Status `protobuf:"varint,1,opt,name=status,proto3,enum=openstorage.api.Status" json:"status,omitempty"` + Status Status `protobuf:"varint,1,opt,name=status,enum=openstorage.api.Status" json:"status,omitempty"` // Id of the cluster - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` // Name of the cluster - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *StorageCluster) Reset() { - *x = StorageCluster{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[76] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *StorageCluster) Reset() { *m = StorageCluster{} } +func (m *StorageCluster) String() string { return proto.CompactTextString(m) } +func (*StorageCluster) ProtoMessage() {} +func (*StorageCluster) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{76} } - -func (x *StorageCluster) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *StorageCluster) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_StorageCluster.Unmarshal(m, b) } - -func (*StorageCluster) ProtoMessage() {} - -func (x *StorageCluster) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[76] - 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) +func (m *StorageCluster) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_StorageCluster.Marshal(b, m, deterministic) } - -// Deprecated: Use StorageCluster.ProtoReflect.Descriptor instead. -func (*StorageCluster) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{76} +func (dst *StorageCluster) XXX_Merge(src proto.Message) { + xxx_messageInfo_StorageCluster.Merge(dst, src) +} +func (m *StorageCluster) XXX_Size() int { + return xxx_messageInfo_StorageCluster.Size(m) } +func (m *StorageCluster) XXX_DiscardUnknown() { + xxx_messageInfo_StorageCluster.DiscardUnknown(m) +} + +var xxx_messageInfo_StorageCluster proto.InternalMessageInfo -func (x *StorageCluster) GetStatus() Status { - if x != nil { - return x.Status +func (m *StorageCluster) GetStatus() Status { + if m != nil { + return m.Status } return Status_STATUS_NONE } -func (x *StorageCluster) GetId() string { - if x != nil { - return x.Id +func (m *StorageCluster) GetId() string { + if m != nil { + return m.Id } return "" } -func (x *StorageCluster) GetName() string { - if x != nil { - return x.Name +func (m *StorageCluster) GetName() string { + if m != nil { + return m.Name } return "" } // Defines a request to create a bucket. type BucketCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Unique name of the bucket. This will be used for idempotency. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` // Region in which bucket will be created. - Region string `protobuf:"bytes,2,opt,name=region,proto3" json:"region,omitempty"` + Region string `protobuf:"bytes,2,opt,name=region" json:"region,omitempty"` // Endpoint to use when creating the bucket - Endpoint string `protobuf:"bytes,3,opt,name=endpoint,proto3" json:"endpoint,omitempty"` - //Anonymous access policy for the bucket. - AnonymousBucketAccessMode AnonymousBucketAccessMode `protobuf:"varint,4,opt,name=anonymousBucketAccessMode,proto3,enum=openstorage.api.AnonymousBucketAccessMode" json:"anonymousBucketAccessMode,omitempty"` + Endpoint string `protobuf:"bytes,3,opt,name=endpoint" json:"endpoint,omitempty"` + // Anonymous access policy for the bucket. + AnonymousBucketAccessMode AnonymousBucketAccessMode `protobuf:"varint,4,opt,name=anonymousBucketAccessMode,enum=openstorage.api.AnonymousBucketAccessMode" json:"anonymousBucketAccessMode,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *BucketCreateRequest) Reset() { - *x = BucketCreateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[77] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *BucketCreateRequest) Reset() { *m = BucketCreateRequest{} } +func (m *BucketCreateRequest) String() string { return proto.CompactTextString(m) } +func (*BucketCreateRequest) ProtoMessage() {} +func (*BucketCreateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{77} } - -func (x *BucketCreateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *BucketCreateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BucketCreateRequest.Unmarshal(m, b) } - -func (*BucketCreateRequest) ProtoMessage() {} - -func (x *BucketCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[77] - 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) +func (m *BucketCreateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BucketCreateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use BucketCreateRequest.ProtoReflect.Descriptor instead. -func (*BucketCreateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{77} +func (dst *BucketCreateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_BucketCreateRequest.Merge(dst, src) +} +func (m *BucketCreateRequest) XXX_Size() int { + return xxx_messageInfo_BucketCreateRequest.Size(m) } +func (m *BucketCreateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_BucketCreateRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_BucketCreateRequest proto.InternalMessageInfo -func (x *BucketCreateRequest) GetName() string { - if x != nil { - return x.Name +func (m *BucketCreateRequest) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *BucketCreateRequest) GetRegion() string { - if x != nil { - return x.Region +func (m *BucketCreateRequest) GetRegion() string { + if m != nil { + return m.Region } return "" } -func (x *BucketCreateRequest) GetEndpoint() string { - if x != nil { - return x.Endpoint +func (m *BucketCreateRequest) GetEndpoint() string { + if m != nil { + return m.Endpoint } return "" } -func (x *BucketCreateRequest) GetAnonymousBucketAccessMode() AnonymousBucketAccessMode { - if x != nil { - return x.AnonymousBucketAccessMode +func (m *BucketCreateRequest) GetAnonymousBucketAccessMode() AnonymousBucketAccessMode { + if m != nil { + return m.AnonymousBucketAccessMode } return AnonymousBucketAccessMode_UnknownBucketAccessMode } // Defines a response to the creation of a bucket type BucketCreateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of new bucket - BucketId string `protobuf:"bytes,1,opt,name=bucket_id,json=bucketId,proto3" json:"bucket_id,omitempty"` + BucketId string `protobuf:"bytes,1,opt,name=bucket_id,json=bucketId" json:"bucket_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *BucketCreateResponse) Reset() { - *x = BucketCreateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[78] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *BucketCreateResponse) Reset() { *m = BucketCreateResponse{} } +func (m *BucketCreateResponse) String() string { return proto.CompactTextString(m) } +func (*BucketCreateResponse) ProtoMessage() {} +func (*BucketCreateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{78} } - -func (x *BucketCreateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *BucketCreateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BucketCreateResponse.Unmarshal(m, b) } - -func (*BucketCreateResponse) ProtoMessage() {} - -func (x *BucketCreateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[78] - 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) +func (m *BucketCreateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BucketCreateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use BucketCreateResponse.ProtoReflect.Descriptor instead. -func (*BucketCreateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{78} +func (dst *BucketCreateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_BucketCreateResponse.Merge(dst, src) +} +func (m *BucketCreateResponse) XXX_Size() int { + return xxx_messageInfo_BucketCreateResponse.Size(m) +} +func (m *BucketCreateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_BucketCreateResponse.DiscardUnknown(m) } -func (x *BucketCreateResponse) GetBucketId() string { - if x != nil { - return x.BucketId +var xxx_messageInfo_BucketCreateResponse proto.InternalMessageInfo + +func (m *BucketCreateResponse) GetBucketId() string { + if m != nil { + return m.BucketId } return "" } // Defines the request to delete a bucket type BucketDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of bucket to delete - BucketId string `protobuf:"bytes,1,opt,name=bucket_id,json=bucketId,proto3" json:"bucket_id,omitempty"` + BucketId string `protobuf:"bytes,1,opt,name=bucket_id,json=bucketId" json:"bucket_id,omitempty"` // Region in which bucket will be created. - Region string `protobuf:"bytes,2,opt,name=region,proto3" json:"region,omitempty"` + Region string `protobuf:"bytes,2,opt,name=region" json:"region,omitempty"` // Endpoint to use when deleting the bucket - Endpoint string `protobuf:"bytes,3,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + Endpoint string `protobuf:"bytes,3,opt,name=endpoint" json:"endpoint,omitempty"` // Flag to allow non empty bucket deletion. - ClearBucket bool `protobuf:"varint,4,opt,name=clear_bucket,json=clearBucket,proto3" json:"clear_bucket,omitempty"` + ClearBucket bool `protobuf:"varint,4,opt,name=clear_bucket,json=clearBucket" json:"clear_bucket,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *BucketDeleteRequest) Reset() { - *x = BucketDeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[79] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *BucketDeleteRequest) Reset() { *m = BucketDeleteRequest{} } +func (m *BucketDeleteRequest) String() string { return proto.CompactTextString(m) } +func (*BucketDeleteRequest) ProtoMessage() {} +func (*BucketDeleteRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{79} } - -func (x *BucketDeleteRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *BucketDeleteRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BucketDeleteRequest.Unmarshal(m, b) } - -func (*BucketDeleteRequest) ProtoMessage() {} - -func (x *BucketDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[79] - 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) +func (m *BucketDeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BucketDeleteRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use BucketDeleteRequest.ProtoReflect.Descriptor instead. -func (*BucketDeleteRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{79} +func (dst *BucketDeleteRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_BucketDeleteRequest.Merge(dst, src) +} +func (m *BucketDeleteRequest) XXX_Size() int { + return xxx_messageInfo_BucketDeleteRequest.Size(m) +} +func (m *BucketDeleteRequest) XXX_DiscardUnknown() { + xxx_messageInfo_BucketDeleteRequest.DiscardUnknown(m) } -func (x *BucketDeleteRequest) GetBucketId() string { - if x != nil { - return x.BucketId +var xxx_messageInfo_BucketDeleteRequest proto.InternalMessageInfo + +func (m *BucketDeleteRequest) GetBucketId() string { + if m != nil { + return m.BucketId } return "" } -func (x *BucketDeleteRequest) GetRegion() string { - if x != nil { - return x.Region +func (m *BucketDeleteRequest) GetRegion() string { + if m != nil { + return m.Region } return "" } -func (x *BucketDeleteRequest) GetEndpoint() string { - if x != nil { - return x.Endpoint +func (m *BucketDeleteRequest) GetEndpoint() string { + if m != nil { + return m.Endpoint } return "" } -func (x *BucketDeleteRequest) GetClearBucket() bool { - if x != nil { - return x.ClearBucket +func (m *BucketDeleteRequest) GetClearBucket() bool { + if m != nil { + return m.ClearBucket } return false } // Empty response type BucketDeleteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *BucketDeleteResponse) Reset() { - *x = BucketDeleteResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[80] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *BucketDeleteResponse) Reset() { *m = BucketDeleteResponse{} } +func (m *BucketDeleteResponse) String() string { return proto.CompactTextString(m) } +func (*BucketDeleteResponse) ProtoMessage() {} +func (*BucketDeleteResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{80} } - -func (x *BucketDeleteResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *BucketDeleteResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BucketDeleteResponse.Unmarshal(m, b) } - -func (*BucketDeleteResponse) ProtoMessage() {} - -func (x *BucketDeleteResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[80] - 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) +func (m *BucketDeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BucketDeleteResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use BucketDeleteResponse.ProtoReflect.Descriptor instead. -func (*BucketDeleteResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{80} +func (dst *BucketDeleteResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_BucketDeleteResponse.Merge(dst, src) +} +func (m *BucketDeleteResponse) XXX_Size() int { + return xxx_messageInfo_BucketDeleteResponse.Size(m) +} +func (m *BucketDeleteResponse) XXX_DiscardUnknown() { + xxx_messageInfo_BucketDeleteResponse.DiscardUnknown(m) } +var xxx_messageInfo_BucketDeleteResponse proto.InternalMessageInfo + // Defines a request to grant access to the bucket type BucketGrantAccessRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of the bucket - BucketId string `protobuf:"bytes,1,opt,name=bucket_id,json=bucketId,proto3" json:"bucket_id,omitempty"` + BucketId string `protobuf:"bytes,1,opt,name=bucket_id,json=bucketId" json:"bucket_id,omitempty"` // Name of the account to which access to be provided - AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"` + AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName" json:"account_name,omitempty"` // Access policy to be applied for the account - AccessPolicy string `protobuf:"bytes,3,opt,name=access_policy,json=accessPolicy,proto3" json:"access_policy,omitempty"` + AccessPolicy string `protobuf:"bytes,3,opt,name=access_policy,json=accessPolicy" json:"access_policy,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *BucketGrantAccessRequest) Reset() { - *x = BucketGrantAccessRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[81] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *BucketGrantAccessRequest) Reset() { *m = BucketGrantAccessRequest{} } +func (m *BucketGrantAccessRequest) String() string { return proto.CompactTextString(m) } +func (*BucketGrantAccessRequest) ProtoMessage() {} +func (*BucketGrantAccessRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{81} } - -func (x *BucketGrantAccessRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *BucketGrantAccessRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BucketGrantAccessRequest.Unmarshal(m, b) } - -func (*BucketGrantAccessRequest) ProtoMessage() {} - -func (x *BucketGrantAccessRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[81] - 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) +func (m *BucketGrantAccessRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BucketGrantAccessRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use BucketGrantAccessRequest.ProtoReflect.Descriptor instead. -func (*BucketGrantAccessRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{81} +func (dst *BucketGrantAccessRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_BucketGrantAccessRequest.Merge(dst, src) +} +func (m *BucketGrantAccessRequest) XXX_Size() int { + return xxx_messageInfo_BucketGrantAccessRequest.Size(m) } +func (m *BucketGrantAccessRequest) XXX_DiscardUnknown() { + xxx_messageInfo_BucketGrantAccessRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_BucketGrantAccessRequest proto.InternalMessageInfo -func (x *BucketGrantAccessRequest) GetBucketId() string { - if x != nil { - return x.BucketId +func (m *BucketGrantAccessRequest) GetBucketId() string { + if m != nil { + return m.BucketId } return "" } -func (x *BucketGrantAccessRequest) GetAccountName() string { - if x != nil { - return x.AccountName +func (m *BucketGrantAccessRequest) GetAccountName() string { + if m != nil { + return m.AccountName } return "" } -func (x *BucketGrantAccessRequest) GetAccessPolicy() string { - if x != nil { - return x.AccessPolicy +func (m *BucketGrantAccessRequest) GetAccessPolicy() string { + if m != nil { + return m.AccessPolicy } return "" } // Defines a response to the creation of a bucket type BucketGrantAccessResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // This is the account_id that is being provided access. This will // This will be required later to revoke access. - AccountId string `protobuf:"bytes,1,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + AccountId string `protobuf:"bytes,1,opt,name=account_id,json=accountId" json:"account_id,omitempty"` // Credentials supplied for accessing the bucket ex: aws access key id and secret, etc. - Credentials *BucketAccessCredentials `protobuf:"bytes,2,opt,name=credentials,proto3" json:"credentials,omitempty"` + Credentials *BucketAccessCredentials `protobuf:"bytes,2,opt,name=credentials" json:"credentials,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *BucketGrantAccessResponse) Reset() { - *x = BucketGrantAccessResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[82] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *BucketGrantAccessResponse) Reset() { *m = BucketGrantAccessResponse{} } +func (m *BucketGrantAccessResponse) String() string { return proto.CompactTextString(m) } +func (*BucketGrantAccessResponse) ProtoMessage() {} +func (*BucketGrantAccessResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{82} } - -func (x *BucketGrantAccessResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *BucketGrantAccessResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BucketGrantAccessResponse.Unmarshal(m, b) } - -func (*BucketGrantAccessResponse) ProtoMessage() {} - -func (x *BucketGrantAccessResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[82] - 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) +func (m *BucketGrantAccessResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BucketGrantAccessResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use BucketGrantAccessResponse.ProtoReflect.Descriptor instead. -func (*BucketGrantAccessResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{82} +func (dst *BucketGrantAccessResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_BucketGrantAccessResponse.Merge(dst, src) +} +func (m *BucketGrantAccessResponse) XXX_Size() int { + return xxx_messageInfo_BucketGrantAccessResponse.Size(m) } +func (m *BucketGrantAccessResponse) XXX_DiscardUnknown() { + xxx_messageInfo_BucketGrantAccessResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_BucketGrantAccessResponse proto.InternalMessageInfo -func (x *BucketGrantAccessResponse) GetAccountId() string { - if x != nil { - return x.AccountId +func (m *BucketGrantAccessResponse) GetAccountId() string { + if m != nil { + return m.AccountId } return "" } -func (x *BucketGrantAccessResponse) GetCredentials() *BucketAccessCredentials { - if x != nil { - return x.Credentials +func (m *BucketGrantAccessResponse) GetCredentials() *BucketAccessCredentials { + if m != nil { + return m.Credentials } return nil } // Defines the request to revoke access to the bucket type BucketRevokeAccessRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of bucket to delete - BucketId string `protobuf:"bytes,1,opt,name=bucket_id,json=bucketId,proto3" json:"bucket_id,omitempty"` + BucketId string `protobuf:"bytes,1,opt,name=bucket_id,json=bucketId" json:"bucket_id,omitempty"` // AccountId that is having its access revoked. - AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId" json:"account_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *BucketRevokeAccessRequest) Reset() { - *x = BucketRevokeAccessRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[83] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *BucketRevokeAccessRequest) Reset() { *m = BucketRevokeAccessRequest{} } +func (m *BucketRevokeAccessRequest) String() string { return proto.CompactTextString(m) } +func (*BucketRevokeAccessRequest) ProtoMessage() {} +func (*BucketRevokeAccessRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{83} } - -func (x *BucketRevokeAccessRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *BucketRevokeAccessRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BucketRevokeAccessRequest.Unmarshal(m, b) } - -func (*BucketRevokeAccessRequest) ProtoMessage() {} - -func (x *BucketRevokeAccessRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[83] - 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) +func (m *BucketRevokeAccessRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BucketRevokeAccessRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use BucketRevokeAccessRequest.ProtoReflect.Descriptor instead. -func (*BucketRevokeAccessRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{83} +func (dst *BucketRevokeAccessRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_BucketRevokeAccessRequest.Merge(dst, src) +} +func (m *BucketRevokeAccessRequest) XXX_Size() int { + return xxx_messageInfo_BucketRevokeAccessRequest.Size(m) +} +func (m *BucketRevokeAccessRequest) XXX_DiscardUnknown() { + xxx_messageInfo_BucketRevokeAccessRequest.DiscardUnknown(m) } -func (x *BucketRevokeAccessRequest) GetBucketId() string { - if x != nil { - return x.BucketId +var xxx_messageInfo_BucketRevokeAccessRequest proto.InternalMessageInfo + +func (m *BucketRevokeAccessRequest) GetBucketId() string { + if m != nil { + return m.BucketId } return "" } -func (x *BucketRevokeAccessRequest) GetAccountId() string { - if x != nil { - return x.AccountId +func (m *BucketRevokeAccessRequest) GetAccountId() string { + if m != nil { + return m.AccountId } return "" } // Empty response type BucketRevokeAccessResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *BucketRevokeAccessResponse) Reset() { - *x = BucketRevokeAccessResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[84] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *BucketRevokeAccessResponse) Reset() { *m = BucketRevokeAccessResponse{} } +func (m *BucketRevokeAccessResponse) String() string { return proto.CompactTextString(m) } +func (*BucketRevokeAccessResponse) ProtoMessage() {} +func (*BucketRevokeAccessResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{84} } - -func (x *BucketRevokeAccessResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *BucketRevokeAccessResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BucketRevokeAccessResponse.Unmarshal(m, b) } - -func (*BucketRevokeAccessResponse) ProtoMessage() {} - -func (x *BucketRevokeAccessResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[84] - 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) +func (m *BucketRevokeAccessResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BucketRevokeAccessResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use BucketRevokeAccessResponse.ProtoReflect.Descriptor instead. -func (*BucketRevokeAccessResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{84} +func (dst *BucketRevokeAccessResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_BucketRevokeAccessResponse.Merge(dst, src) +} +func (m *BucketRevokeAccessResponse) XXX_Size() int { + return xxx_messageInfo_BucketRevokeAccessResponse.Size(m) +} +func (m *BucketRevokeAccessResponse) XXX_DiscardUnknown() { + xxx_messageInfo_BucketRevokeAccessResponse.DiscardUnknown(m) } +var xxx_messageInfo_BucketRevokeAccessResponse proto.InternalMessageInfo + // Defines the bucket access credential object type BucketAccessCredentials struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Access key id - AccessKeyId string `protobuf:"bytes,1,opt,name=access_key_id,json=accessKeyId,proto3" json:"access_key_id,omitempty"` + AccessKeyId string `protobuf:"bytes,1,opt,name=access_key_id,json=accessKeyId" json:"access_key_id,omitempty"` // Secret access key - SecretAccessKey string `protobuf:"bytes,2,opt,name=secret_access_key,json=secretAccessKey,proto3" json:"secret_access_key,omitempty"` + SecretAccessKey string `protobuf:"bytes,2,opt,name=secret_access_key,json=secretAccessKey" json:"secret_access_key,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *BucketAccessCredentials) Reset() { - *x = BucketAccessCredentials{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[85] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *BucketAccessCredentials) Reset() { *m = BucketAccessCredentials{} } +func (m *BucketAccessCredentials) String() string { return proto.CompactTextString(m) } +func (*BucketAccessCredentials) ProtoMessage() {} +func (*BucketAccessCredentials) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{85} } - -func (x *BucketAccessCredentials) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *BucketAccessCredentials) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BucketAccessCredentials.Unmarshal(m, b) } - -func (*BucketAccessCredentials) ProtoMessage() {} - -func (x *BucketAccessCredentials) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[85] - 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) +func (m *BucketAccessCredentials) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BucketAccessCredentials.Marshal(b, m, deterministic) } - -// Deprecated: Use BucketAccessCredentials.ProtoReflect.Descriptor instead. -func (*BucketAccessCredentials) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{85} +func (dst *BucketAccessCredentials) XXX_Merge(src proto.Message) { + xxx_messageInfo_BucketAccessCredentials.Merge(dst, src) +} +func (m *BucketAccessCredentials) XXX_Size() int { + return xxx_messageInfo_BucketAccessCredentials.Size(m) } +func (m *BucketAccessCredentials) XXX_DiscardUnknown() { + xxx_messageInfo_BucketAccessCredentials.DiscardUnknown(m) +} + +var xxx_messageInfo_BucketAccessCredentials proto.InternalMessageInfo -func (x *BucketAccessCredentials) GetAccessKeyId() string { - if x != nil { - return x.AccessKeyId +func (m *BucketAccessCredentials) GetAccessKeyId() string { + if m != nil { + return m.AccessKeyId } return "" } -func (x *BucketAccessCredentials) GetSecretAccessKey() string { - if x != nil { - return x.SecretAccessKey +func (m *BucketAccessCredentials) GetSecretAccessKey() string { + if m != nil { + return m.SecretAccessKey } return "" } // Define a request to create storage policy type SdkOpenStoragePolicyCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // storage policy to create - StoragePolicy *SdkStoragePolicy `protobuf:"bytes,1,opt,name=storage_policy,json=storagePolicy,proto3" json:"storage_policy,omitempty"` + StoragePolicy *SdkStoragePolicy `protobuf:"bytes,1,opt,name=storage_policy,json=storagePolicy" json:"storage_policy,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkOpenStoragePolicyCreateRequest) Reset() { - *x = SdkOpenStoragePolicyCreateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[86] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkOpenStoragePolicyCreateRequest) Reset() { *m = SdkOpenStoragePolicyCreateRequest{} } +func (m *SdkOpenStoragePolicyCreateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkOpenStoragePolicyCreateRequest) ProtoMessage() {} +func (*SdkOpenStoragePolicyCreateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{86} } - -func (x *SdkOpenStoragePolicyCreateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkOpenStoragePolicyCreateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkOpenStoragePolicyCreateRequest.Unmarshal(m, b) } - -func (*SdkOpenStoragePolicyCreateRequest) ProtoMessage() {} - -func (x *SdkOpenStoragePolicyCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[86] - 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) +func (m *SdkOpenStoragePolicyCreateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkOpenStoragePolicyCreateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkOpenStoragePolicyCreateRequest.ProtoReflect.Descriptor instead. -func (*SdkOpenStoragePolicyCreateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{86} +func (dst *SdkOpenStoragePolicyCreateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkOpenStoragePolicyCreateRequest.Merge(dst, src) +} +func (m *SdkOpenStoragePolicyCreateRequest) XXX_Size() int { + return xxx_messageInfo_SdkOpenStoragePolicyCreateRequest.Size(m) +} +func (m *SdkOpenStoragePolicyCreateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkOpenStoragePolicyCreateRequest.DiscardUnknown(m) } -func (x *SdkOpenStoragePolicyCreateRequest) GetStoragePolicy() *SdkStoragePolicy { - if x != nil { - return x.StoragePolicy +var xxx_messageInfo_SdkOpenStoragePolicyCreateRequest proto.InternalMessageInfo + +func (m *SdkOpenStoragePolicyCreateRequest) GetStoragePolicy() *SdkStoragePolicy { + if m != nil { + return m.StoragePolicy } return nil } // Empty response type SdkOpenStoragePolicyCreateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkOpenStoragePolicyCreateResponse) Reset() { - *x = SdkOpenStoragePolicyCreateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[87] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkOpenStoragePolicyCreateResponse) Reset() { *m = SdkOpenStoragePolicyCreateResponse{} } +func (m *SdkOpenStoragePolicyCreateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkOpenStoragePolicyCreateResponse) ProtoMessage() {} +func (*SdkOpenStoragePolicyCreateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{87} } - -func (x *SdkOpenStoragePolicyCreateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkOpenStoragePolicyCreateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkOpenStoragePolicyCreateResponse.Unmarshal(m, b) } - -func (*SdkOpenStoragePolicyCreateResponse) ProtoMessage() {} - -func (x *SdkOpenStoragePolicyCreateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[87] - 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) +func (m *SdkOpenStoragePolicyCreateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkOpenStoragePolicyCreateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkOpenStoragePolicyCreateResponse.ProtoReflect.Descriptor instead. -func (*SdkOpenStoragePolicyCreateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{87} +func (dst *SdkOpenStoragePolicyCreateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkOpenStoragePolicyCreateResponse.Merge(dst, src) +} +func (m *SdkOpenStoragePolicyCreateResponse) XXX_Size() int { + return xxx_messageInfo_SdkOpenStoragePolicyCreateResponse.Size(m) } +func (m *SdkOpenStoragePolicyCreateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkOpenStoragePolicyCreateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkOpenStoragePolicyCreateResponse proto.InternalMessageInfo // Empty request type SdkOpenStoragePolicyEnumerateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkOpenStoragePolicyEnumerateRequest) Reset() { - *x = SdkOpenStoragePolicyEnumerateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[88] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkOpenStoragePolicyEnumerateRequest) Reset() { *m = SdkOpenStoragePolicyEnumerateRequest{} } +func (m *SdkOpenStoragePolicyEnumerateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkOpenStoragePolicyEnumerateRequest) ProtoMessage() {} +func (*SdkOpenStoragePolicyEnumerateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{88} } - -func (x *SdkOpenStoragePolicyEnumerateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkOpenStoragePolicyEnumerateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkOpenStoragePolicyEnumerateRequest.Unmarshal(m, b) } - -func (*SdkOpenStoragePolicyEnumerateRequest) ProtoMessage() {} - -func (x *SdkOpenStoragePolicyEnumerateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[88] - 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) +func (m *SdkOpenStoragePolicyEnumerateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkOpenStoragePolicyEnumerateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkOpenStoragePolicyEnumerateRequest.ProtoReflect.Descriptor instead. -func (*SdkOpenStoragePolicyEnumerateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{88} +func (dst *SdkOpenStoragePolicyEnumerateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkOpenStoragePolicyEnumerateRequest.Merge(dst, src) +} +func (m *SdkOpenStoragePolicyEnumerateRequest) XXX_Size() int { + return xxx_messageInfo_SdkOpenStoragePolicyEnumerateRequest.Size(m) } +func (m *SdkOpenStoragePolicyEnumerateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkOpenStoragePolicyEnumerateRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkOpenStoragePolicyEnumerateRequest proto.InternalMessageInfo // Define a storage policy enumerate response type SdkOpenStoragePolicyEnumerateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // List of storage policies - StoragePolicies []*SdkStoragePolicy `protobuf:"bytes,1,rep,name=storage_policies,json=storagePolicies,proto3" json:"storage_policies,omitempty"` + StoragePolicies []*SdkStoragePolicy `protobuf:"bytes,1,rep,name=storage_policies,json=storagePolicies" json:"storage_policies,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkOpenStoragePolicyEnumerateResponse) Reset() { - *x = SdkOpenStoragePolicyEnumerateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[89] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkOpenStoragePolicyEnumerateResponse) Reset() { *m = SdkOpenStoragePolicyEnumerateResponse{} } +func (m *SdkOpenStoragePolicyEnumerateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkOpenStoragePolicyEnumerateResponse) ProtoMessage() {} +func (*SdkOpenStoragePolicyEnumerateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{89} } - -func (x *SdkOpenStoragePolicyEnumerateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkOpenStoragePolicyEnumerateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkOpenStoragePolicyEnumerateResponse.Unmarshal(m, b) } - -func (*SdkOpenStoragePolicyEnumerateResponse) ProtoMessage() {} - -func (x *SdkOpenStoragePolicyEnumerateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[89] - 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) +func (m *SdkOpenStoragePolicyEnumerateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkOpenStoragePolicyEnumerateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkOpenStoragePolicyEnumerateResponse.ProtoReflect.Descriptor instead. -func (*SdkOpenStoragePolicyEnumerateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{89} +func (dst *SdkOpenStoragePolicyEnumerateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkOpenStoragePolicyEnumerateResponse.Merge(dst, src) +} +func (m *SdkOpenStoragePolicyEnumerateResponse) XXX_Size() int { + return xxx_messageInfo_SdkOpenStoragePolicyEnumerateResponse.Size(m) +} +func (m *SdkOpenStoragePolicyEnumerateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkOpenStoragePolicyEnumerateResponse.DiscardUnknown(m) } -func (x *SdkOpenStoragePolicyEnumerateResponse) GetStoragePolicies() []*SdkStoragePolicy { - if x != nil { - return x.StoragePolicies +var xxx_messageInfo_SdkOpenStoragePolicyEnumerateResponse proto.InternalMessageInfo + +func (m *SdkOpenStoragePolicyEnumerateResponse) GetStoragePolicies() []*SdkStoragePolicy { + if m != nil { + return m.StoragePolicies } return nil } // Define a request to inspect storage policy type SdkOpenStoragePolicyInspectRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // name of storage policy to retrive - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkOpenStoragePolicyInspectRequest) Reset() { - *x = SdkOpenStoragePolicyInspectRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[90] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkOpenStoragePolicyInspectRequest) Reset() { *m = SdkOpenStoragePolicyInspectRequest{} } +func (m *SdkOpenStoragePolicyInspectRequest) String() string { return proto.CompactTextString(m) } +func (*SdkOpenStoragePolicyInspectRequest) ProtoMessage() {} +func (*SdkOpenStoragePolicyInspectRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{90} } - -func (x *SdkOpenStoragePolicyInspectRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkOpenStoragePolicyInspectRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkOpenStoragePolicyInspectRequest.Unmarshal(m, b) } - -func (*SdkOpenStoragePolicyInspectRequest) ProtoMessage() {} - -func (x *SdkOpenStoragePolicyInspectRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[90] - 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) +func (m *SdkOpenStoragePolicyInspectRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkOpenStoragePolicyInspectRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkOpenStoragePolicyInspectRequest.ProtoReflect.Descriptor instead. -func (*SdkOpenStoragePolicyInspectRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{90} +func (dst *SdkOpenStoragePolicyInspectRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkOpenStoragePolicyInspectRequest.Merge(dst, src) +} +func (m *SdkOpenStoragePolicyInspectRequest) XXX_Size() int { + return xxx_messageInfo_SdkOpenStoragePolicyInspectRequest.Size(m) +} +func (m *SdkOpenStoragePolicyInspectRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkOpenStoragePolicyInspectRequest.DiscardUnknown(m) } -func (x *SdkOpenStoragePolicyInspectRequest) GetName() string { - if x != nil { - return x.Name +var xxx_messageInfo_SdkOpenStoragePolicyInspectRequest proto.InternalMessageInfo + +func (m *SdkOpenStoragePolicyInspectRequest) GetName() string { + if m != nil { + return m.Name } return "" } // Define a storage policy inspect response type SdkOpenStoragePolicyInspectResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // storage policy information requested by name - StoragePolicy *SdkStoragePolicy `protobuf:"bytes,1,opt,name=storage_policy,json=storagePolicy,proto3" json:"storage_policy,omitempty"` + StoragePolicy *SdkStoragePolicy `protobuf:"bytes,1,opt,name=storage_policy,json=storagePolicy" json:"storage_policy,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkOpenStoragePolicyInspectResponse) Reset() { - *x = SdkOpenStoragePolicyInspectResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[91] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkOpenStoragePolicyInspectResponse) Reset() { *m = SdkOpenStoragePolicyInspectResponse{} } +func (m *SdkOpenStoragePolicyInspectResponse) String() string { return proto.CompactTextString(m) } +func (*SdkOpenStoragePolicyInspectResponse) ProtoMessage() {} +func (*SdkOpenStoragePolicyInspectResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{91} } - -func (x *SdkOpenStoragePolicyInspectResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkOpenStoragePolicyInspectResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkOpenStoragePolicyInspectResponse.Unmarshal(m, b) } - -func (*SdkOpenStoragePolicyInspectResponse) ProtoMessage() {} - -func (x *SdkOpenStoragePolicyInspectResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[91] - 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) +func (m *SdkOpenStoragePolicyInspectResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkOpenStoragePolicyInspectResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkOpenStoragePolicyInspectResponse.ProtoReflect.Descriptor instead. -func (*SdkOpenStoragePolicyInspectResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{91} +func (dst *SdkOpenStoragePolicyInspectResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkOpenStoragePolicyInspectResponse.Merge(dst, src) +} +func (m *SdkOpenStoragePolicyInspectResponse) XXX_Size() int { + return xxx_messageInfo_SdkOpenStoragePolicyInspectResponse.Size(m) +} +func (m *SdkOpenStoragePolicyInspectResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkOpenStoragePolicyInspectResponse.DiscardUnknown(m) } -func (x *SdkOpenStoragePolicyInspectResponse) GetStoragePolicy() *SdkStoragePolicy { - if x != nil { - return x.StoragePolicy +var xxx_messageInfo_SdkOpenStoragePolicyInspectResponse proto.InternalMessageInfo + +func (m *SdkOpenStoragePolicyInspectResponse) GetStoragePolicy() *SdkStoragePolicy { + if m != nil { + return m.StoragePolicy } return nil } // Define a request to delete storage policy type SdkOpenStoragePolicyDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // name of storage policy to delete - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkOpenStoragePolicyDeleteRequest) Reset() { - *x = SdkOpenStoragePolicyDeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[92] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkOpenStoragePolicyDeleteRequest) Reset() { *m = SdkOpenStoragePolicyDeleteRequest{} } +func (m *SdkOpenStoragePolicyDeleteRequest) String() string { return proto.CompactTextString(m) } +func (*SdkOpenStoragePolicyDeleteRequest) ProtoMessage() {} +func (*SdkOpenStoragePolicyDeleteRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{92} } - -func (x *SdkOpenStoragePolicyDeleteRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkOpenStoragePolicyDeleteRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkOpenStoragePolicyDeleteRequest.Unmarshal(m, b) } - -func (*SdkOpenStoragePolicyDeleteRequest) ProtoMessage() {} - -func (x *SdkOpenStoragePolicyDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[92] - 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) +func (m *SdkOpenStoragePolicyDeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkOpenStoragePolicyDeleteRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkOpenStoragePolicyDeleteRequest.ProtoReflect.Descriptor instead. -func (*SdkOpenStoragePolicyDeleteRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{92} +func (dst *SdkOpenStoragePolicyDeleteRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkOpenStoragePolicyDeleteRequest.Merge(dst, src) +} +func (m *SdkOpenStoragePolicyDeleteRequest) XXX_Size() int { + return xxx_messageInfo_SdkOpenStoragePolicyDeleteRequest.Size(m) +} +func (m *SdkOpenStoragePolicyDeleteRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkOpenStoragePolicyDeleteRequest.DiscardUnknown(m) } -func (x *SdkOpenStoragePolicyDeleteRequest) GetName() string { - if x != nil { - return x.Name +var xxx_messageInfo_SdkOpenStoragePolicyDeleteRequest proto.InternalMessageInfo + +func (m *SdkOpenStoragePolicyDeleteRequest) GetName() string { + if m != nil { + return m.Name } return "" } // Empty Response type SdkOpenStoragePolicyDeleteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkOpenStoragePolicyDeleteResponse) Reset() { - *x = SdkOpenStoragePolicyDeleteResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[93] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkOpenStoragePolicyDeleteResponse) Reset() { *m = SdkOpenStoragePolicyDeleteResponse{} } +func (m *SdkOpenStoragePolicyDeleteResponse) String() string { return proto.CompactTextString(m) } +func (*SdkOpenStoragePolicyDeleteResponse) ProtoMessage() {} +func (*SdkOpenStoragePolicyDeleteResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{93} } - -func (x *SdkOpenStoragePolicyDeleteResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkOpenStoragePolicyDeleteResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkOpenStoragePolicyDeleteResponse.Unmarshal(m, b) } - -func (*SdkOpenStoragePolicyDeleteResponse) ProtoMessage() {} - -func (x *SdkOpenStoragePolicyDeleteResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[93] - 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) +func (m *SdkOpenStoragePolicyDeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkOpenStoragePolicyDeleteResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkOpenStoragePolicyDeleteResponse.ProtoReflect.Descriptor instead. -func (*SdkOpenStoragePolicyDeleteResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{93} +func (dst *SdkOpenStoragePolicyDeleteResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkOpenStoragePolicyDeleteResponse.Merge(dst, src) } - +func (m *SdkOpenStoragePolicyDeleteResponse) XXX_Size() int { + return xxx_messageInfo_SdkOpenStoragePolicyDeleteResponse.Size(m) +} +func (m *SdkOpenStoragePolicyDeleteResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkOpenStoragePolicyDeleteResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkOpenStoragePolicyDeleteResponse proto.InternalMessageInfo + // Define a request to update storage policy type SdkOpenStoragePolicyUpdateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // storage policy to update - StoragePolicy *SdkStoragePolicy `protobuf:"bytes,1,opt,name=storage_policy,json=storagePolicy,proto3" json:"storage_policy,omitempty"` + StoragePolicy *SdkStoragePolicy `protobuf:"bytes,1,opt,name=storage_policy,json=storagePolicy" json:"storage_policy,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkOpenStoragePolicyUpdateRequest) Reset() { - *x = SdkOpenStoragePolicyUpdateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[94] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkOpenStoragePolicyUpdateRequest) Reset() { *m = SdkOpenStoragePolicyUpdateRequest{} } +func (m *SdkOpenStoragePolicyUpdateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkOpenStoragePolicyUpdateRequest) ProtoMessage() {} +func (*SdkOpenStoragePolicyUpdateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{94} } - -func (x *SdkOpenStoragePolicyUpdateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkOpenStoragePolicyUpdateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkOpenStoragePolicyUpdateRequest.Unmarshal(m, b) } - -func (*SdkOpenStoragePolicyUpdateRequest) ProtoMessage() {} - -func (x *SdkOpenStoragePolicyUpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[94] - 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) +func (m *SdkOpenStoragePolicyUpdateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkOpenStoragePolicyUpdateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkOpenStoragePolicyUpdateRequest.ProtoReflect.Descriptor instead. -func (*SdkOpenStoragePolicyUpdateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{94} +func (dst *SdkOpenStoragePolicyUpdateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkOpenStoragePolicyUpdateRequest.Merge(dst, src) +} +func (m *SdkOpenStoragePolicyUpdateRequest) XXX_Size() int { + return xxx_messageInfo_SdkOpenStoragePolicyUpdateRequest.Size(m) +} +func (m *SdkOpenStoragePolicyUpdateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkOpenStoragePolicyUpdateRequest.DiscardUnknown(m) } -func (x *SdkOpenStoragePolicyUpdateRequest) GetStoragePolicy() *SdkStoragePolicy { - if x != nil { - return x.StoragePolicy +var xxx_messageInfo_SdkOpenStoragePolicyUpdateRequest proto.InternalMessageInfo + +func (m *SdkOpenStoragePolicyUpdateRequest) GetStoragePolicy() *SdkStoragePolicy { + if m != nil { + return m.StoragePolicy } return nil } // Empty Response type SdkOpenStoragePolicyUpdateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkOpenStoragePolicyUpdateResponse) Reset() { - *x = SdkOpenStoragePolicyUpdateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[95] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkOpenStoragePolicyUpdateResponse) Reset() { *m = SdkOpenStoragePolicyUpdateResponse{} } +func (m *SdkOpenStoragePolicyUpdateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkOpenStoragePolicyUpdateResponse) ProtoMessage() {} +func (*SdkOpenStoragePolicyUpdateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{95} } - -func (x *SdkOpenStoragePolicyUpdateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkOpenStoragePolicyUpdateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkOpenStoragePolicyUpdateResponse.Unmarshal(m, b) } - -func (*SdkOpenStoragePolicyUpdateResponse) ProtoMessage() {} - -func (x *SdkOpenStoragePolicyUpdateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[95] - 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) +func (m *SdkOpenStoragePolicyUpdateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkOpenStoragePolicyUpdateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkOpenStoragePolicyUpdateResponse.ProtoReflect.Descriptor instead. -func (*SdkOpenStoragePolicyUpdateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{95} +func (dst *SdkOpenStoragePolicyUpdateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkOpenStoragePolicyUpdateResponse.Merge(dst, src) +} +func (m *SdkOpenStoragePolicyUpdateResponse) XXX_Size() int { + return xxx_messageInfo_SdkOpenStoragePolicyUpdateResponse.Size(m) } +func (m *SdkOpenStoragePolicyUpdateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkOpenStoragePolicyUpdateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkOpenStoragePolicyUpdateResponse proto.InternalMessageInfo // Define a request to set default storage policy type SdkOpenStoragePolicySetDefaultRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // name of policy to set as default storage policy // for volume creation // This policy will be used to validate/update volume configuration - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkOpenStoragePolicySetDefaultRequest) Reset() { - *x = SdkOpenStoragePolicySetDefaultRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[96] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkOpenStoragePolicySetDefaultRequest) Reset() { *m = SdkOpenStoragePolicySetDefaultRequest{} } +func (m *SdkOpenStoragePolicySetDefaultRequest) String() string { return proto.CompactTextString(m) } +func (*SdkOpenStoragePolicySetDefaultRequest) ProtoMessage() {} +func (*SdkOpenStoragePolicySetDefaultRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{96} } - -func (x *SdkOpenStoragePolicySetDefaultRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkOpenStoragePolicySetDefaultRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkOpenStoragePolicySetDefaultRequest.Unmarshal(m, b) } - -func (*SdkOpenStoragePolicySetDefaultRequest) ProtoMessage() {} - -func (x *SdkOpenStoragePolicySetDefaultRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[96] - 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) +func (m *SdkOpenStoragePolicySetDefaultRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkOpenStoragePolicySetDefaultRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkOpenStoragePolicySetDefaultRequest.ProtoReflect.Descriptor instead. -func (*SdkOpenStoragePolicySetDefaultRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{96} +func (dst *SdkOpenStoragePolicySetDefaultRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkOpenStoragePolicySetDefaultRequest.Merge(dst, src) +} +func (m *SdkOpenStoragePolicySetDefaultRequest) XXX_Size() int { + return xxx_messageInfo_SdkOpenStoragePolicySetDefaultRequest.Size(m) +} +func (m *SdkOpenStoragePolicySetDefaultRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkOpenStoragePolicySetDefaultRequest.DiscardUnknown(m) } -func (x *SdkOpenStoragePolicySetDefaultRequest) GetName() string { - if x != nil { - return x.Name +var xxx_messageInfo_SdkOpenStoragePolicySetDefaultRequest proto.InternalMessageInfo + +func (m *SdkOpenStoragePolicySetDefaultRequest) GetName() string { + if m != nil { + return m.Name } return "" } // Empty Response type SdkOpenStoragePolicySetDefaultResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkOpenStoragePolicySetDefaultResponse) Reset() { - *x = SdkOpenStoragePolicySetDefaultResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[97] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkOpenStoragePolicySetDefaultResponse) Reset() { + *m = SdkOpenStoragePolicySetDefaultResponse{} } - -func (x *SdkOpenStoragePolicySetDefaultResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkOpenStoragePolicySetDefaultResponse) String() string { return proto.CompactTextString(m) } +func (*SdkOpenStoragePolicySetDefaultResponse) ProtoMessage() {} +func (*SdkOpenStoragePolicySetDefaultResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{97} } - -func (*SdkOpenStoragePolicySetDefaultResponse) ProtoMessage() {} - -func (x *SdkOpenStoragePolicySetDefaultResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[97] - 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) +func (m *SdkOpenStoragePolicySetDefaultResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkOpenStoragePolicySetDefaultResponse.Unmarshal(m, b) } - -// Deprecated: Use SdkOpenStoragePolicySetDefaultResponse.ProtoReflect.Descriptor instead. -func (*SdkOpenStoragePolicySetDefaultResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{97} +func (m *SdkOpenStoragePolicySetDefaultResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkOpenStoragePolicySetDefaultResponse.Marshal(b, m, deterministic) } - -// Empty Request -type SdkOpenStoragePolicyReleaseRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (dst *SdkOpenStoragePolicySetDefaultResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkOpenStoragePolicySetDefaultResponse.Merge(dst, src) } - -func (x *SdkOpenStoragePolicyReleaseRequest) Reset() { - *x = SdkOpenStoragePolicyReleaseRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[98] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkOpenStoragePolicySetDefaultResponse) XXX_Size() int { + return xxx_messageInfo_SdkOpenStoragePolicySetDefaultResponse.Size(m) } - -func (x *SdkOpenStoragePolicyReleaseRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkOpenStoragePolicySetDefaultResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkOpenStoragePolicySetDefaultResponse.DiscardUnknown(m) } -func (*SdkOpenStoragePolicyReleaseRequest) ProtoMessage() {} +var xxx_messageInfo_SdkOpenStoragePolicySetDefaultResponse proto.InternalMessageInfo -func (x *SdkOpenStoragePolicyReleaseRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[98] - 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) +// Empty Request +type SdkOpenStoragePolicyReleaseRequest struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -// Deprecated: Use SdkOpenStoragePolicyReleaseRequest.ProtoReflect.Descriptor instead. +func (m *SdkOpenStoragePolicyReleaseRequest) Reset() { *m = SdkOpenStoragePolicyReleaseRequest{} } +func (m *SdkOpenStoragePolicyReleaseRequest) String() string { return proto.CompactTextString(m) } +func (*SdkOpenStoragePolicyReleaseRequest) ProtoMessage() {} func (*SdkOpenStoragePolicyReleaseRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{98} + return fileDescriptor_api_bc0eb0e06839944e, []int{98} } - -// Empty Response -type SdkOpenStoragePolicyReleaseResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (m *SdkOpenStoragePolicyReleaseRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkOpenStoragePolicyReleaseRequest.Unmarshal(m, b) } - -func (x *SdkOpenStoragePolicyReleaseResponse) Reset() { - *x = SdkOpenStoragePolicyReleaseResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[99] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkOpenStoragePolicyReleaseRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkOpenStoragePolicyReleaseRequest.Marshal(b, m, deterministic) } - -func (x *SdkOpenStoragePolicyReleaseResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (dst *SdkOpenStoragePolicyReleaseRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkOpenStoragePolicyReleaseRequest.Merge(dst, src) +} +func (m *SdkOpenStoragePolicyReleaseRequest) XXX_Size() int { + return xxx_messageInfo_SdkOpenStoragePolicyReleaseRequest.Size(m) +} +func (m *SdkOpenStoragePolicyReleaseRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkOpenStoragePolicyReleaseRequest.DiscardUnknown(m) } -func (*SdkOpenStoragePolicyReleaseResponse) ProtoMessage() {} +var xxx_messageInfo_SdkOpenStoragePolicyReleaseRequest proto.InternalMessageInfo -func (x *SdkOpenStoragePolicyReleaseResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[99] - 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) +// Empty Response +type SdkOpenStoragePolicyReleaseResponse struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -// Deprecated: Use SdkOpenStoragePolicyReleaseResponse.ProtoReflect.Descriptor instead. +func (m *SdkOpenStoragePolicyReleaseResponse) Reset() { *m = SdkOpenStoragePolicyReleaseResponse{} } +func (m *SdkOpenStoragePolicyReleaseResponse) String() string { return proto.CompactTextString(m) } +func (*SdkOpenStoragePolicyReleaseResponse) ProtoMessage() {} func (*SdkOpenStoragePolicyReleaseResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{99} + return fileDescriptor_api_bc0eb0e06839944e, []int{99} } - -// Empty Request -type SdkOpenStoragePolicyDefaultInspectRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (m *SdkOpenStoragePolicyReleaseResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkOpenStoragePolicyReleaseResponse.Unmarshal(m, b) } - -func (x *SdkOpenStoragePolicyDefaultInspectRequest) Reset() { - *x = SdkOpenStoragePolicyDefaultInspectRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[100] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkOpenStoragePolicyReleaseResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkOpenStoragePolicyReleaseResponse.Marshal(b, m, deterministic) } - -func (x *SdkOpenStoragePolicyDefaultInspectRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (dst *SdkOpenStoragePolicyReleaseResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkOpenStoragePolicyReleaseResponse.Merge(dst, src) +} +func (m *SdkOpenStoragePolicyReleaseResponse) XXX_Size() int { + return xxx_messageInfo_SdkOpenStoragePolicyReleaseResponse.Size(m) +} +func (m *SdkOpenStoragePolicyReleaseResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkOpenStoragePolicyReleaseResponse.DiscardUnknown(m) } -func (*SdkOpenStoragePolicyDefaultInspectRequest) ProtoMessage() {} +var xxx_messageInfo_SdkOpenStoragePolicyReleaseResponse proto.InternalMessageInfo -func (x *SdkOpenStoragePolicyDefaultInspectRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[100] - 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) +// Empty Request +type SdkOpenStoragePolicyDefaultInspectRequest struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -// Deprecated: Use SdkOpenStoragePolicyDefaultInspectRequest.ProtoReflect.Descriptor instead. +func (m *SdkOpenStoragePolicyDefaultInspectRequest) Reset() { + *m = SdkOpenStoragePolicyDefaultInspectRequest{} +} +func (m *SdkOpenStoragePolicyDefaultInspectRequest) String() string { return proto.CompactTextString(m) } +func (*SdkOpenStoragePolicyDefaultInspectRequest) ProtoMessage() {} func (*SdkOpenStoragePolicyDefaultInspectRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{100} + return fileDescriptor_api_bc0eb0e06839944e, []int{100} } +func (m *SdkOpenStoragePolicyDefaultInspectRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkOpenStoragePolicyDefaultInspectRequest.Unmarshal(m, b) +} +func (m *SdkOpenStoragePolicyDefaultInspectRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkOpenStoragePolicyDefaultInspectRequest.Marshal(b, m, deterministic) +} +func (dst *SdkOpenStoragePolicyDefaultInspectRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkOpenStoragePolicyDefaultInspectRequest.Merge(dst, src) +} +func (m *SdkOpenStoragePolicyDefaultInspectRequest) XXX_Size() int { + return xxx_messageInfo_SdkOpenStoragePolicyDefaultInspectRequest.Size(m) +} +func (m *SdkOpenStoragePolicyDefaultInspectRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkOpenStoragePolicyDefaultInspectRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkOpenStoragePolicyDefaultInspectRequest proto.InternalMessageInfo // Define default storage policy response type SdkOpenStoragePolicyDefaultInspectResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // storage policy information which is set as default - StoragePolicy *SdkStoragePolicy `protobuf:"bytes,1,opt,name=storage_policy,json=storagePolicy,proto3" json:"storage_policy,omitempty"` + StoragePolicy *SdkStoragePolicy `protobuf:"bytes,1,opt,name=storage_policy,json=storagePolicy" json:"storage_policy,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkOpenStoragePolicyDefaultInspectResponse) Reset() { - *x = SdkOpenStoragePolicyDefaultInspectResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[101] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkOpenStoragePolicyDefaultInspectResponse) Reset() { + *m = SdkOpenStoragePolicyDefaultInspectResponse{} } - -func (x *SdkOpenStoragePolicyDefaultInspectResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkOpenStoragePolicyDefaultInspectResponse) String() string { + return proto.CompactTextString(m) } - func (*SdkOpenStoragePolicyDefaultInspectResponse) ProtoMessage() {} - -func (x *SdkOpenStoragePolicyDefaultInspectResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[101] - 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 SdkOpenStoragePolicyDefaultInspectResponse.ProtoReflect.Descriptor instead. func (*SdkOpenStoragePolicyDefaultInspectResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{101} + return fileDescriptor_api_bc0eb0e06839944e, []int{101} +} +func (m *SdkOpenStoragePolicyDefaultInspectResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkOpenStoragePolicyDefaultInspectResponse.Unmarshal(m, b) +} +func (m *SdkOpenStoragePolicyDefaultInspectResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkOpenStoragePolicyDefaultInspectResponse.Marshal(b, m, deterministic) +} +func (dst *SdkOpenStoragePolicyDefaultInspectResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkOpenStoragePolicyDefaultInspectResponse.Merge(dst, src) +} +func (m *SdkOpenStoragePolicyDefaultInspectResponse) XXX_Size() int { + return xxx_messageInfo_SdkOpenStoragePolicyDefaultInspectResponse.Size(m) +} +func (m *SdkOpenStoragePolicyDefaultInspectResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkOpenStoragePolicyDefaultInspectResponse.DiscardUnknown(m) } -func (x *SdkOpenStoragePolicyDefaultInspectResponse) GetStoragePolicy() *SdkStoragePolicy { - if x != nil { - return x.StoragePolicy +var xxx_messageInfo_SdkOpenStoragePolicyDefaultInspectResponse proto.InternalMessageInfo + +func (m *SdkOpenStoragePolicyDefaultInspectResponse) GetStoragePolicy() *SdkStoragePolicy { + if m != nil { + return m.StoragePolicy } return nil } // Define a schedule policy request type SdkSchedulePolicyCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Schedule Policy - SchedulePolicy *SdkSchedulePolicy `protobuf:"bytes,1,opt,name=schedule_policy,json=schedulePolicy,proto3" json:"schedule_policy,omitempty"` + SchedulePolicy *SdkSchedulePolicy `protobuf:"bytes,1,opt,name=schedule_policy,json=schedulePolicy" json:"schedule_policy,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkSchedulePolicyCreateRequest) Reset() { - *x = SdkSchedulePolicyCreateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[102] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkSchedulePolicyCreateRequest) Reset() { *m = SdkSchedulePolicyCreateRequest{} } +func (m *SdkSchedulePolicyCreateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkSchedulePolicyCreateRequest) ProtoMessage() {} +func (*SdkSchedulePolicyCreateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{102} } - -func (x *SdkSchedulePolicyCreateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkSchedulePolicyCreateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkSchedulePolicyCreateRequest.Unmarshal(m, b) } - -func (*SdkSchedulePolicyCreateRequest) ProtoMessage() {} - -func (x *SdkSchedulePolicyCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[102] - 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) +func (m *SdkSchedulePolicyCreateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkSchedulePolicyCreateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkSchedulePolicyCreateRequest.ProtoReflect.Descriptor instead. -func (*SdkSchedulePolicyCreateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{102} +func (dst *SdkSchedulePolicyCreateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkSchedulePolicyCreateRequest.Merge(dst, src) +} +func (m *SdkSchedulePolicyCreateRequest) XXX_Size() int { + return xxx_messageInfo_SdkSchedulePolicyCreateRequest.Size(m) +} +func (m *SdkSchedulePolicyCreateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkSchedulePolicyCreateRequest.DiscardUnknown(m) } -func (x *SdkSchedulePolicyCreateRequest) GetSchedulePolicy() *SdkSchedulePolicy { - if x != nil { - return x.SchedulePolicy +var xxx_messageInfo_SdkSchedulePolicyCreateRequest proto.InternalMessageInfo + +func (m *SdkSchedulePolicyCreateRequest) GetSchedulePolicy() *SdkSchedulePolicy { + if m != nil { + return m.SchedulePolicy } return nil } // Empty response type SdkSchedulePolicyCreateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkSchedulePolicyCreateResponse) Reset() { - *x = SdkSchedulePolicyCreateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[103] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkSchedulePolicyCreateResponse) Reset() { *m = SdkSchedulePolicyCreateResponse{} } +func (m *SdkSchedulePolicyCreateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkSchedulePolicyCreateResponse) ProtoMessage() {} +func (*SdkSchedulePolicyCreateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{103} } - -func (x *SdkSchedulePolicyCreateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkSchedulePolicyCreateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkSchedulePolicyCreateResponse.Unmarshal(m, b) } - -func (*SdkSchedulePolicyCreateResponse) ProtoMessage() {} - -func (x *SdkSchedulePolicyCreateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[103] - 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) +func (m *SdkSchedulePolicyCreateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkSchedulePolicyCreateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkSchedulePolicyCreateResponse.ProtoReflect.Descriptor instead. -func (*SdkSchedulePolicyCreateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{103} +func (dst *SdkSchedulePolicyCreateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkSchedulePolicyCreateResponse.Merge(dst, src) +} +func (m *SdkSchedulePolicyCreateResponse) XXX_Size() int { + return xxx_messageInfo_SdkSchedulePolicyCreateResponse.Size(m) } +func (m *SdkSchedulePolicyCreateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkSchedulePolicyCreateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkSchedulePolicyCreateResponse proto.InternalMessageInfo // Define a request to update a schedule policy type SdkSchedulePolicyUpdateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Schedule Policy - SchedulePolicy *SdkSchedulePolicy `protobuf:"bytes,1,opt,name=schedule_policy,json=schedulePolicy,proto3" json:"schedule_policy,omitempty"` + SchedulePolicy *SdkSchedulePolicy `protobuf:"bytes,1,opt,name=schedule_policy,json=schedulePolicy" json:"schedule_policy,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkSchedulePolicyUpdateRequest) Reset() { - *x = SdkSchedulePolicyUpdateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[104] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkSchedulePolicyUpdateRequest) Reset() { *m = SdkSchedulePolicyUpdateRequest{} } +func (m *SdkSchedulePolicyUpdateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkSchedulePolicyUpdateRequest) ProtoMessage() {} +func (*SdkSchedulePolicyUpdateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{104} } - -func (x *SdkSchedulePolicyUpdateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkSchedulePolicyUpdateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkSchedulePolicyUpdateRequest.Unmarshal(m, b) } - -func (*SdkSchedulePolicyUpdateRequest) ProtoMessage() {} - -func (x *SdkSchedulePolicyUpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[104] - 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) +func (m *SdkSchedulePolicyUpdateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkSchedulePolicyUpdateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkSchedulePolicyUpdateRequest.ProtoReflect.Descriptor instead. -func (*SdkSchedulePolicyUpdateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{104} +func (dst *SdkSchedulePolicyUpdateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkSchedulePolicyUpdateRequest.Merge(dst, src) +} +func (m *SdkSchedulePolicyUpdateRequest) XXX_Size() int { + return xxx_messageInfo_SdkSchedulePolicyUpdateRequest.Size(m) +} +func (m *SdkSchedulePolicyUpdateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkSchedulePolicyUpdateRequest.DiscardUnknown(m) } -func (x *SdkSchedulePolicyUpdateRequest) GetSchedulePolicy() *SdkSchedulePolicy { - if x != nil { - return x.SchedulePolicy +var xxx_messageInfo_SdkSchedulePolicyUpdateRequest proto.InternalMessageInfo + +func (m *SdkSchedulePolicyUpdateRequest) GetSchedulePolicy() *SdkSchedulePolicy { + if m != nil { + return m.SchedulePolicy } return nil } // Empty response type SdkSchedulePolicyUpdateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkSchedulePolicyUpdateResponse) Reset() { - *x = SdkSchedulePolicyUpdateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[105] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkSchedulePolicyUpdateResponse) Reset() { *m = SdkSchedulePolicyUpdateResponse{} } +func (m *SdkSchedulePolicyUpdateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkSchedulePolicyUpdateResponse) ProtoMessage() {} +func (*SdkSchedulePolicyUpdateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{105} } - -func (x *SdkSchedulePolicyUpdateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkSchedulePolicyUpdateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkSchedulePolicyUpdateResponse.Unmarshal(m, b) } - -func (*SdkSchedulePolicyUpdateResponse) ProtoMessage() {} - -func (x *SdkSchedulePolicyUpdateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[105] - 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) +func (m *SdkSchedulePolicyUpdateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkSchedulePolicyUpdateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkSchedulePolicyUpdateResponse.ProtoReflect.Descriptor instead. -func (*SdkSchedulePolicyUpdateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{105} +func (dst *SdkSchedulePolicyUpdateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkSchedulePolicyUpdateResponse.Merge(dst, src) +} +func (m *SdkSchedulePolicyUpdateResponse) XXX_Size() int { + return xxx_messageInfo_SdkSchedulePolicyUpdateResponse.Size(m) } +func (m *SdkSchedulePolicyUpdateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkSchedulePolicyUpdateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkSchedulePolicyUpdateResponse proto.InternalMessageInfo // Empty request type SdkSchedulePolicyEnumerateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkSchedulePolicyEnumerateRequest) Reset() { - *x = SdkSchedulePolicyEnumerateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[106] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkSchedulePolicyEnumerateRequest) Reset() { *m = SdkSchedulePolicyEnumerateRequest{} } +func (m *SdkSchedulePolicyEnumerateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkSchedulePolicyEnumerateRequest) ProtoMessage() {} +func (*SdkSchedulePolicyEnumerateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{106} } - -func (x *SdkSchedulePolicyEnumerateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkSchedulePolicyEnumerateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkSchedulePolicyEnumerateRequest.Unmarshal(m, b) } - -func (*SdkSchedulePolicyEnumerateRequest) ProtoMessage() {} - -func (x *SdkSchedulePolicyEnumerateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[106] - 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) +func (m *SdkSchedulePolicyEnumerateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkSchedulePolicyEnumerateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkSchedulePolicyEnumerateRequest.ProtoReflect.Descriptor instead. -func (*SdkSchedulePolicyEnumerateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{106} +func (dst *SdkSchedulePolicyEnumerateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkSchedulePolicyEnumerateRequest.Merge(dst, src) +} +func (m *SdkSchedulePolicyEnumerateRequest) XXX_Size() int { + return xxx_messageInfo_SdkSchedulePolicyEnumerateRequest.Size(m) } +func (m *SdkSchedulePolicyEnumerateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkSchedulePolicyEnumerateRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkSchedulePolicyEnumerateRequest proto.InternalMessageInfo // Defines a schedule policy enumerate response type SdkSchedulePolicyEnumerateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // List of Schedule Policy - Policies []*SdkSchedulePolicy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"` + Policies []*SdkSchedulePolicy `protobuf:"bytes,1,rep,name=policies" json:"policies,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkSchedulePolicyEnumerateResponse) Reset() { - *x = SdkSchedulePolicyEnumerateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[107] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkSchedulePolicyEnumerateResponse) Reset() { *m = SdkSchedulePolicyEnumerateResponse{} } +func (m *SdkSchedulePolicyEnumerateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkSchedulePolicyEnumerateResponse) ProtoMessage() {} +func (*SdkSchedulePolicyEnumerateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{107} } - -func (x *SdkSchedulePolicyEnumerateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkSchedulePolicyEnumerateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkSchedulePolicyEnumerateResponse.Unmarshal(m, b) } - -func (*SdkSchedulePolicyEnumerateResponse) ProtoMessage() {} - -func (x *SdkSchedulePolicyEnumerateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[107] - 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) +func (m *SdkSchedulePolicyEnumerateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkSchedulePolicyEnumerateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkSchedulePolicyEnumerateResponse.ProtoReflect.Descriptor instead. -func (*SdkSchedulePolicyEnumerateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{107} +func (dst *SdkSchedulePolicyEnumerateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkSchedulePolicyEnumerateResponse.Merge(dst, src) +} +func (m *SdkSchedulePolicyEnumerateResponse) XXX_Size() int { + return xxx_messageInfo_SdkSchedulePolicyEnumerateResponse.Size(m) +} +func (m *SdkSchedulePolicyEnumerateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkSchedulePolicyEnumerateResponse.DiscardUnknown(m) } -func (x *SdkSchedulePolicyEnumerateResponse) GetPolicies() []*SdkSchedulePolicy { - if x != nil { - return x.Policies +var xxx_messageInfo_SdkSchedulePolicyEnumerateResponse proto.InternalMessageInfo + +func (m *SdkSchedulePolicyEnumerateResponse) GetPolicies() []*SdkSchedulePolicy { + if m != nil { + return m.Policies } return nil } // Define a schedule policy inspection request type SdkSchedulePolicyInspectRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Name of the schedule Policy - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkSchedulePolicyInspectRequest) Reset() { - *x = SdkSchedulePolicyInspectRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[108] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkSchedulePolicyInspectRequest) Reset() { *m = SdkSchedulePolicyInspectRequest{} } +func (m *SdkSchedulePolicyInspectRequest) String() string { return proto.CompactTextString(m) } +func (*SdkSchedulePolicyInspectRequest) ProtoMessage() {} +func (*SdkSchedulePolicyInspectRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{108} } - -func (x *SdkSchedulePolicyInspectRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkSchedulePolicyInspectRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkSchedulePolicyInspectRequest.Unmarshal(m, b) } - -func (*SdkSchedulePolicyInspectRequest) ProtoMessage() {} - -func (x *SdkSchedulePolicyInspectRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[108] - 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) +func (m *SdkSchedulePolicyInspectRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkSchedulePolicyInspectRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkSchedulePolicyInspectRequest.ProtoReflect.Descriptor instead. -func (*SdkSchedulePolicyInspectRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{108} +func (dst *SdkSchedulePolicyInspectRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkSchedulePolicyInspectRequest.Merge(dst, src) +} +func (m *SdkSchedulePolicyInspectRequest) XXX_Size() int { + return xxx_messageInfo_SdkSchedulePolicyInspectRequest.Size(m) +} +func (m *SdkSchedulePolicyInspectRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkSchedulePolicyInspectRequest.DiscardUnknown(m) } -func (x *SdkSchedulePolicyInspectRequest) GetName() string { - if x != nil { - return x.Name +var xxx_messageInfo_SdkSchedulePolicyInspectRequest proto.InternalMessageInfo + +func (m *SdkSchedulePolicyInspectRequest) GetName() string { + if m != nil { + return m.Name } return "" } // Defines a schedule policy inspection response type SdkSchedulePolicyInspectResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // List of Schedule Policy - Policy *SdkSchedulePolicy `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"` + Policy *SdkSchedulePolicy `protobuf:"bytes,1,opt,name=policy" json:"policy,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkSchedulePolicyInspectResponse) Reset() { - *x = SdkSchedulePolicyInspectResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[109] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkSchedulePolicyInspectResponse) Reset() { *m = SdkSchedulePolicyInspectResponse{} } +func (m *SdkSchedulePolicyInspectResponse) String() string { return proto.CompactTextString(m) } +func (*SdkSchedulePolicyInspectResponse) ProtoMessage() {} +func (*SdkSchedulePolicyInspectResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{109} } - -func (x *SdkSchedulePolicyInspectResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkSchedulePolicyInspectResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkSchedulePolicyInspectResponse.Unmarshal(m, b) } - -func (*SdkSchedulePolicyInspectResponse) ProtoMessage() {} - -func (x *SdkSchedulePolicyInspectResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[109] - 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) +func (m *SdkSchedulePolicyInspectResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkSchedulePolicyInspectResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkSchedulePolicyInspectResponse.ProtoReflect.Descriptor instead. -func (*SdkSchedulePolicyInspectResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{109} +func (dst *SdkSchedulePolicyInspectResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkSchedulePolicyInspectResponse.Merge(dst, src) +} +func (m *SdkSchedulePolicyInspectResponse) XXX_Size() int { + return xxx_messageInfo_SdkSchedulePolicyInspectResponse.Size(m) +} +func (m *SdkSchedulePolicyInspectResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkSchedulePolicyInspectResponse.DiscardUnknown(m) } -func (x *SdkSchedulePolicyInspectResponse) GetPolicy() *SdkSchedulePolicy { - if x != nil { - return x.Policy +var xxx_messageInfo_SdkSchedulePolicyInspectResponse proto.InternalMessageInfo + +func (m *SdkSchedulePolicyInspectResponse) GetPolicy() *SdkSchedulePolicy { + if m != nil { + return m.Policy } return nil } // Define schedule policy deletion request type SdkSchedulePolicyDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Name of the schedule policy - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkSchedulePolicyDeleteRequest) Reset() { - *x = SdkSchedulePolicyDeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[110] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkSchedulePolicyDeleteRequest) Reset() { *m = SdkSchedulePolicyDeleteRequest{} } +func (m *SdkSchedulePolicyDeleteRequest) String() string { return proto.CompactTextString(m) } +func (*SdkSchedulePolicyDeleteRequest) ProtoMessage() {} +func (*SdkSchedulePolicyDeleteRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{110} } - -func (x *SdkSchedulePolicyDeleteRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkSchedulePolicyDeleteRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkSchedulePolicyDeleteRequest.Unmarshal(m, b) } - -func (*SdkSchedulePolicyDeleteRequest) ProtoMessage() {} - -func (x *SdkSchedulePolicyDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[110] - 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) +func (m *SdkSchedulePolicyDeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkSchedulePolicyDeleteRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkSchedulePolicyDeleteRequest.ProtoReflect.Descriptor instead. -func (*SdkSchedulePolicyDeleteRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{110} +func (dst *SdkSchedulePolicyDeleteRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkSchedulePolicyDeleteRequest.Merge(dst, src) +} +func (m *SdkSchedulePolicyDeleteRequest) XXX_Size() int { + return xxx_messageInfo_SdkSchedulePolicyDeleteRequest.Size(m) +} +func (m *SdkSchedulePolicyDeleteRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkSchedulePolicyDeleteRequest.DiscardUnknown(m) } -func (x *SdkSchedulePolicyDeleteRequest) GetName() string { - if x != nil { - return x.Name +var xxx_messageInfo_SdkSchedulePolicyDeleteRequest proto.InternalMessageInfo + +func (m *SdkSchedulePolicyDeleteRequest) GetName() string { + if m != nil { + return m.Name } return "" } // Empty response type SdkSchedulePolicyDeleteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkSchedulePolicyDeleteResponse) Reset() { - *x = SdkSchedulePolicyDeleteResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[111] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkSchedulePolicyDeleteResponse) Reset() { *m = SdkSchedulePolicyDeleteResponse{} } +func (m *SdkSchedulePolicyDeleteResponse) String() string { return proto.CompactTextString(m) } +func (*SdkSchedulePolicyDeleteResponse) ProtoMessage() {} +func (*SdkSchedulePolicyDeleteResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{111} } - -func (x *SdkSchedulePolicyDeleteResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkSchedulePolicyDeleteResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkSchedulePolicyDeleteResponse.Unmarshal(m, b) } - -func (*SdkSchedulePolicyDeleteResponse) ProtoMessage() {} - -func (x *SdkSchedulePolicyDeleteResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[111] - 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) +func (m *SdkSchedulePolicyDeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkSchedulePolicyDeleteResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkSchedulePolicyDeleteResponse.ProtoReflect.Descriptor instead. -func (*SdkSchedulePolicyDeleteResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{111} +func (dst *SdkSchedulePolicyDeleteResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkSchedulePolicyDeleteResponse.Merge(dst, src) +} +func (m *SdkSchedulePolicyDeleteResponse) XXX_Size() int { + return xxx_messageInfo_SdkSchedulePolicyDeleteResponse.Size(m) } +func (m *SdkSchedulePolicyDeleteResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkSchedulePolicyDeleteResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkSchedulePolicyDeleteResponse proto.InternalMessageInfo // Defines a daily schedule type SdkSchedulePolicyIntervalDaily struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Range: 0-23 - Hour int32 `protobuf:"varint,1,opt,name=hour,proto3" json:"hour,omitempty"` + Hour int32 `protobuf:"varint,1,opt,name=hour" json:"hour,omitempty"` // Range: 0-59 - Minute int32 `protobuf:"varint,2,opt,name=minute,proto3" json:"minute,omitempty"` + Minute int32 `protobuf:"varint,2,opt,name=minute" json:"minute,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkSchedulePolicyIntervalDaily) Reset() { - *x = SdkSchedulePolicyIntervalDaily{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[112] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkSchedulePolicyIntervalDaily) Reset() { *m = SdkSchedulePolicyIntervalDaily{} } +func (m *SdkSchedulePolicyIntervalDaily) String() string { return proto.CompactTextString(m) } +func (*SdkSchedulePolicyIntervalDaily) ProtoMessage() {} +func (*SdkSchedulePolicyIntervalDaily) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{112} } - -func (x *SdkSchedulePolicyIntervalDaily) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkSchedulePolicyIntervalDaily) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkSchedulePolicyIntervalDaily.Unmarshal(m, b) } - -func (*SdkSchedulePolicyIntervalDaily) ProtoMessage() {} - -func (x *SdkSchedulePolicyIntervalDaily) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[112] - 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) +func (m *SdkSchedulePolicyIntervalDaily) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkSchedulePolicyIntervalDaily.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkSchedulePolicyIntervalDaily.ProtoReflect.Descriptor instead. -func (*SdkSchedulePolicyIntervalDaily) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{112} +func (dst *SdkSchedulePolicyIntervalDaily) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkSchedulePolicyIntervalDaily.Merge(dst, src) +} +func (m *SdkSchedulePolicyIntervalDaily) XXX_Size() int { + return xxx_messageInfo_SdkSchedulePolicyIntervalDaily.Size(m) +} +func (m *SdkSchedulePolicyIntervalDaily) XXX_DiscardUnknown() { + xxx_messageInfo_SdkSchedulePolicyIntervalDaily.DiscardUnknown(m) } -func (x *SdkSchedulePolicyIntervalDaily) GetHour() int32 { - if x != nil { - return x.Hour +var xxx_messageInfo_SdkSchedulePolicyIntervalDaily proto.InternalMessageInfo + +func (m *SdkSchedulePolicyIntervalDaily) GetHour() int32 { + if m != nil { + return m.Hour } return 0 } -func (x *SdkSchedulePolicyIntervalDaily) GetMinute() int32 { - if x != nil { - return x.Minute +func (m *SdkSchedulePolicyIntervalDaily) GetMinute() int32 { + if m != nil { + return m.Minute } return 0 } // Defines a weekly schedule type SdkSchedulePolicyIntervalWeekly struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Day SdkTimeWeekday `protobuf:"varint,1,opt,name=day,proto3,enum=openstorage.api.SdkTimeWeekday" json:"day,omitempty"` + Day SdkTimeWeekday `protobuf:"varint,1,opt,name=day,enum=openstorage.api.SdkTimeWeekday" json:"day,omitempty"` // Range: 0-23 - Hour int32 `protobuf:"varint,2,opt,name=hour,proto3" json:"hour,omitempty"` + Hour int32 `protobuf:"varint,2,opt,name=hour" json:"hour,omitempty"` // Range: 0-59 - Minute int32 `protobuf:"varint,3,opt,name=minute,proto3" json:"minute,omitempty"` + Minute int32 `protobuf:"varint,3,opt,name=minute" json:"minute,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkSchedulePolicyIntervalWeekly) Reset() { - *x = SdkSchedulePolicyIntervalWeekly{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[113] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkSchedulePolicyIntervalWeekly) Reset() { *m = SdkSchedulePolicyIntervalWeekly{} } +func (m *SdkSchedulePolicyIntervalWeekly) String() string { return proto.CompactTextString(m) } +func (*SdkSchedulePolicyIntervalWeekly) ProtoMessage() {} +func (*SdkSchedulePolicyIntervalWeekly) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{113} } - -func (x *SdkSchedulePolicyIntervalWeekly) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkSchedulePolicyIntervalWeekly) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkSchedulePolicyIntervalWeekly.Unmarshal(m, b) } - -func (*SdkSchedulePolicyIntervalWeekly) ProtoMessage() {} - -func (x *SdkSchedulePolicyIntervalWeekly) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[113] - 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) +func (m *SdkSchedulePolicyIntervalWeekly) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkSchedulePolicyIntervalWeekly.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkSchedulePolicyIntervalWeekly.ProtoReflect.Descriptor instead. -func (*SdkSchedulePolicyIntervalWeekly) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{113} +func (dst *SdkSchedulePolicyIntervalWeekly) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkSchedulePolicyIntervalWeekly.Merge(dst, src) +} +func (m *SdkSchedulePolicyIntervalWeekly) XXX_Size() int { + return xxx_messageInfo_SdkSchedulePolicyIntervalWeekly.Size(m) } +func (m *SdkSchedulePolicyIntervalWeekly) XXX_DiscardUnknown() { + xxx_messageInfo_SdkSchedulePolicyIntervalWeekly.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkSchedulePolicyIntervalWeekly proto.InternalMessageInfo -func (x *SdkSchedulePolicyIntervalWeekly) GetDay() SdkTimeWeekday { - if x != nil { - return x.Day +func (m *SdkSchedulePolicyIntervalWeekly) GetDay() SdkTimeWeekday { + if m != nil { + return m.Day } return SdkTimeWeekday_SdkTimeWeekdaySunday } -func (x *SdkSchedulePolicyIntervalWeekly) GetHour() int32 { - if x != nil { - return x.Hour +func (m *SdkSchedulePolicyIntervalWeekly) GetHour() int32 { + if m != nil { + return m.Hour } return 0 } -func (x *SdkSchedulePolicyIntervalWeekly) GetMinute() int32 { - if x != nil { - return x.Minute +func (m *SdkSchedulePolicyIntervalWeekly) GetMinute() int32 { + if m != nil { + return m.Minute } return 0 } // Defines a monthly schedule type SdkSchedulePolicyIntervalMonthly struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Range: 1-28 - Day int32 `protobuf:"varint,1,opt,name=day,proto3" json:"day,omitempty"` + Day int32 `protobuf:"varint,1,opt,name=day" json:"day,omitempty"` // Range: 0-59 - Hour int32 `protobuf:"varint,2,opt,name=hour,proto3" json:"hour,omitempty"` + Hour int32 `protobuf:"varint,2,opt,name=hour" json:"hour,omitempty"` // Range: 0-59 - Minute int32 `protobuf:"varint,3,opt,name=minute,proto3" json:"minute,omitempty"` + Minute int32 `protobuf:"varint,3,opt,name=minute" json:"minute,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkSchedulePolicyIntervalMonthly) Reset() { - *x = SdkSchedulePolicyIntervalMonthly{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[114] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkSchedulePolicyIntervalMonthly) Reset() { *m = SdkSchedulePolicyIntervalMonthly{} } +func (m *SdkSchedulePolicyIntervalMonthly) String() string { return proto.CompactTextString(m) } +func (*SdkSchedulePolicyIntervalMonthly) ProtoMessage() {} +func (*SdkSchedulePolicyIntervalMonthly) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{114} } - -func (x *SdkSchedulePolicyIntervalMonthly) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkSchedulePolicyIntervalMonthly) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkSchedulePolicyIntervalMonthly.Unmarshal(m, b) } - -func (*SdkSchedulePolicyIntervalMonthly) ProtoMessage() {} - -func (x *SdkSchedulePolicyIntervalMonthly) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[114] - 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) +func (m *SdkSchedulePolicyIntervalMonthly) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkSchedulePolicyIntervalMonthly.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkSchedulePolicyIntervalMonthly.ProtoReflect.Descriptor instead. -func (*SdkSchedulePolicyIntervalMonthly) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{114} +func (dst *SdkSchedulePolicyIntervalMonthly) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkSchedulePolicyIntervalMonthly.Merge(dst, src) +} +func (m *SdkSchedulePolicyIntervalMonthly) XXX_Size() int { + return xxx_messageInfo_SdkSchedulePolicyIntervalMonthly.Size(m) } +func (m *SdkSchedulePolicyIntervalMonthly) XXX_DiscardUnknown() { + xxx_messageInfo_SdkSchedulePolicyIntervalMonthly.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkSchedulePolicyIntervalMonthly proto.InternalMessageInfo -func (x *SdkSchedulePolicyIntervalMonthly) GetDay() int32 { - if x != nil { - return x.Day +func (m *SdkSchedulePolicyIntervalMonthly) GetDay() int32 { + if m != nil { + return m.Day } return 0 } -func (x *SdkSchedulePolicyIntervalMonthly) GetHour() int32 { - if x != nil { - return x.Hour +func (m *SdkSchedulePolicyIntervalMonthly) GetHour() int32 { + if m != nil { + return m.Hour } return 0 } -func (x *SdkSchedulePolicyIntervalMonthly) GetMinute() int32 { - if x != nil { - return x.Minute +func (m *SdkSchedulePolicyIntervalMonthly) GetMinute() int32 { + if m != nil { + return m.Minute } return 0 } // Defines a periodic schedule type SdkSchedulePolicyIntervalPeriodic struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Specify the number of seconds between intervals - Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"` + Seconds int64 `protobuf:"varint,1,opt,name=seconds" json:"seconds,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkSchedulePolicyIntervalPeriodic) Reset() { - *x = SdkSchedulePolicyIntervalPeriodic{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[115] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkSchedulePolicyIntervalPeriodic) Reset() { *m = SdkSchedulePolicyIntervalPeriodic{} } +func (m *SdkSchedulePolicyIntervalPeriodic) String() string { return proto.CompactTextString(m) } +func (*SdkSchedulePolicyIntervalPeriodic) ProtoMessage() {} +func (*SdkSchedulePolicyIntervalPeriodic) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{115} } - -func (x *SdkSchedulePolicyIntervalPeriodic) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkSchedulePolicyIntervalPeriodic) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkSchedulePolicyIntervalPeriodic.Unmarshal(m, b) } - -func (*SdkSchedulePolicyIntervalPeriodic) ProtoMessage() {} - -func (x *SdkSchedulePolicyIntervalPeriodic) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[115] - 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) +func (m *SdkSchedulePolicyIntervalPeriodic) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkSchedulePolicyIntervalPeriodic.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkSchedulePolicyIntervalPeriodic.ProtoReflect.Descriptor instead. -func (*SdkSchedulePolicyIntervalPeriodic) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{115} +func (dst *SdkSchedulePolicyIntervalPeriodic) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkSchedulePolicyIntervalPeriodic.Merge(dst, src) +} +func (m *SdkSchedulePolicyIntervalPeriodic) XXX_Size() int { + return xxx_messageInfo_SdkSchedulePolicyIntervalPeriodic.Size(m) } +func (m *SdkSchedulePolicyIntervalPeriodic) XXX_DiscardUnknown() { + xxx_messageInfo_SdkSchedulePolicyIntervalPeriodic.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkSchedulePolicyIntervalPeriodic proto.InternalMessageInfo -func (x *SdkSchedulePolicyIntervalPeriodic) GetSeconds() int64 { - if x != nil { - return x.Seconds +func (m *SdkSchedulePolicyIntervalPeriodic) GetSeconds() int64 { + if m != nil { + return m.Seconds } return 0 } // Defines a schedule policy interval type SdkSchedulePolicyInterval struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Number of instances to retain - Retain int64 `protobuf:"varint,1,opt,name=retain,proto3" json:"retain,omitempty"` + Retain int64 `protobuf:"varint,1,opt,name=retain" json:"retain,omitempty"` // Start oneof at field number 200 to allow for expansion // - // Types that are assignable to PeriodType: + // Types that are valid to be assigned to PeriodType: // *SdkSchedulePolicyInterval_Daily // *SdkSchedulePolicyInterval_Weekly // *SdkSchedulePolicyInterval_Monthly // *SdkSchedulePolicyInterval_Periodic - PeriodType isSdkSchedulePolicyInterval_PeriodType `protobuf_oneof:"period_type"` + PeriodType isSdkSchedulePolicyInterval_PeriodType `protobuf_oneof:"period_type"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkSchedulePolicyInterval) Reset() { - *x = SdkSchedulePolicyInterval{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[116] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkSchedulePolicyInterval) Reset() { *m = SdkSchedulePolicyInterval{} } +func (m *SdkSchedulePolicyInterval) String() string { return proto.CompactTextString(m) } +func (*SdkSchedulePolicyInterval) ProtoMessage() {} +func (*SdkSchedulePolicyInterval) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{116} } - -func (x *SdkSchedulePolicyInterval) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkSchedulePolicyInterval) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkSchedulePolicyInterval.Unmarshal(m, b) +} +func (m *SdkSchedulePolicyInterval) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkSchedulePolicyInterval.Marshal(b, m, deterministic) +} +func (dst *SdkSchedulePolicyInterval) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkSchedulePolicyInterval.Merge(dst, src) +} +func (m *SdkSchedulePolicyInterval) XXX_Size() int { + return xxx_messageInfo_SdkSchedulePolicyInterval.Size(m) +} +func (m *SdkSchedulePolicyInterval) XXX_DiscardUnknown() { + xxx_messageInfo_SdkSchedulePolicyInterval.DiscardUnknown(m) } -func (*SdkSchedulePolicyInterval) ProtoMessage() {} +var xxx_messageInfo_SdkSchedulePolicyInterval proto.InternalMessageInfo -func (x *SdkSchedulePolicyInterval) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[116] - 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) +type isSdkSchedulePolicyInterval_PeriodType interface { + isSdkSchedulePolicyInterval_PeriodType() } -// Deprecated: Use SdkSchedulePolicyInterval.ProtoReflect.Descriptor instead. -func (*SdkSchedulePolicyInterval) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{116} +type SdkSchedulePolicyInterval_Daily struct { + Daily *SdkSchedulePolicyIntervalDaily `protobuf:"bytes,200,opt,name=daily,oneof"` } - -func (x *SdkSchedulePolicyInterval) GetRetain() int64 { - if x != nil { - return x.Retain - } - return 0 +type SdkSchedulePolicyInterval_Weekly struct { + Weekly *SdkSchedulePolicyIntervalWeekly `protobuf:"bytes,201,opt,name=weekly,oneof"` +} +type SdkSchedulePolicyInterval_Monthly struct { + Monthly *SdkSchedulePolicyIntervalMonthly `protobuf:"bytes,202,opt,name=monthly,oneof"` +} +type SdkSchedulePolicyInterval_Periodic struct { + Periodic *SdkSchedulePolicyIntervalPeriodic `protobuf:"bytes,203,opt,name=periodic,oneof"` } +func (*SdkSchedulePolicyInterval_Daily) isSdkSchedulePolicyInterval_PeriodType() {} +func (*SdkSchedulePolicyInterval_Weekly) isSdkSchedulePolicyInterval_PeriodType() {} +func (*SdkSchedulePolicyInterval_Monthly) isSdkSchedulePolicyInterval_PeriodType() {} +func (*SdkSchedulePolicyInterval_Periodic) isSdkSchedulePolicyInterval_PeriodType() {} + func (m *SdkSchedulePolicyInterval) GetPeriodType() isSdkSchedulePolicyInterval_PeriodType { if m != nil { return m.PeriodType @@ -13751,1152 +12916,1199 @@ func (m *SdkSchedulePolicyInterval) GetPeriodType() isSdkSchedulePolicyInterval_ return nil } -func (x *SdkSchedulePolicyInterval) GetDaily() *SdkSchedulePolicyIntervalDaily { - if x, ok := x.GetPeriodType().(*SdkSchedulePolicyInterval_Daily); ok { +func (m *SdkSchedulePolicyInterval) GetRetain() int64 { + if m != nil { + return m.Retain + } + return 0 +} + +func (m *SdkSchedulePolicyInterval) GetDaily() *SdkSchedulePolicyIntervalDaily { + if x, ok := m.GetPeriodType().(*SdkSchedulePolicyInterval_Daily); ok { return x.Daily } return nil } -func (x *SdkSchedulePolicyInterval) GetWeekly() *SdkSchedulePolicyIntervalWeekly { - if x, ok := x.GetPeriodType().(*SdkSchedulePolicyInterval_Weekly); ok { +func (m *SdkSchedulePolicyInterval) GetWeekly() *SdkSchedulePolicyIntervalWeekly { + if x, ok := m.GetPeriodType().(*SdkSchedulePolicyInterval_Weekly); ok { return x.Weekly } return nil } -func (x *SdkSchedulePolicyInterval) GetMonthly() *SdkSchedulePolicyIntervalMonthly { - if x, ok := x.GetPeriodType().(*SdkSchedulePolicyInterval_Monthly); ok { +func (m *SdkSchedulePolicyInterval) GetMonthly() *SdkSchedulePolicyIntervalMonthly { + if x, ok := m.GetPeriodType().(*SdkSchedulePolicyInterval_Monthly); ok { return x.Monthly } return nil } -func (x *SdkSchedulePolicyInterval) GetPeriodic() *SdkSchedulePolicyIntervalPeriodic { - if x, ok := x.GetPeriodType().(*SdkSchedulePolicyInterval_Periodic); ok { +func (m *SdkSchedulePolicyInterval) GetPeriodic() *SdkSchedulePolicyIntervalPeriodic { + if x, ok := m.GetPeriodType().(*SdkSchedulePolicyInterval_Periodic); ok { return x.Periodic } return nil } -type isSdkSchedulePolicyInterval_PeriodType interface { - isSdkSchedulePolicyInterval_PeriodType() -} - -type SdkSchedulePolicyInterval_Daily struct { - // Daily policy - Daily *SdkSchedulePolicyIntervalDaily `protobuf:"bytes,200,opt,name=daily,proto3,oneof"` -} - -type SdkSchedulePolicyInterval_Weekly struct { - // Weekly policy - Weekly *SdkSchedulePolicyIntervalWeekly `protobuf:"bytes,201,opt,name=weekly,proto3,oneof"` -} - -type SdkSchedulePolicyInterval_Monthly struct { - // Monthly policy - Monthly *SdkSchedulePolicyIntervalMonthly `protobuf:"bytes,202,opt,name=monthly,proto3,oneof"` +// XXX_OneofFuncs is for the internal use of the proto package. +func (*SdkSchedulePolicyInterval) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _SdkSchedulePolicyInterval_OneofMarshaler, _SdkSchedulePolicyInterval_OneofUnmarshaler, _SdkSchedulePolicyInterval_OneofSizer, []interface{}{ + (*SdkSchedulePolicyInterval_Daily)(nil), + (*SdkSchedulePolicyInterval_Weekly)(nil), + (*SdkSchedulePolicyInterval_Monthly)(nil), + (*SdkSchedulePolicyInterval_Periodic)(nil), + } } -type SdkSchedulePolicyInterval_Periodic struct { - // Periodic policy - Periodic *SdkSchedulePolicyIntervalPeriodic `protobuf:"bytes,203,opt,name=periodic,proto3,oneof"` +func _SdkSchedulePolicyInterval_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*SdkSchedulePolicyInterval) + // period_type + switch x := m.PeriodType.(type) { + case *SdkSchedulePolicyInterval_Daily: + b.EncodeVarint(200<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Daily); err != nil { + return err + } + case *SdkSchedulePolicyInterval_Weekly: + b.EncodeVarint(201<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Weekly); err != nil { + return err + } + case *SdkSchedulePolicyInterval_Monthly: + b.EncodeVarint(202<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Monthly); err != nil { + return err + } + case *SdkSchedulePolicyInterval_Periodic: + b.EncodeVarint(203<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Periodic); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("SdkSchedulePolicyInterval.PeriodType has unexpected type %T", x) + } + return nil +} + +func _SdkSchedulePolicyInterval_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*SdkSchedulePolicyInterval) + switch tag { + case 200: // period_type.daily + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkSchedulePolicyIntervalDaily) + err := b.DecodeMessage(msg) + m.PeriodType = &SdkSchedulePolicyInterval_Daily{msg} + return true, err + case 201: // period_type.weekly + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkSchedulePolicyIntervalWeekly) + err := b.DecodeMessage(msg) + m.PeriodType = &SdkSchedulePolicyInterval_Weekly{msg} + return true, err + case 202: // period_type.monthly + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkSchedulePolicyIntervalMonthly) + err := b.DecodeMessage(msg) + m.PeriodType = &SdkSchedulePolicyInterval_Monthly{msg} + return true, err + case 203: // period_type.periodic + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkSchedulePolicyIntervalPeriodic) + err := b.DecodeMessage(msg) + m.PeriodType = &SdkSchedulePolicyInterval_Periodic{msg} + return true, err + default: + return false, nil + } +} + +func _SdkSchedulePolicyInterval_OneofSizer(msg proto.Message) (n int) { + m := msg.(*SdkSchedulePolicyInterval) + // period_type + switch x := m.PeriodType.(type) { + case *SdkSchedulePolicyInterval_Daily: + s := proto.Size(x.Daily) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case *SdkSchedulePolicyInterval_Weekly: + s := proto.Size(x.Weekly) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case *SdkSchedulePolicyInterval_Monthly: + s := proto.Size(x.Monthly) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case *SdkSchedulePolicyInterval_Periodic: + s := proto.Size(x.Periodic) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n } -func (*SdkSchedulePolicyInterval_Daily) isSdkSchedulePolicyInterval_PeriodType() {} - -func (*SdkSchedulePolicyInterval_Weekly) isSdkSchedulePolicyInterval_PeriodType() {} - -func (*SdkSchedulePolicyInterval_Monthly) isSdkSchedulePolicyInterval_PeriodType() {} - -func (*SdkSchedulePolicyInterval_Periodic) isSdkSchedulePolicyInterval_PeriodType() {} - // Defines a schedule policy type SdkSchedulePolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Name of the schedule policy - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` // Schedule policies - Schedules []*SdkSchedulePolicyInterval `protobuf:"bytes,2,rep,name=schedules,proto3" json:"schedules,omitempty"` + Schedules []*SdkSchedulePolicyInterval `protobuf:"bytes,2,rep,name=schedules" json:"schedules,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkSchedulePolicy) Reset() { - *x = SdkSchedulePolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[117] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkSchedulePolicy) Reset() { *m = SdkSchedulePolicy{} } +func (m *SdkSchedulePolicy) String() string { return proto.CompactTextString(m) } +func (*SdkSchedulePolicy) ProtoMessage() {} +func (*SdkSchedulePolicy) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{117} } - -func (x *SdkSchedulePolicy) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkSchedulePolicy) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkSchedulePolicy.Unmarshal(m, b) } - -func (*SdkSchedulePolicy) ProtoMessage() {} - -func (x *SdkSchedulePolicy) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[117] - 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) +func (m *SdkSchedulePolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkSchedulePolicy.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkSchedulePolicy.ProtoReflect.Descriptor instead. -func (*SdkSchedulePolicy) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{117} +func (dst *SdkSchedulePolicy) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkSchedulePolicy.Merge(dst, src) +} +func (m *SdkSchedulePolicy) XXX_Size() int { + return xxx_messageInfo_SdkSchedulePolicy.Size(m) +} +func (m *SdkSchedulePolicy) XXX_DiscardUnknown() { + xxx_messageInfo_SdkSchedulePolicy.DiscardUnknown(m) } -func (x *SdkSchedulePolicy) GetName() string { - if x != nil { - return x.Name +var xxx_messageInfo_SdkSchedulePolicy proto.InternalMessageInfo + +func (m *SdkSchedulePolicy) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *SdkSchedulePolicy) GetSchedules() []*SdkSchedulePolicyInterval { - if x != nil { - return x.Schedules +func (m *SdkSchedulePolicy) GetSchedules() []*SdkSchedulePolicyInterval { + if m != nil { + return m.Schedules } return nil } // Defines a request to create credentials type SdkCredentialCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Name of the credential - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` // (optional) Name of bucket - Bucket string `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"` + Bucket string `protobuf:"bytes,2,opt,name=bucket" json:"bucket,omitempty"` // (optional) Key used to encrypt the data - EncryptionKey string `protobuf:"bytes,3,opt,name=encryption_key,json=encryptionKey,proto3" json:"encryption_key,omitempty"` + EncryptionKey string `protobuf:"bytes,3,opt,name=encryption_key,json=encryptionKey" json:"encryption_key,omitempty"` // Ownership of the credential. Collaborators and groups may be // added here with their appropriate ACLS. - Ownership *Ownership `protobuf:"bytes,4,opt,name=ownership,proto3" json:"ownership,omitempty"` + Ownership *Ownership `protobuf:"bytes,4,opt,name=ownership" json:"ownership,omitempty"` // use_proxy indicates if a proxy must be used - UseProxy bool `protobuf:"varint,5,opt,name=use_proxy,json=useProxy,proto3" json:"use_proxy,omitempty"` + UseProxy bool `protobuf:"varint,5,opt,name=use_proxy,json=useProxy" json:"use_proxy,omitempty"` // iamPolicy indicates if IAM creds must be used for access - IamPolicy bool `protobuf:"varint,6,opt,name=iam_policy,json=iamPolicy,proto3" json:"iam_policy,omitempty"` + IamPolicy bool `protobuf:"varint,6,opt,name=iam_policy,json=iamPolicy" json:"iam_policy,omitempty"` // s3StorageClass for object puts, empty indicates default STANDARD - S3StorageClass string `protobuf:"bytes,7,opt,name=s3_storage_class,json=s3StorageClass,proto3" json:"s3_storage_class,omitempty"` + S3StorageClass string `protobuf:"bytes,7,opt,name=s3_storage_class,json=s3StorageClass" json:"s3_storage_class,omitempty"` // Start at field number 200 to allow for expansion // - // Types that are assignable to CredentialType: + // Types that are valid to be assigned to CredentialType: // *SdkCredentialCreateRequest_AwsCredential // *SdkCredentialCreateRequest_AzureCredential // *SdkCredentialCreateRequest_GoogleCredential // *SdkCredentialCreateRequest_NfsCredential - CredentialType isSdkCredentialCreateRequest_CredentialType `protobuf_oneof:"credential_type"` + CredentialType isSdkCredentialCreateRequest_CredentialType `protobuf_oneof:"credential_type"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCredentialCreateRequest) Reset() { - *x = SdkCredentialCreateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[118] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCredentialCreateRequest) Reset() { *m = SdkCredentialCreateRequest{} } +func (m *SdkCredentialCreateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCredentialCreateRequest) ProtoMessage() {} +func (*SdkCredentialCreateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{118} } - -func (x *SdkCredentialCreateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCredentialCreateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCredentialCreateRequest.Unmarshal(m, b) +} +func (m *SdkCredentialCreateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCredentialCreateRequest.Marshal(b, m, deterministic) +} +func (dst *SdkCredentialCreateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCredentialCreateRequest.Merge(dst, src) +} +func (m *SdkCredentialCreateRequest) XXX_Size() int { + return xxx_messageInfo_SdkCredentialCreateRequest.Size(m) +} +func (m *SdkCredentialCreateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCredentialCreateRequest.DiscardUnknown(m) } -func (*SdkCredentialCreateRequest) ProtoMessage() {} +var xxx_messageInfo_SdkCredentialCreateRequest proto.InternalMessageInfo -func (x *SdkCredentialCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[118] - 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) +type isSdkCredentialCreateRequest_CredentialType interface { + isSdkCredentialCreateRequest_CredentialType() } -// Deprecated: Use SdkCredentialCreateRequest.ProtoReflect.Descriptor instead. -func (*SdkCredentialCreateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{118} +type SdkCredentialCreateRequest_AwsCredential struct { + AwsCredential *SdkAwsCredentialRequest `protobuf:"bytes,200,opt,name=aws_credential,json=awsCredential,oneof"` +} +type SdkCredentialCreateRequest_AzureCredential struct { + AzureCredential *SdkAzureCredentialRequest `protobuf:"bytes,201,opt,name=azure_credential,json=azureCredential,oneof"` +} +type SdkCredentialCreateRequest_GoogleCredential struct { + GoogleCredential *SdkGoogleCredentialRequest `protobuf:"bytes,202,opt,name=google_credential,json=googleCredential,oneof"` +} +type SdkCredentialCreateRequest_NfsCredential struct { + NfsCredential *SdkNfsCredentialRequest `protobuf:"bytes,203,opt,name=nfs_credential,json=nfsCredential,oneof"` } -func (x *SdkCredentialCreateRequest) GetName() string { - if x != nil { - return x.Name +func (*SdkCredentialCreateRequest_AwsCredential) isSdkCredentialCreateRequest_CredentialType() {} +func (*SdkCredentialCreateRequest_AzureCredential) isSdkCredentialCreateRequest_CredentialType() {} +func (*SdkCredentialCreateRequest_GoogleCredential) isSdkCredentialCreateRequest_CredentialType() {} +func (*SdkCredentialCreateRequest_NfsCredential) isSdkCredentialCreateRequest_CredentialType() {} + +func (m *SdkCredentialCreateRequest) GetCredentialType() isSdkCredentialCreateRequest_CredentialType { + if m != nil { + return m.CredentialType } - return "" + return nil } -func (x *SdkCredentialCreateRequest) GetBucket() string { - if x != nil { - return x.Bucket +func (m *SdkCredentialCreateRequest) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *SdkCredentialCreateRequest) GetEncryptionKey() string { - if x != nil { - return x.EncryptionKey +func (m *SdkCredentialCreateRequest) GetBucket() string { + if m != nil { + return m.Bucket } return "" } -func (x *SdkCredentialCreateRequest) GetOwnership() *Ownership { - if x != nil { - return x.Ownership +func (m *SdkCredentialCreateRequest) GetEncryptionKey() string { + if m != nil { + return m.EncryptionKey } - return nil + return "" } -func (x *SdkCredentialCreateRequest) GetUseProxy() bool { - if x != nil { - return x.UseProxy +func (m *SdkCredentialCreateRequest) GetOwnership() *Ownership { + if m != nil { + return m.Ownership } - return false + return nil } -func (x *SdkCredentialCreateRequest) GetIamPolicy() bool { - if x != nil { - return x.IamPolicy +func (m *SdkCredentialCreateRequest) GetUseProxy() bool { + if m != nil { + return m.UseProxy } return false } -func (x *SdkCredentialCreateRequest) GetS3StorageClass() string { - if x != nil { - return x.S3StorageClass +func (m *SdkCredentialCreateRequest) GetIamPolicy() bool { + if m != nil { + return m.IamPolicy } - return "" + return false } -func (m *SdkCredentialCreateRequest) GetCredentialType() isSdkCredentialCreateRequest_CredentialType { +func (m *SdkCredentialCreateRequest) GetS3StorageClass() string { if m != nil { - return m.CredentialType + return m.S3StorageClass } - return nil + return "" } -func (x *SdkCredentialCreateRequest) GetAwsCredential() *SdkAwsCredentialRequest { - if x, ok := x.GetCredentialType().(*SdkCredentialCreateRequest_AwsCredential); ok { +func (m *SdkCredentialCreateRequest) GetAwsCredential() *SdkAwsCredentialRequest { + if x, ok := m.GetCredentialType().(*SdkCredentialCreateRequest_AwsCredential); ok { return x.AwsCredential } return nil } -func (x *SdkCredentialCreateRequest) GetAzureCredential() *SdkAzureCredentialRequest { - if x, ok := x.GetCredentialType().(*SdkCredentialCreateRequest_AzureCredential); ok { +func (m *SdkCredentialCreateRequest) GetAzureCredential() *SdkAzureCredentialRequest { + if x, ok := m.GetCredentialType().(*SdkCredentialCreateRequest_AzureCredential); ok { return x.AzureCredential } return nil } -func (x *SdkCredentialCreateRequest) GetGoogleCredential() *SdkGoogleCredentialRequest { - if x, ok := x.GetCredentialType().(*SdkCredentialCreateRequest_GoogleCredential); ok { +func (m *SdkCredentialCreateRequest) GetGoogleCredential() *SdkGoogleCredentialRequest { + if x, ok := m.GetCredentialType().(*SdkCredentialCreateRequest_GoogleCredential); ok { return x.GoogleCredential } return nil } -func (x *SdkCredentialCreateRequest) GetNfsCredential() *SdkNfsCredentialRequest { - if x, ok := x.GetCredentialType().(*SdkCredentialCreateRequest_NfsCredential); ok { +func (m *SdkCredentialCreateRequest) GetNfsCredential() *SdkNfsCredentialRequest { + if x, ok := m.GetCredentialType().(*SdkCredentialCreateRequest_NfsCredential); ok { return x.NfsCredential } return nil } -type isSdkCredentialCreateRequest_CredentialType interface { - isSdkCredentialCreateRequest_CredentialType() -} - -type SdkCredentialCreateRequest_AwsCredential struct { - // Credentials for AWS/S3 - AwsCredential *SdkAwsCredentialRequest `protobuf:"bytes,200,opt,name=aws_credential,json=awsCredential,proto3,oneof"` -} - -type SdkCredentialCreateRequest_AzureCredential struct { - // Credentials for Azure - AzureCredential *SdkAzureCredentialRequest `protobuf:"bytes,201,opt,name=azure_credential,json=azureCredential,proto3,oneof"` -} - -type SdkCredentialCreateRequest_GoogleCredential struct { - // Credentials for Google - GoogleCredential *SdkGoogleCredentialRequest `protobuf:"bytes,202,opt,name=google_credential,json=googleCredential,proto3,oneof"` +// XXX_OneofFuncs is for the internal use of the proto package. +func (*SdkCredentialCreateRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _SdkCredentialCreateRequest_OneofMarshaler, _SdkCredentialCreateRequest_OneofUnmarshaler, _SdkCredentialCreateRequest_OneofSizer, []interface{}{ + (*SdkCredentialCreateRequest_AwsCredential)(nil), + (*SdkCredentialCreateRequest_AzureCredential)(nil), + (*SdkCredentialCreateRequest_GoogleCredential)(nil), + (*SdkCredentialCreateRequest_NfsCredential)(nil), + } } -type SdkCredentialCreateRequest_NfsCredential struct { - // Credentials for NFS - NfsCredential *SdkNfsCredentialRequest `protobuf:"bytes,203,opt,name=nfs_credential,json=nfsCredential,proto3,oneof"` +func _SdkCredentialCreateRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*SdkCredentialCreateRequest) + // credential_type + switch x := m.CredentialType.(type) { + case *SdkCredentialCreateRequest_AwsCredential: + b.EncodeVarint(200<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.AwsCredential); err != nil { + return err + } + case *SdkCredentialCreateRequest_AzureCredential: + b.EncodeVarint(201<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.AzureCredential); err != nil { + return err + } + case *SdkCredentialCreateRequest_GoogleCredential: + b.EncodeVarint(202<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.GoogleCredential); err != nil { + return err + } + case *SdkCredentialCreateRequest_NfsCredential: + b.EncodeVarint(203<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.NfsCredential); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("SdkCredentialCreateRequest.CredentialType has unexpected type %T", x) + } + return nil +} + +func _SdkCredentialCreateRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*SdkCredentialCreateRequest) + switch tag { + case 200: // credential_type.aws_credential + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkAwsCredentialRequest) + err := b.DecodeMessage(msg) + m.CredentialType = &SdkCredentialCreateRequest_AwsCredential{msg} + return true, err + case 201: // credential_type.azure_credential + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkAzureCredentialRequest) + err := b.DecodeMessage(msg) + m.CredentialType = &SdkCredentialCreateRequest_AzureCredential{msg} + return true, err + case 202: // credential_type.google_credential + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkGoogleCredentialRequest) + err := b.DecodeMessage(msg) + m.CredentialType = &SdkCredentialCreateRequest_GoogleCredential{msg} + return true, err + case 203: // credential_type.nfs_credential + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkNfsCredentialRequest) + err := b.DecodeMessage(msg) + m.CredentialType = &SdkCredentialCreateRequest_NfsCredential{msg} + return true, err + default: + return false, nil + } +} + +func _SdkCredentialCreateRequest_OneofSizer(msg proto.Message) (n int) { + m := msg.(*SdkCredentialCreateRequest) + // credential_type + switch x := m.CredentialType.(type) { + case *SdkCredentialCreateRequest_AwsCredential: + s := proto.Size(x.AwsCredential) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case *SdkCredentialCreateRequest_AzureCredential: + s := proto.Size(x.AzureCredential) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case *SdkCredentialCreateRequest_GoogleCredential: + s := proto.Size(x.GoogleCredential) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case *SdkCredentialCreateRequest_NfsCredential: + s := proto.Size(x.NfsCredential) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n } -func (*SdkCredentialCreateRequest_AwsCredential) isSdkCredentialCreateRequest_CredentialType() {} - -func (*SdkCredentialCreateRequest_AzureCredential) isSdkCredentialCreateRequest_CredentialType() {} - -func (*SdkCredentialCreateRequest_GoogleCredential) isSdkCredentialCreateRequest_CredentialType() {} - -func (*SdkCredentialCreateRequest_NfsCredential) isSdkCredentialCreateRequest_CredentialType() {} - // Defines a response from creating a credential type SdkCredentialCreateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of the credentials - CredentialId string `protobuf:"bytes,1,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` + CredentialId string `protobuf:"bytes,1,opt,name=credential_id,json=credentialId" json:"credential_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCredentialCreateResponse) Reset() { - *x = SdkCredentialCreateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[119] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCredentialCreateResponse) Reset() { *m = SdkCredentialCreateResponse{} } +func (m *SdkCredentialCreateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCredentialCreateResponse) ProtoMessage() {} +func (*SdkCredentialCreateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{119} } - -func (x *SdkCredentialCreateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCredentialCreateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCredentialCreateResponse.Unmarshal(m, b) } - -func (*SdkCredentialCreateResponse) ProtoMessage() {} - -func (x *SdkCredentialCreateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[119] - 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) +func (m *SdkCredentialCreateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCredentialCreateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCredentialCreateResponse.ProtoReflect.Descriptor instead. -func (*SdkCredentialCreateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{119} +func (dst *SdkCredentialCreateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCredentialCreateResponse.Merge(dst, src) +} +func (m *SdkCredentialCreateResponse) XXX_Size() int { + return xxx_messageInfo_SdkCredentialCreateResponse.Size(m) +} +func (m *SdkCredentialCreateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCredentialCreateResponse.DiscardUnknown(m) } -func (x *SdkCredentialCreateResponse) GetCredentialId() string { - if x != nil { - return x.CredentialId +var xxx_messageInfo_SdkCredentialCreateResponse proto.InternalMessageInfo + +func (m *SdkCredentialCreateResponse) GetCredentialId() string { + if m != nil { + return m.CredentialId } return "" } // Defines request for credential update type SdkCredentialUpdateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CredentialId string `protobuf:"bytes,1,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` - UpdateReq *SdkCredentialCreateRequest `protobuf:"bytes,2,opt,name=update_req,json=updateReq,proto3" json:"update_req,omitempty"` + CredentialId string `protobuf:"bytes,1,opt,name=credential_id,json=credentialId" json:"credential_id,omitempty"` + UpdateReq *SdkCredentialCreateRequest `protobuf:"bytes,2,opt,name=update_req,json=updateReq" json:"update_req,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCredentialUpdateRequest) Reset() { - *x = SdkCredentialUpdateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[120] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCredentialUpdateRequest) Reset() { *m = SdkCredentialUpdateRequest{} } +func (m *SdkCredentialUpdateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCredentialUpdateRequest) ProtoMessage() {} +func (*SdkCredentialUpdateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{120} } - -func (x *SdkCredentialUpdateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCredentialUpdateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCredentialUpdateRequest.Unmarshal(m, b) } - -func (*SdkCredentialUpdateRequest) ProtoMessage() {} - -func (x *SdkCredentialUpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[120] - 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) +func (m *SdkCredentialUpdateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCredentialUpdateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCredentialUpdateRequest.ProtoReflect.Descriptor instead. -func (*SdkCredentialUpdateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{120} +func (dst *SdkCredentialUpdateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCredentialUpdateRequest.Merge(dst, src) +} +func (m *SdkCredentialUpdateRequest) XXX_Size() int { + return xxx_messageInfo_SdkCredentialUpdateRequest.Size(m) +} +func (m *SdkCredentialUpdateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCredentialUpdateRequest.DiscardUnknown(m) } -func (x *SdkCredentialUpdateRequest) GetCredentialId() string { - if x != nil { - return x.CredentialId +var xxx_messageInfo_SdkCredentialUpdateRequest proto.InternalMessageInfo + +func (m *SdkCredentialUpdateRequest) GetCredentialId() string { + if m != nil { + return m.CredentialId } return "" } -func (x *SdkCredentialUpdateRequest) GetUpdateReq() *SdkCredentialCreateRequest { - if x != nil { - return x.UpdateReq +func (m *SdkCredentialUpdateRequest) GetUpdateReq() *SdkCredentialCreateRequest { + if m != nil { + return m.UpdateReq } return nil } // Defines response for credential update type SdkCredentialUpdateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCredentialUpdateResponse) Reset() { - *x = SdkCredentialUpdateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[121] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCredentialUpdateResponse) Reset() { *m = SdkCredentialUpdateResponse{} } +func (m *SdkCredentialUpdateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCredentialUpdateResponse) ProtoMessage() {} +func (*SdkCredentialUpdateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{121} } - -func (x *SdkCredentialUpdateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCredentialUpdateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCredentialUpdateResponse.Unmarshal(m, b) } - -func (*SdkCredentialUpdateResponse) ProtoMessage() {} - -func (x *SdkCredentialUpdateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[121] - 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) +func (m *SdkCredentialUpdateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCredentialUpdateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCredentialUpdateResponse.ProtoReflect.Descriptor instead. -func (*SdkCredentialUpdateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{121} +func (dst *SdkCredentialUpdateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCredentialUpdateResponse.Merge(dst, src) +} +func (m *SdkCredentialUpdateResponse) XXX_Size() int { + return xxx_messageInfo_SdkCredentialUpdateResponse.Size(m) +} +func (m *SdkCredentialUpdateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCredentialUpdateResponse.DiscardUnknown(m) } +var xxx_messageInfo_SdkCredentialUpdateResponse proto.InternalMessageInfo + // Defines credentials for Aws/S3 endpoints type SdkAwsCredentialRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Access key - AccessKey string `protobuf:"bytes,1,opt,name=access_key,json=accessKey,proto3" json:"access_key,omitempty"` + AccessKey string `protobuf:"bytes,1,opt,name=access_key,json=accessKey" json:"access_key,omitempty"` // Secret key - SecretKey string `protobuf:"bytes,2,opt,name=secret_key,json=secretKey,proto3" json:"secret_key,omitempty"` + SecretKey string `protobuf:"bytes,2,opt,name=secret_key,json=secretKey" json:"secret_key,omitempty"` // Endpoint - Endpoint string `protobuf:"bytes,3,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + Endpoint string `protobuf:"bytes,3,opt,name=endpoint" json:"endpoint,omitempty"` // Region - Region string `protobuf:"bytes,4,opt,name=region,proto3" json:"region,omitempty"` + Region string `protobuf:"bytes,4,opt,name=region" json:"region,omitempty"` // (optional) Disable SSL connection - DisableSsl bool `protobuf:"varint,5,opt,name=disable_ssl,json=disableSsl,proto3" json:"disable_ssl,omitempty"` + DisableSsl bool `protobuf:"varint,5,opt,name=disable_ssl,json=disableSsl" json:"disable_ssl,omitempty"` // (optional) Disable path-style access - DisablePathStyle bool `protobuf:"varint,6,opt,name=disable_path_style,json=disablePathStyle,proto3" json:"disable_path_style,omitempty"` + DisablePathStyle bool `protobuf:"varint,6,opt,name=disable_path_style,json=disablePathStyle" json:"disable_path_style,omitempty"` // (optional) server side encryption - ServerSideEncryption string `protobuf:"bytes,7,opt,name=server_side_encryption,json=serverSideEncryption,proto3" json:"server_side_encryption,omitempty"` + ServerSideEncryption string `protobuf:"bytes,7,opt,name=server_side_encryption,json=serverSideEncryption" json:"server_side_encryption,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkAwsCredentialRequest) Reset() { - *x = SdkAwsCredentialRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[122] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkAwsCredentialRequest) Reset() { *m = SdkAwsCredentialRequest{} } +func (m *SdkAwsCredentialRequest) String() string { return proto.CompactTextString(m) } +func (*SdkAwsCredentialRequest) ProtoMessage() {} +func (*SdkAwsCredentialRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{122} } - -func (x *SdkAwsCredentialRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAwsCredentialRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAwsCredentialRequest.Unmarshal(m, b) } - -func (*SdkAwsCredentialRequest) ProtoMessage() {} - -func (x *SdkAwsCredentialRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[122] - 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) +func (m *SdkAwsCredentialRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAwsCredentialRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkAwsCredentialRequest.ProtoReflect.Descriptor instead. -func (*SdkAwsCredentialRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{122} +func (dst *SdkAwsCredentialRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAwsCredentialRequest.Merge(dst, src) +} +func (m *SdkAwsCredentialRequest) XXX_Size() int { + return xxx_messageInfo_SdkAwsCredentialRequest.Size(m) } +func (m *SdkAwsCredentialRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAwsCredentialRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkAwsCredentialRequest proto.InternalMessageInfo -func (x *SdkAwsCredentialRequest) GetAccessKey() string { - if x != nil { - return x.AccessKey +func (m *SdkAwsCredentialRequest) GetAccessKey() string { + if m != nil { + return m.AccessKey } return "" } -func (x *SdkAwsCredentialRequest) GetSecretKey() string { - if x != nil { - return x.SecretKey +func (m *SdkAwsCredentialRequest) GetSecretKey() string { + if m != nil { + return m.SecretKey } return "" } -func (x *SdkAwsCredentialRequest) GetEndpoint() string { - if x != nil { - return x.Endpoint +func (m *SdkAwsCredentialRequest) GetEndpoint() string { + if m != nil { + return m.Endpoint } return "" } -func (x *SdkAwsCredentialRequest) GetRegion() string { - if x != nil { - return x.Region +func (m *SdkAwsCredentialRequest) GetRegion() string { + if m != nil { + return m.Region } return "" } -func (x *SdkAwsCredentialRequest) GetDisableSsl() bool { - if x != nil { - return x.DisableSsl +func (m *SdkAwsCredentialRequest) GetDisableSsl() bool { + if m != nil { + return m.DisableSsl } return false } -func (x *SdkAwsCredentialRequest) GetDisablePathStyle() bool { - if x != nil { - return x.DisablePathStyle +func (m *SdkAwsCredentialRequest) GetDisablePathStyle() bool { + if m != nil { + return m.DisablePathStyle } return false } -func (x *SdkAwsCredentialRequest) GetServerSideEncryption() string { - if x != nil { - return x.ServerSideEncryption +func (m *SdkAwsCredentialRequest) GetServerSideEncryption() string { + if m != nil { + return m.ServerSideEncryption } return "" } // Defines credentials for Azure type SdkAzureCredentialRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Account name - AccountName string `protobuf:"bytes,1,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"` + AccountName string `protobuf:"bytes,1,opt,name=account_name,json=accountName" json:"account_name,omitempty"` // Account key - AccountKey string `protobuf:"bytes,2,opt,name=account_key,json=accountKey,proto3" json:"account_key,omitempty"` + AccountKey string `protobuf:"bytes,2,opt,name=account_key,json=accountKey" json:"account_key,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkAzureCredentialRequest) Reset() { - *x = SdkAzureCredentialRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[123] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkAzureCredentialRequest) Reset() { *m = SdkAzureCredentialRequest{} } +func (m *SdkAzureCredentialRequest) String() string { return proto.CompactTextString(m) } +func (*SdkAzureCredentialRequest) ProtoMessage() {} +func (*SdkAzureCredentialRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{123} } - -func (x *SdkAzureCredentialRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAzureCredentialRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAzureCredentialRequest.Unmarshal(m, b) } - -func (*SdkAzureCredentialRequest) ProtoMessage() {} - -func (x *SdkAzureCredentialRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[123] - 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) +func (m *SdkAzureCredentialRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAzureCredentialRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkAzureCredentialRequest.ProtoReflect.Descriptor instead. -func (*SdkAzureCredentialRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{123} +func (dst *SdkAzureCredentialRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAzureCredentialRequest.Merge(dst, src) +} +func (m *SdkAzureCredentialRequest) XXX_Size() int { + return xxx_messageInfo_SdkAzureCredentialRequest.Size(m) } +func (m *SdkAzureCredentialRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAzureCredentialRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkAzureCredentialRequest proto.InternalMessageInfo -func (x *SdkAzureCredentialRequest) GetAccountName() string { - if x != nil { - return x.AccountName +func (m *SdkAzureCredentialRequest) GetAccountName() string { + if m != nil { + return m.AccountName } return "" } -func (x *SdkAzureCredentialRequest) GetAccountKey() string { - if x != nil { - return x.AccountKey +func (m *SdkAzureCredentialRequest) GetAccountKey() string { + if m != nil { + return m.AccountKey } return "" } // Defines credentials for Google type SdkGoogleCredentialRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Project ID - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` // JSON Key - JsonKey string `protobuf:"bytes,2,opt,name=json_key,json=jsonKey,proto3" json:"json_key,omitempty"` + JsonKey string `protobuf:"bytes,2,opt,name=json_key,json=jsonKey" json:"json_key,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkGoogleCredentialRequest) Reset() { - *x = SdkGoogleCredentialRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[124] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkGoogleCredentialRequest) Reset() { *m = SdkGoogleCredentialRequest{} } +func (m *SdkGoogleCredentialRequest) String() string { return proto.CompactTextString(m) } +func (*SdkGoogleCredentialRequest) ProtoMessage() {} +func (*SdkGoogleCredentialRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{124} } - -func (x *SdkGoogleCredentialRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkGoogleCredentialRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkGoogleCredentialRequest.Unmarshal(m, b) } - -func (*SdkGoogleCredentialRequest) ProtoMessage() {} - -func (x *SdkGoogleCredentialRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[124] - 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) +func (m *SdkGoogleCredentialRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkGoogleCredentialRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkGoogleCredentialRequest.ProtoReflect.Descriptor instead. -func (*SdkGoogleCredentialRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{124} +func (dst *SdkGoogleCredentialRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkGoogleCredentialRequest.Merge(dst, src) +} +func (m *SdkGoogleCredentialRequest) XXX_Size() int { + return xxx_messageInfo_SdkGoogleCredentialRequest.Size(m) +} +func (m *SdkGoogleCredentialRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkGoogleCredentialRequest.DiscardUnknown(m) } -func (x *SdkGoogleCredentialRequest) GetProjectId() string { - if x != nil { - return x.ProjectId +var xxx_messageInfo_SdkGoogleCredentialRequest proto.InternalMessageInfo + +func (m *SdkGoogleCredentialRequest) GetProjectId() string { + if m != nil { + return m.ProjectId } return "" } -func (x *SdkGoogleCredentialRequest) GetJsonKey() string { - if x != nil { - return x.JsonKey +func (m *SdkGoogleCredentialRequest) GetJsonKey() string { + if m != nil { + return m.JsonKey } return "" } // Defines credentials for NFS type SdkNfsCredentialRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // NFS Server address - Server string `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"` + Server string `protobuf:"bytes,1,opt,name=server" json:"server,omitempty"` // NFS export path - SubPath string `protobuf:"bytes,2,opt,name=sub_path,json=subPath,proto3" json:"sub_path,omitempty"` + SubPath string `protobuf:"bytes,2,opt,name=sub_path,json=subPath" json:"sub_path,omitempty"` // mount options for nfs mount - MountOpts string `protobuf:"bytes,3,opt,name=mount_opts,json=mountOpts,proto3" json:"mount_opts,omitempty"` + MountOpts string `protobuf:"bytes,3,opt,name=mount_opts,json=mountOpts" json:"mount_opts,omitempty"` // timeout for nfs IO in seconds - TimeoutSeconds uint32 `protobuf:"varint,4,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"` + TimeoutSeconds uint32 `protobuf:"varint,4,opt,name=timeout_seconds,json=timeoutSeconds" json:"timeout_seconds,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkNfsCredentialRequest) Reset() { - *x = SdkNfsCredentialRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[125] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkNfsCredentialRequest) Reset() { *m = SdkNfsCredentialRequest{} } +func (m *SdkNfsCredentialRequest) String() string { return proto.CompactTextString(m) } +func (*SdkNfsCredentialRequest) ProtoMessage() {} +func (*SdkNfsCredentialRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{125} } - -func (x *SdkNfsCredentialRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkNfsCredentialRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkNfsCredentialRequest.Unmarshal(m, b) } - -func (*SdkNfsCredentialRequest) ProtoMessage() {} - -func (x *SdkNfsCredentialRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[125] - 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) +func (m *SdkNfsCredentialRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkNfsCredentialRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkNfsCredentialRequest.ProtoReflect.Descriptor instead. -func (*SdkNfsCredentialRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{125} +func (dst *SdkNfsCredentialRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkNfsCredentialRequest.Merge(dst, src) +} +func (m *SdkNfsCredentialRequest) XXX_Size() int { + return xxx_messageInfo_SdkNfsCredentialRequest.Size(m) } +func (m *SdkNfsCredentialRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkNfsCredentialRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkNfsCredentialRequest proto.InternalMessageInfo -func (x *SdkNfsCredentialRequest) GetServer() string { - if x != nil { - return x.Server +func (m *SdkNfsCredentialRequest) GetServer() string { + if m != nil { + return m.Server } return "" } -func (x *SdkNfsCredentialRequest) GetSubPath() string { - if x != nil { - return x.SubPath +func (m *SdkNfsCredentialRequest) GetSubPath() string { + if m != nil { + return m.SubPath } return "" } -func (x *SdkNfsCredentialRequest) GetMountOpts() string { - if x != nil { - return x.MountOpts +func (m *SdkNfsCredentialRequest) GetMountOpts() string { + if m != nil { + return m.MountOpts } return "" } -func (x *SdkNfsCredentialRequest) GetTimeoutSeconds() uint32 { - if x != nil { - return x.TimeoutSeconds +func (m *SdkNfsCredentialRequest) GetTimeoutSeconds() uint32 { + if m != nil { + return m.TimeoutSeconds } return 0 } // Defines the response for AWS/S3 credentials type SdkAwsCredentialResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Access key - AccessKey string `protobuf:"bytes,2,opt,name=access_key,json=accessKey,proto3" json:"access_key,omitempty"` + AccessKey string `protobuf:"bytes,2,opt,name=access_key,json=accessKey" json:"access_key,omitempty"` // Endpoint - Endpoint string `protobuf:"bytes,3,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + Endpoint string `protobuf:"bytes,3,opt,name=endpoint" json:"endpoint,omitempty"` // Region - Region string `protobuf:"bytes,4,opt,name=region,proto3" json:"region,omitempty"` + Region string `protobuf:"bytes,4,opt,name=region" json:"region,omitempty"` // (optional) Disable SSL connection - DisableSsl bool `protobuf:"varint,5,opt,name=disable_ssl,json=disableSsl,proto3" json:"disable_ssl,omitempty"` + DisableSsl bool `protobuf:"varint,5,opt,name=disable_ssl,json=disableSsl" json:"disable_ssl,omitempty"` // (optional) Disable path-style access - DisablePathStyle bool `protobuf:"varint,6,opt,name=disable_path_style,json=disablePathStyle,proto3" json:"disable_path_style,omitempty"` + DisablePathStyle bool `protobuf:"varint,6,opt,name=disable_path_style,json=disablePathStyle" json:"disable_path_style,omitempty"` // (optional) Storage class for s3 puts - S3StorageClass string `protobuf:"bytes,7,opt,name=s3_storage_class,json=s3StorageClass,proto3" json:"s3_storage_class,omitempty"` + S3StorageClass string `protobuf:"bytes,7,opt,name=s3_storage_class,json=s3StorageClass" json:"s3_storage_class,omitempty"` // (optional) server side encryption - ServerSideEncryption string `protobuf:"bytes,8,opt,name=server_side_encryption,json=serverSideEncryption,proto3" json:"server_side_encryption,omitempty"` + ServerSideEncryption string `protobuf:"bytes,8,opt,name=server_side_encryption,json=serverSideEncryption" json:"server_side_encryption,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkAwsCredentialResponse) Reset() { - *x = SdkAwsCredentialResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[126] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkAwsCredentialResponse) Reset() { *m = SdkAwsCredentialResponse{} } +func (m *SdkAwsCredentialResponse) String() string { return proto.CompactTextString(m) } +func (*SdkAwsCredentialResponse) ProtoMessage() {} +func (*SdkAwsCredentialResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{126} } - -func (x *SdkAwsCredentialResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAwsCredentialResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAwsCredentialResponse.Unmarshal(m, b) } - -func (*SdkAwsCredentialResponse) ProtoMessage() {} - -func (x *SdkAwsCredentialResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[126] - 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) +func (m *SdkAwsCredentialResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAwsCredentialResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkAwsCredentialResponse.ProtoReflect.Descriptor instead. -func (*SdkAwsCredentialResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{126} +func (dst *SdkAwsCredentialResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAwsCredentialResponse.Merge(dst, src) +} +func (m *SdkAwsCredentialResponse) XXX_Size() int { + return xxx_messageInfo_SdkAwsCredentialResponse.Size(m) +} +func (m *SdkAwsCredentialResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAwsCredentialResponse.DiscardUnknown(m) } -func (x *SdkAwsCredentialResponse) GetAccessKey() string { - if x != nil { - return x.AccessKey +var xxx_messageInfo_SdkAwsCredentialResponse proto.InternalMessageInfo + +func (m *SdkAwsCredentialResponse) GetAccessKey() string { + if m != nil { + return m.AccessKey } return "" } -func (x *SdkAwsCredentialResponse) GetEndpoint() string { - if x != nil { - return x.Endpoint +func (m *SdkAwsCredentialResponse) GetEndpoint() string { + if m != nil { + return m.Endpoint } return "" } -func (x *SdkAwsCredentialResponse) GetRegion() string { - if x != nil { - return x.Region +func (m *SdkAwsCredentialResponse) GetRegion() string { + if m != nil { + return m.Region } return "" } -func (x *SdkAwsCredentialResponse) GetDisableSsl() bool { - if x != nil { - return x.DisableSsl +func (m *SdkAwsCredentialResponse) GetDisableSsl() bool { + if m != nil { + return m.DisableSsl } return false } -func (x *SdkAwsCredentialResponse) GetDisablePathStyle() bool { - if x != nil { - return x.DisablePathStyle +func (m *SdkAwsCredentialResponse) GetDisablePathStyle() bool { + if m != nil { + return m.DisablePathStyle } return false } -func (x *SdkAwsCredentialResponse) GetS3StorageClass() string { - if x != nil { - return x.S3StorageClass +func (m *SdkAwsCredentialResponse) GetS3StorageClass() string { + if m != nil { + return m.S3StorageClass } return "" } -func (x *SdkAwsCredentialResponse) GetServerSideEncryption() string { - if x != nil { - return x.ServerSideEncryption +func (m *SdkAwsCredentialResponse) GetServerSideEncryption() string { + if m != nil { + return m.ServerSideEncryption } return "" } // Defines the response for Azure credentials type SdkAzureCredentialResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Account name - AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"` + AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName" json:"account_name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkAzureCredentialResponse) Reset() { - *x = SdkAzureCredentialResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[127] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkAzureCredentialResponse) Reset() { *m = SdkAzureCredentialResponse{} } +func (m *SdkAzureCredentialResponse) String() string { return proto.CompactTextString(m) } +func (*SdkAzureCredentialResponse) ProtoMessage() {} +func (*SdkAzureCredentialResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{127} } - -func (x *SdkAzureCredentialResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAzureCredentialResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAzureCredentialResponse.Unmarshal(m, b) } - -func (*SdkAzureCredentialResponse) ProtoMessage() {} - -func (x *SdkAzureCredentialResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[127] - 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) +func (m *SdkAzureCredentialResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAzureCredentialResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkAzureCredentialResponse.ProtoReflect.Descriptor instead. -func (*SdkAzureCredentialResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{127} +func (dst *SdkAzureCredentialResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAzureCredentialResponse.Merge(dst, src) +} +func (m *SdkAzureCredentialResponse) XXX_Size() int { + return xxx_messageInfo_SdkAzureCredentialResponse.Size(m) +} +func (m *SdkAzureCredentialResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAzureCredentialResponse.DiscardUnknown(m) } -func (x *SdkAzureCredentialResponse) GetAccountName() string { - if x != nil { - return x.AccountName +var xxx_messageInfo_SdkAzureCredentialResponse proto.InternalMessageInfo + +func (m *SdkAzureCredentialResponse) GetAccountName() string { + if m != nil { + return m.AccountName } return "" } // Defines the response for Google credentials type SdkGoogleCredentialResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Project ID - ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId" json:"project_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkGoogleCredentialResponse) Reset() { - *x = SdkGoogleCredentialResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[128] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkGoogleCredentialResponse) Reset() { *m = SdkGoogleCredentialResponse{} } +func (m *SdkGoogleCredentialResponse) String() string { return proto.CompactTextString(m) } +func (*SdkGoogleCredentialResponse) ProtoMessage() {} +func (*SdkGoogleCredentialResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{128} } - -func (x *SdkGoogleCredentialResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkGoogleCredentialResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkGoogleCredentialResponse.Unmarshal(m, b) } - -func (*SdkGoogleCredentialResponse) ProtoMessage() {} - -func (x *SdkGoogleCredentialResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[128] - 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) +func (m *SdkGoogleCredentialResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkGoogleCredentialResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkGoogleCredentialResponse.ProtoReflect.Descriptor instead. -func (*SdkGoogleCredentialResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{128} +func (dst *SdkGoogleCredentialResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkGoogleCredentialResponse.Merge(dst, src) +} +func (m *SdkGoogleCredentialResponse) XXX_Size() int { + return xxx_messageInfo_SdkGoogleCredentialResponse.Size(m) +} +func (m *SdkGoogleCredentialResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkGoogleCredentialResponse.DiscardUnknown(m) } -func (x *SdkGoogleCredentialResponse) GetProjectId() string { - if x != nil { - return x.ProjectId +var xxx_messageInfo_SdkGoogleCredentialResponse proto.InternalMessageInfo + +func (m *SdkGoogleCredentialResponse) GetProjectId() string { + if m != nil { + return m.ProjectId } return "" } // Defines the response for NFS credential type SdkNfsCredentialResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // NFS Server Address - Server string `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"` + Server string `protobuf:"bytes,1,opt,name=server" json:"server,omitempty"` // NFS export path - SubPath string `protobuf:"bytes,2,opt,name=sub_path,json=subPath,proto3" json:"sub_path,omitempty"` + SubPath string `protobuf:"bytes,2,opt,name=sub_path,json=subPath" json:"sub_path,omitempty"` // mount options ( "," separated) - MountOpts string `protobuf:"bytes,3,opt,name=mount_opts,json=mountOpts,proto3" json:"mount_opts,omitempty"` + MountOpts string `protobuf:"bytes,3,opt,name=mount_opts,json=mountOpts" json:"mount_opts,omitempty"` // timeout in seconds - TimeoutSeconds uint32 `protobuf:"varint,4,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"` + TimeoutSeconds uint32 `protobuf:"varint,4,opt,name=timeout_seconds,json=timeoutSeconds" json:"timeout_seconds,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkNfsCredentialResponse) Reset() { - *x = SdkNfsCredentialResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[129] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkNfsCredentialResponse) Reset() { *m = SdkNfsCredentialResponse{} } +func (m *SdkNfsCredentialResponse) String() string { return proto.CompactTextString(m) } +func (*SdkNfsCredentialResponse) ProtoMessage() {} +func (*SdkNfsCredentialResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{129} } - -func (x *SdkNfsCredentialResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkNfsCredentialResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkNfsCredentialResponse.Unmarshal(m, b) } - -func (*SdkNfsCredentialResponse) ProtoMessage() {} - -func (x *SdkNfsCredentialResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[129] - 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) +func (m *SdkNfsCredentialResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkNfsCredentialResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkNfsCredentialResponse.ProtoReflect.Descriptor instead. -func (*SdkNfsCredentialResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{129} +func (dst *SdkNfsCredentialResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkNfsCredentialResponse.Merge(dst, src) +} +func (m *SdkNfsCredentialResponse) XXX_Size() int { + return xxx_messageInfo_SdkNfsCredentialResponse.Size(m) +} +func (m *SdkNfsCredentialResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkNfsCredentialResponse.DiscardUnknown(m) } -func (x *SdkNfsCredentialResponse) GetServer() string { - if x != nil { - return x.Server +var xxx_messageInfo_SdkNfsCredentialResponse proto.InternalMessageInfo + +func (m *SdkNfsCredentialResponse) GetServer() string { + if m != nil { + return m.Server } return "" } -func (x *SdkNfsCredentialResponse) GetSubPath() string { - if x != nil { - return x.SubPath +func (m *SdkNfsCredentialResponse) GetSubPath() string { + if m != nil { + return m.SubPath } return "" } -func (x *SdkNfsCredentialResponse) GetMountOpts() string { - if x != nil { - return x.MountOpts +func (m *SdkNfsCredentialResponse) GetMountOpts() string { + if m != nil { + return m.MountOpts } return "" } -func (x *SdkNfsCredentialResponse) GetTimeoutSeconds() uint32 { - if x != nil { - return x.TimeoutSeconds +func (m *SdkNfsCredentialResponse) GetTimeoutSeconds() uint32 { + if m != nil { + return m.TimeoutSeconds } return 0 } // Empty request type SdkCredentialEnumerateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCredentialEnumerateRequest) Reset() { - *x = SdkCredentialEnumerateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[130] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCredentialEnumerateRequest) Reset() { *m = SdkCredentialEnumerateRequest{} } +func (m *SdkCredentialEnumerateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCredentialEnumerateRequest) ProtoMessage() {} +func (*SdkCredentialEnumerateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{130} } - -func (x *SdkCredentialEnumerateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCredentialEnumerateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCredentialEnumerateRequest.Unmarshal(m, b) } - -func (*SdkCredentialEnumerateRequest) ProtoMessage() {} - -func (x *SdkCredentialEnumerateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[130] - 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) +func (m *SdkCredentialEnumerateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCredentialEnumerateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCredentialEnumerateRequest.ProtoReflect.Descriptor instead. -func (*SdkCredentialEnumerateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{130} +func (dst *SdkCredentialEnumerateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCredentialEnumerateRequest.Merge(dst, src) +} +func (m *SdkCredentialEnumerateRequest) XXX_Size() int { + return xxx_messageInfo_SdkCredentialEnumerateRequest.Size(m) +} +func (m *SdkCredentialEnumerateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCredentialEnumerateRequest.DiscardUnknown(m) } +var xxx_messageInfo_SdkCredentialEnumerateRequest proto.InternalMessageInfo + // Defines response for a enumeration of credentials type SdkCredentialEnumerateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // List of credentials - CredentialIds []string `protobuf:"bytes,1,rep,name=credential_ids,json=credentialIds,proto3" json:"credential_ids,omitempty"` + CredentialIds []string `protobuf:"bytes,1,rep,name=credential_ids,json=credentialIds" json:"credential_ids,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCredentialEnumerateResponse) Reset() { - *x = SdkCredentialEnumerateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[131] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCredentialEnumerateResponse) Reset() { *m = SdkCredentialEnumerateResponse{} } +func (m *SdkCredentialEnumerateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCredentialEnumerateResponse) ProtoMessage() {} +func (*SdkCredentialEnumerateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{131} } - -func (x *SdkCredentialEnumerateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCredentialEnumerateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCredentialEnumerateResponse.Unmarshal(m, b) } - -func (*SdkCredentialEnumerateResponse) ProtoMessage() {} - -func (x *SdkCredentialEnumerateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[131] - 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) +func (m *SdkCredentialEnumerateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCredentialEnumerateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCredentialEnumerateResponse.ProtoReflect.Descriptor instead. -func (*SdkCredentialEnumerateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{131} +func (dst *SdkCredentialEnumerateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCredentialEnumerateResponse.Merge(dst, src) +} +func (m *SdkCredentialEnumerateResponse) XXX_Size() int { + return xxx_messageInfo_SdkCredentialEnumerateResponse.Size(m) } +func (m *SdkCredentialEnumerateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCredentialEnumerateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCredentialEnumerateResponse proto.InternalMessageInfo -func (x *SdkCredentialEnumerateResponse) GetCredentialIds() []string { - if x != nil { - return x.CredentialIds +func (m *SdkCredentialEnumerateResponse) GetCredentialIds() []string { + if m != nil { + return m.CredentialIds } return nil } // Defines the request to inspection for credentials type SdkCredentialInspectRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of the credential - CredentialId string `protobuf:"bytes,1,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` + CredentialId string `protobuf:"bytes,1,opt,name=credential_id,json=credentialId" json:"credential_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCredentialInspectRequest) Reset() { - *x = SdkCredentialInspectRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[132] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCredentialInspectRequest) Reset() { *m = SdkCredentialInspectRequest{} } +func (m *SdkCredentialInspectRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCredentialInspectRequest) ProtoMessage() {} +func (*SdkCredentialInspectRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{132} } - -func (x *SdkCredentialInspectRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCredentialInspectRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCredentialInspectRequest.Unmarshal(m, b) } - -func (*SdkCredentialInspectRequest) ProtoMessage() {} - -func (x *SdkCredentialInspectRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[132] - 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) +func (m *SdkCredentialInspectRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCredentialInspectRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCredentialInspectRequest.ProtoReflect.Descriptor instead. -func (*SdkCredentialInspectRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{132} +func (dst *SdkCredentialInspectRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCredentialInspectRequest.Merge(dst, src) +} +func (m *SdkCredentialInspectRequest) XXX_Size() int { + return xxx_messageInfo_SdkCredentialInspectRequest.Size(m) } +func (m *SdkCredentialInspectRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCredentialInspectRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCredentialInspectRequest proto.InternalMessageInfo -func (x *SdkCredentialInspectRequest) GetCredentialId() string { - if x != nil { - return x.CredentialId +func (m *SdkCredentialInspectRequest) GetCredentialId() string { + if m != nil { + return m.CredentialId } return "" } @@ -14905,1700 +14117,1552 @@ func (x *SdkCredentialInspectRequest) GetCredentialId() string { // This response uses OneOf proto style. Depending on your programming language // you will need to check if the value of credential_type is one of the ones below. type SdkCredentialInspectResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Credential id - CredentialId string `protobuf:"bytes,1,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` + CredentialId string `protobuf:"bytes,1,opt,name=credential_id,json=credentialId" json:"credential_id,omitempty"` // Name of the credential - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` // (optional) Name of bucket - Bucket string `protobuf:"bytes,3,opt,name=bucket,proto3" json:"bucket,omitempty"` + Bucket string `protobuf:"bytes,3,opt,name=bucket" json:"bucket,omitempty"` // Ownership of the credential - Ownership *Ownership `protobuf:"bytes,4,opt,name=ownership,proto3" json:"ownership,omitempty"` + Ownership *Ownership `protobuf:"bytes,4,opt,name=ownership" json:"ownership,omitempty"` // proxy flag for the credential - UseProxy bool `protobuf:"varint,5,opt,name=use_proxy,json=useProxy,proto3" json:"use_proxy,omitempty"` + UseProxy bool `protobuf:"varint,5,opt,name=use_proxy,json=useProxy" json:"use_proxy,omitempty"` // iamPolicy indicates if IAM creds must be used for access - IamPolicy bool `protobuf:"varint,6,opt,name=iam_policy,json=iamPolicy,proto3" json:"iam_policy,omitempty"` + IamPolicy bool `protobuf:"varint,6,opt,name=iam_policy,json=iamPolicy" json:"iam_policy,omitempty"` // Start at field number 200 for expansion support // - // Types that are assignable to CredentialType: + // Types that are valid to be assigned to CredentialType: // *SdkCredentialInspectResponse_AwsCredential // *SdkCredentialInspectResponse_AzureCredential // *SdkCredentialInspectResponse_GoogleCredential // *SdkCredentialInspectResponse_NfsCredential - CredentialType isSdkCredentialInspectResponse_CredentialType `protobuf_oneof:"credential_type"` + CredentialType isSdkCredentialInspectResponse_CredentialType `protobuf_oneof:"credential_type"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCredentialInspectResponse) Reset() { - *x = SdkCredentialInspectResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[133] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCredentialInspectResponse) Reset() { *m = SdkCredentialInspectResponse{} } +func (m *SdkCredentialInspectResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCredentialInspectResponse) ProtoMessage() {} +func (*SdkCredentialInspectResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{133} } - -func (x *SdkCredentialInspectResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCredentialInspectResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCredentialInspectResponse.Unmarshal(m, b) +} +func (m *SdkCredentialInspectResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCredentialInspectResponse.Marshal(b, m, deterministic) +} +func (dst *SdkCredentialInspectResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCredentialInspectResponse.Merge(dst, src) +} +func (m *SdkCredentialInspectResponse) XXX_Size() int { + return xxx_messageInfo_SdkCredentialInspectResponse.Size(m) +} +func (m *SdkCredentialInspectResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCredentialInspectResponse.DiscardUnknown(m) } -func (*SdkCredentialInspectResponse) ProtoMessage() {} +var xxx_messageInfo_SdkCredentialInspectResponse proto.InternalMessageInfo -func (x *SdkCredentialInspectResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[133] - 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) +type isSdkCredentialInspectResponse_CredentialType interface { + isSdkCredentialInspectResponse_CredentialType() } -// Deprecated: Use SdkCredentialInspectResponse.ProtoReflect.Descriptor instead. -func (*SdkCredentialInspectResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{133} +type SdkCredentialInspectResponse_AwsCredential struct { + AwsCredential *SdkAwsCredentialResponse `protobuf:"bytes,200,opt,name=aws_credential,json=awsCredential,oneof"` +} +type SdkCredentialInspectResponse_AzureCredential struct { + AzureCredential *SdkAzureCredentialResponse `protobuf:"bytes,201,opt,name=azure_credential,json=azureCredential,oneof"` +} +type SdkCredentialInspectResponse_GoogleCredential struct { + GoogleCredential *SdkGoogleCredentialResponse `protobuf:"bytes,202,opt,name=google_credential,json=googleCredential,oneof"` +} +type SdkCredentialInspectResponse_NfsCredential struct { + NfsCredential *SdkNfsCredentialResponse `protobuf:"bytes,203,opt,name=nfs_credential,json=nfsCredential,oneof"` +} + +func (*SdkCredentialInspectResponse_AwsCredential) isSdkCredentialInspectResponse_CredentialType() {} +func (*SdkCredentialInspectResponse_AzureCredential) isSdkCredentialInspectResponse_CredentialType() {} +func (*SdkCredentialInspectResponse_GoogleCredential) isSdkCredentialInspectResponse_CredentialType() { } +func (*SdkCredentialInspectResponse_NfsCredential) isSdkCredentialInspectResponse_CredentialType() {} -func (x *SdkCredentialInspectResponse) GetCredentialId() string { - if x != nil { - return x.CredentialId +func (m *SdkCredentialInspectResponse) GetCredentialType() isSdkCredentialInspectResponse_CredentialType { + if m != nil { + return m.CredentialType } - return "" + return nil } -func (x *SdkCredentialInspectResponse) GetName() string { - if x != nil { - return x.Name +func (m *SdkCredentialInspectResponse) GetCredentialId() string { + if m != nil { + return m.CredentialId } return "" } -func (x *SdkCredentialInspectResponse) GetBucket() string { - if x != nil { - return x.Bucket +func (m *SdkCredentialInspectResponse) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *SdkCredentialInspectResponse) GetOwnership() *Ownership { - if x != nil { - return x.Ownership +func (m *SdkCredentialInspectResponse) GetBucket() string { + if m != nil { + return m.Bucket } - return nil + return "" } -func (x *SdkCredentialInspectResponse) GetUseProxy() bool { - if x != nil { - return x.UseProxy +func (m *SdkCredentialInspectResponse) GetOwnership() *Ownership { + if m != nil { + return m.Ownership } - return false + return nil } -func (x *SdkCredentialInspectResponse) GetIamPolicy() bool { - if x != nil { - return x.IamPolicy +func (m *SdkCredentialInspectResponse) GetUseProxy() bool { + if m != nil { + return m.UseProxy } return false } -func (m *SdkCredentialInspectResponse) GetCredentialType() isSdkCredentialInspectResponse_CredentialType { +func (m *SdkCredentialInspectResponse) GetIamPolicy() bool { if m != nil { - return m.CredentialType + return m.IamPolicy } - return nil + return false } -func (x *SdkCredentialInspectResponse) GetAwsCredential() *SdkAwsCredentialResponse { - if x, ok := x.GetCredentialType().(*SdkCredentialInspectResponse_AwsCredential); ok { +func (m *SdkCredentialInspectResponse) GetAwsCredential() *SdkAwsCredentialResponse { + if x, ok := m.GetCredentialType().(*SdkCredentialInspectResponse_AwsCredential); ok { return x.AwsCredential } return nil } -func (x *SdkCredentialInspectResponse) GetAzureCredential() *SdkAzureCredentialResponse { - if x, ok := x.GetCredentialType().(*SdkCredentialInspectResponse_AzureCredential); ok { +func (m *SdkCredentialInspectResponse) GetAzureCredential() *SdkAzureCredentialResponse { + if x, ok := m.GetCredentialType().(*SdkCredentialInspectResponse_AzureCredential); ok { return x.AzureCredential } return nil } -func (x *SdkCredentialInspectResponse) GetGoogleCredential() *SdkGoogleCredentialResponse { - if x, ok := x.GetCredentialType().(*SdkCredentialInspectResponse_GoogleCredential); ok { +func (m *SdkCredentialInspectResponse) GetGoogleCredential() *SdkGoogleCredentialResponse { + if x, ok := m.GetCredentialType().(*SdkCredentialInspectResponse_GoogleCredential); ok { return x.GoogleCredential } return nil } -func (x *SdkCredentialInspectResponse) GetNfsCredential() *SdkNfsCredentialResponse { - if x, ok := x.GetCredentialType().(*SdkCredentialInspectResponse_NfsCredential); ok { +func (m *SdkCredentialInspectResponse) GetNfsCredential() *SdkNfsCredentialResponse { + if x, ok := m.GetCredentialType().(*SdkCredentialInspectResponse_NfsCredential); ok { return x.NfsCredential } return nil } -type isSdkCredentialInspectResponse_CredentialType interface { - isSdkCredentialInspectResponse_CredentialType() -} - -type SdkCredentialInspectResponse_AwsCredential struct { - // Aws credentials - AwsCredential *SdkAwsCredentialResponse `protobuf:"bytes,200,opt,name=aws_credential,json=awsCredential,proto3,oneof"` -} - -type SdkCredentialInspectResponse_AzureCredential struct { - // Azure credentials - AzureCredential *SdkAzureCredentialResponse `protobuf:"bytes,201,opt,name=azure_credential,json=azureCredential,proto3,oneof"` -} - -type SdkCredentialInspectResponse_GoogleCredential struct { - // Google credentials - GoogleCredential *SdkGoogleCredentialResponse `protobuf:"bytes,202,opt,name=google_credential,json=googleCredential,proto3,oneof"` -} - -type SdkCredentialInspectResponse_NfsCredential struct { - // NFS credentials - NfsCredential *SdkNfsCredentialResponse `protobuf:"bytes,203,opt,name=nfs_credential,json=nfsCredential,proto3,oneof"` -} - -func (*SdkCredentialInspectResponse_AwsCredential) isSdkCredentialInspectResponse_CredentialType() {} - -func (*SdkCredentialInspectResponse_AzureCredential) isSdkCredentialInspectResponse_CredentialType() { +// XXX_OneofFuncs is for the internal use of the proto package. +func (*SdkCredentialInspectResponse) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _SdkCredentialInspectResponse_OneofMarshaler, _SdkCredentialInspectResponse_OneofUnmarshaler, _SdkCredentialInspectResponse_OneofSizer, []interface{}{ + (*SdkCredentialInspectResponse_AwsCredential)(nil), + (*SdkCredentialInspectResponse_AzureCredential)(nil), + (*SdkCredentialInspectResponse_GoogleCredential)(nil), + (*SdkCredentialInspectResponse_NfsCredential)(nil), + } } -func (*SdkCredentialInspectResponse_GoogleCredential) isSdkCredentialInspectResponse_CredentialType() { +func _SdkCredentialInspectResponse_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*SdkCredentialInspectResponse) + // credential_type + switch x := m.CredentialType.(type) { + case *SdkCredentialInspectResponse_AwsCredential: + b.EncodeVarint(200<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.AwsCredential); err != nil { + return err + } + case *SdkCredentialInspectResponse_AzureCredential: + b.EncodeVarint(201<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.AzureCredential); err != nil { + return err + } + case *SdkCredentialInspectResponse_GoogleCredential: + b.EncodeVarint(202<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.GoogleCredential); err != nil { + return err + } + case *SdkCredentialInspectResponse_NfsCredential: + b.EncodeVarint(203<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.NfsCredential); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("SdkCredentialInspectResponse.CredentialType has unexpected type %T", x) + } + return nil +} + +func _SdkCredentialInspectResponse_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*SdkCredentialInspectResponse) + switch tag { + case 200: // credential_type.aws_credential + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkAwsCredentialResponse) + err := b.DecodeMessage(msg) + m.CredentialType = &SdkCredentialInspectResponse_AwsCredential{msg} + return true, err + case 201: // credential_type.azure_credential + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkAzureCredentialResponse) + err := b.DecodeMessage(msg) + m.CredentialType = &SdkCredentialInspectResponse_AzureCredential{msg} + return true, err + case 202: // credential_type.google_credential + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkGoogleCredentialResponse) + err := b.DecodeMessage(msg) + m.CredentialType = &SdkCredentialInspectResponse_GoogleCredential{msg} + return true, err + case 203: // credential_type.nfs_credential + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkNfsCredentialResponse) + err := b.DecodeMessage(msg) + m.CredentialType = &SdkCredentialInspectResponse_NfsCredential{msg} + return true, err + default: + return false, nil + } +} + +func _SdkCredentialInspectResponse_OneofSizer(msg proto.Message) (n int) { + m := msg.(*SdkCredentialInspectResponse) + // credential_type + switch x := m.CredentialType.(type) { + case *SdkCredentialInspectResponse_AwsCredential: + s := proto.Size(x.AwsCredential) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case *SdkCredentialInspectResponse_AzureCredential: + s := proto.Size(x.AzureCredential) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case *SdkCredentialInspectResponse_GoogleCredential: + s := proto.Size(x.GoogleCredential) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case *SdkCredentialInspectResponse_NfsCredential: + s := proto.Size(x.NfsCredential) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n } -func (*SdkCredentialInspectResponse_NfsCredential) isSdkCredentialInspectResponse_CredentialType() {} - // Defines the request to delete credentials type SdkCredentialDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id for credentials - CredentialId string `protobuf:"bytes,1,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` + CredentialId string `protobuf:"bytes,1,opt,name=credential_id,json=credentialId" json:"credential_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCredentialDeleteRequest) Reset() { - *x = SdkCredentialDeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[134] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCredentialDeleteRequest) Reset() { *m = SdkCredentialDeleteRequest{} } +func (m *SdkCredentialDeleteRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCredentialDeleteRequest) ProtoMessage() {} +func (*SdkCredentialDeleteRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{134} } - -func (x *SdkCredentialDeleteRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCredentialDeleteRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCredentialDeleteRequest.Unmarshal(m, b) } - -func (*SdkCredentialDeleteRequest) ProtoMessage() {} - -func (x *SdkCredentialDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[134] - 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) +func (m *SdkCredentialDeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCredentialDeleteRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCredentialDeleteRequest.ProtoReflect.Descriptor instead. -func (*SdkCredentialDeleteRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{134} +func (dst *SdkCredentialDeleteRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCredentialDeleteRequest.Merge(dst, src) +} +func (m *SdkCredentialDeleteRequest) XXX_Size() int { + return xxx_messageInfo_SdkCredentialDeleteRequest.Size(m) +} +func (m *SdkCredentialDeleteRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCredentialDeleteRequest.DiscardUnknown(m) } -func (x *SdkCredentialDeleteRequest) GetCredentialId() string { - if x != nil { - return x.CredentialId +var xxx_messageInfo_SdkCredentialDeleteRequest proto.InternalMessageInfo + +func (m *SdkCredentialDeleteRequest) GetCredentialId() string { + if m != nil { + return m.CredentialId } return "" } // Empty response type SdkCredentialDeleteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCredentialDeleteResponse) Reset() { - *x = SdkCredentialDeleteResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[135] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCredentialDeleteResponse) Reset() { *m = SdkCredentialDeleteResponse{} } +func (m *SdkCredentialDeleteResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCredentialDeleteResponse) ProtoMessage() {} +func (*SdkCredentialDeleteResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{135} } - -func (x *SdkCredentialDeleteResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCredentialDeleteResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCredentialDeleteResponse.Unmarshal(m, b) } - -func (*SdkCredentialDeleteResponse) ProtoMessage() {} - -func (x *SdkCredentialDeleteResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[135] - 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) +func (m *SdkCredentialDeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCredentialDeleteResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCredentialDeleteResponse.ProtoReflect.Descriptor instead. -func (*SdkCredentialDeleteResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{135} +func (dst *SdkCredentialDeleteResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCredentialDeleteResponse.Merge(dst, src) +} +func (m *SdkCredentialDeleteResponse) XXX_Size() int { + return xxx_messageInfo_SdkCredentialDeleteResponse.Size(m) } +func (m *SdkCredentialDeleteResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCredentialDeleteResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCredentialDeleteResponse proto.InternalMessageInfo // Defines a request to validate credentials type SdkCredentialValidateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of the credentials - CredentialId string `protobuf:"bytes,1,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` + CredentialId string `protobuf:"bytes,1,opt,name=credential_id,json=credentialId" json:"credential_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCredentialValidateRequest) Reset() { - *x = SdkCredentialValidateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[136] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCredentialValidateRequest) Reset() { *m = SdkCredentialValidateRequest{} } +func (m *SdkCredentialValidateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCredentialValidateRequest) ProtoMessage() {} +func (*SdkCredentialValidateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{136} } - -func (x *SdkCredentialValidateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCredentialValidateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCredentialValidateRequest.Unmarshal(m, b) } - -func (*SdkCredentialValidateRequest) ProtoMessage() {} - -func (x *SdkCredentialValidateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[136] - 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) +func (m *SdkCredentialValidateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCredentialValidateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCredentialValidateRequest.ProtoReflect.Descriptor instead. -func (*SdkCredentialValidateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{136} +func (dst *SdkCredentialValidateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCredentialValidateRequest.Merge(dst, src) +} +func (m *SdkCredentialValidateRequest) XXX_Size() int { + return xxx_messageInfo_SdkCredentialValidateRequest.Size(m) +} +func (m *SdkCredentialValidateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCredentialValidateRequest.DiscardUnknown(m) } -func (x *SdkCredentialValidateRequest) GetCredentialId() string { - if x != nil { - return x.CredentialId +var xxx_messageInfo_SdkCredentialValidateRequest proto.InternalMessageInfo + +func (m *SdkCredentialValidateRequest) GetCredentialId() string { + if m != nil { + return m.CredentialId } return "" } // Empty response type SdkCredentialValidateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCredentialValidateResponse) Reset() { - *x = SdkCredentialValidateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[137] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCredentialValidateResponse) Reset() { *m = SdkCredentialValidateResponse{} } +func (m *SdkCredentialValidateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCredentialValidateResponse) ProtoMessage() {} +func (*SdkCredentialValidateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{137} } - -func (x *SdkCredentialValidateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCredentialValidateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCredentialValidateResponse.Unmarshal(m, b) } - -func (*SdkCredentialValidateResponse) ProtoMessage() {} - -func (x *SdkCredentialValidateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[137] - 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) +func (m *SdkCredentialValidateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCredentialValidateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCredentialValidateResponse.ProtoReflect.Descriptor instead. -func (*SdkCredentialValidateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{137} +func (dst *SdkCredentialValidateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCredentialValidateResponse.Merge(dst, src) +} +func (m *SdkCredentialValidateResponse) XXX_Size() int { + return xxx_messageInfo_SdkCredentialValidateResponse.Size(m) } +func (m *SdkCredentialValidateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCredentialValidateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCredentialValidateResponse proto.InternalMessageInfo // Defines a request to remove any references to credentials type SdkCredentialDeleteReferencesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of the credentials - CredentialId string `protobuf:"bytes,1,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` + CredentialId string `protobuf:"bytes,1,opt,name=credential_id,json=credentialId" json:"credential_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCredentialDeleteReferencesRequest) Reset() { - *x = SdkCredentialDeleteReferencesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[138] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCredentialDeleteReferencesRequest) Reset() { *m = SdkCredentialDeleteReferencesRequest{} } +func (m *SdkCredentialDeleteReferencesRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCredentialDeleteReferencesRequest) ProtoMessage() {} +func (*SdkCredentialDeleteReferencesRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{138} } - -func (x *SdkCredentialDeleteReferencesRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCredentialDeleteReferencesRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCredentialDeleteReferencesRequest.Unmarshal(m, b) } - -func (*SdkCredentialDeleteReferencesRequest) ProtoMessage() {} - -func (x *SdkCredentialDeleteReferencesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[138] - 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) +func (m *SdkCredentialDeleteReferencesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCredentialDeleteReferencesRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCredentialDeleteReferencesRequest.ProtoReflect.Descriptor instead. -func (*SdkCredentialDeleteReferencesRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{138} +func (dst *SdkCredentialDeleteReferencesRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCredentialDeleteReferencesRequest.Merge(dst, src) +} +func (m *SdkCredentialDeleteReferencesRequest) XXX_Size() int { + return xxx_messageInfo_SdkCredentialDeleteReferencesRequest.Size(m) +} +func (m *SdkCredentialDeleteReferencesRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCredentialDeleteReferencesRequest.DiscardUnknown(m) } -func (x *SdkCredentialDeleteReferencesRequest) GetCredentialId() string { - if x != nil { - return x.CredentialId +var xxx_messageInfo_SdkCredentialDeleteReferencesRequest proto.InternalMessageInfo + +func (m *SdkCredentialDeleteReferencesRequest) GetCredentialId() string { + if m != nil { + return m.CredentialId } return "" } // Empty response type SdkCredentialDeleteReferencesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCredentialDeleteReferencesResponse) Reset() { - *x = SdkCredentialDeleteReferencesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[139] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCredentialDeleteReferencesResponse) Reset() { *m = SdkCredentialDeleteReferencesResponse{} } +func (m *SdkCredentialDeleteReferencesResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCredentialDeleteReferencesResponse) ProtoMessage() {} +func (*SdkCredentialDeleteReferencesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{139} } - -func (x *SdkCredentialDeleteReferencesResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCredentialDeleteReferencesResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCredentialDeleteReferencesResponse.Unmarshal(m, b) } - -func (*SdkCredentialDeleteReferencesResponse) ProtoMessage() {} - -func (x *SdkCredentialDeleteReferencesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[139] - 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) +func (m *SdkCredentialDeleteReferencesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCredentialDeleteReferencesResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCredentialDeleteReferencesResponse.ProtoReflect.Descriptor instead. -func (*SdkCredentialDeleteReferencesResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{139} +func (dst *SdkCredentialDeleteReferencesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCredentialDeleteReferencesResponse.Merge(dst, src) +} +func (m *SdkCredentialDeleteReferencesResponse) XXX_Size() int { + return xxx_messageInfo_SdkCredentialDeleteReferencesResponse.Size(m) } +func (m *SdkCredentialDeleteReferencesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCredentialDeleteReferencesResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCredentialDeleteReferencesResponse proto.InternalMessageInfo // Options to attach device type SdkVolumeAttachOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Indicates the name of the secret stored in a secret store // In case of Hashicorp's Vault, it will be the key from the key-value pair stored in its kv backend. // In case of Kubernetes secret, it is the name of the secret object itself - SecretName string `protobuf:"bytes,1,opt,name=secret_name,json=secretName,proto3" json:"secret_name,omitempty"` + SecretName string `protobuf:"bytes,1,opt,name=secret_name,json=secretName" json:"secret_name,omitempty"` // In case of Kubernetes, this will be the key stored in the Kubernetes secret - SecretKey string `protobuf:"bytes,2,opt,name=secret_key,json=secretKey,proto3" json:"secret_key,omitempty"` + SecretKey string `protobuf:"bytes,2,opt,name=secret_key,json=secretKey" json:"secret_key,omitempty"` // It indicates the additional context which could be used to retrieve the secret. // In case of Kubernetes, this is the namespace in which the secret is created. - SecretContext string `protobuf:"bytes,3,opt,name=secret_context,json=secretContext,proto3" json:"secret_context,omitempty"` + SecretContext string `protobuf:"bytes,3,opt,name=secret_context,json=secretContext" json:"secret_context,omitempty"` // Indicates whether fastpath needs to be enabled during attach - Fastpath string `protobuf:"bytes,4,opt,name=fastpath,proto3" json:"fastpath,omitempty"` + Fastpath string `protobuf:"bytes,4,opt,name=fastpath" json:"fastpath,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeAttachOptions) Reset() { - *x = SdkVolumeAttachOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[140] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeAttachOptions) Reset() { *m = SdkVolumeAttachOptions{} } +func (m *SdkVolumeAttachOptions) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeAttachOptions) ProtoMessage() {} +func (*SdkVolumeAttachOptions) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{140} } - -func (x *SdkVolumeAttachOptions) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeAttachOptions) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeAttachOptions.Unmarshal(m, b) } - -func (*SdkVolumeAttachOptions) ProtoMessage() {} - -func (x *SdkVolumeAttachOptions) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[140] - 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) +func (m *SdkVolumeAttachOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeAttachOptions.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeAttachOptions.ProtoReflect.Descriptor instead. -func (*SdkVolumeAttachOptions) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{140} +func (dst *SdkVolumeAttachOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeAttachOptions.Merge(dst, src) +} +func (m *SdkVolumeAttachOptions) XXX_Size() int { + return xxx_messageInfo_SdkVolumeAttachOptions.Size(m) +} +func (m *SdkVolumeAttachOptions) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeAttachOptions.DiscardUnknown(m) } -func (x *SdkVolumeAttachOptions) GetSecretName() string { - if x != nil { - return x.SecretName +var xxx_messageInfo_SdkVolumeAttachOptions proto.InternalMessageInfo + +func (m *SdkVolumeAttachOptions) GetSecretName() string { + if m != nil { + return m.SecretName } return "" } -func (x *SdkVolumeAttachOptions) GetSecretKey() string { - if x != nil { - return x.SecretKey +func (m *SdkVolumeAttachOptions) GetSecretKey() string { + if m != nil { + return m.SecretKey } return "" } -func (x *SdkVolumeAttachOptions) GetSecretContext() string { - if x != nil { - return x.SecretContext +func (m *SdkVolumeAttachOptions) GetSecretContext() string { + if m != nil { + return m.SecretContext } return "" } -func (x *SdkVolumeAttachOptions) GetFastpath() string { - if x != nil { - return x.Fastpath +func (m *SdkVolumeAttachOptions) GetFastpath() string { + if m != nil { + return m.Fastpath } return "" } // Defines a request to mount a volume to the node receiving this request type SdkVolumeMountRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of the volume - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // Mount path for mounting the volume. - MountPath string `protobuf:"bytes,2,opt,name=mount_path,json=mountPath,proto3" json:"mount_path,omitempty"` + MountPath string `protobuf:"bytes,2,opt,name=mount_path,json=mountPath" json:"mount_path,omitempty"` // Options to attach device - Options *SdkVolumeAttachOptions `protobuf:"bytes,3,opt,name=options,proto3" json:"options,omitempty"` + Options *SdkVolumeAttachOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"` // The following options are private to the driver plugin running the // OpenStorage SDK. Contact your driver developer for any special // values that need to be provided here. - DriverOptions map[string]string `protobuf:"bytes,4,rep,name=driver_options,json=driverOptions,proto3" json:"driver_options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + DriverOptions map[string]string `protobuf:"bytes,4,rep,name=driver_options,json=driverOptions" json:"driver_options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeMountRequest) Reset() { - *x = SdkVolumeMountRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[141] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeMountRequest) Reset() { *m = SdkVolumeMountRequest{} } +func (m *SdkVolumeMountRequest) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeMountRequest) ProtoMessage() {} +func (*SdkVolumeMountRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{141} } - -func (x *SdkVolumeMountRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeMountRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeMountRequest.Unmarshal(m, b) } - -func (*SdkVolumeMountRequest) ProtoMessage() {} - -func (x *SdkVolumeMountRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[141] - 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) +func (m *SdkVolumeMountRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeMountRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeMountRequest.ProtoReflect.Descriptor instead. -func (*SdkVolumeMountRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{141} +func (dst *SdkVolumeMountRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeMountRequest.Merge(dst, src) +} +func (m *SdkVolumeMountRequest) XXX_Size() int { + return xxx_messageInfo_SdkVolumeMountRequest.Size(m) +} +func (m *SdkVolumeMountRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeMountRequest.DiscardUnknown(m) } -func (x *SdkVolumeMountRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +var xxx_messageInfo_SdkVolumeMountRequest proto.InternalMessageInfo + +func (m *SdkVolumeMountRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *SdkVolumeMountRequest) GetMountPath() string { - if x != nil { - return x.MountPath +func (m *SdkVolumeMountRequest) GetMountPath() string { + if m != nil { + return m.MountPath } return "" } -func (x *SdkVolumeMountRequest) GetOptions() *SdkVolumeAttachOptions { - if x != nil { - return x.Options +func (m *SdkVolumeMountRequest) GetOptions() *SdkVolumeAttachOptions { + if m != nil { + return m.Options } return nil } -func (x *SdkVolumeMountRequest) GetDriverOptions() map[string]string { - if x != nil { - return x.DriverOptions +func (m *SdkVolumeMountRequest) GetDriverOptions() map[string]string { + if m != nil { + return m.DriverOptions } return nil } // Empty response type SdkVolumeMountResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeMountResponse) Reset() { - *x = SdkVolumeMountResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[142] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeMountResponse) Reset() { *m = SdkVolumeMountResponse{} } +func (m *SdkVolumeMountResponse) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeMountResponse) ProtoMessage() {} +func (*SdkVolumeMountResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{142} } - -func (x *SdkVolumeMountResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeMountResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeMountResponse.Unmarshal(m, b) } - -func (*SdkVolumeMountResponse) ProtoMessage() {} - -func (x *SdkVolumeMountResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[142] - 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) +func (m *SdkVolumeMountResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeMountResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeMountResponse.ProtoReflect.Descriptor instead. -func (*SdkVolumeMountResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{142} +func (dst *SdkVolumeMountResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeMountResponse.Merge(dst, src) +} +func (m *SdkVolumeMountResponse) XXX_Size() int { + return xxx_messageInfo_SdkVolumeMountResponse.Size(m) +} +func (m *SdkVolumeMountResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeMountResponse.DiscardUnknown(m) } +var xxx_messageInfo_SdkVolumeMountResponse proto.InternalMessageInfo + // Options to unmount device type SdkVolumeUnmountOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Delete the mount path on the node after unmounting - DeleteMountPath bool `protobuf:"varint,1,opt,name=delete_mount_path,json=deleteMountPath,proto3" json:"delete_mount_path,omitempty"` + DeleteMountPath bool `protobuf:"varint,1,opt,name=delete_mount_path,json=deleteMountPath" json:"delete_mount_path,omitempty"` // Do not wait for a delay before deleting path. // Normally a storage driver may delay before deleting the mount path, // which may be necessary to reduce the risk of race conditions. This // choice will remove that delay. This value is only usable when // `delete_mount_path` is set. - NoDelayBeforeDeletingMountPath bool `protobuf:"varint,2,opt,name=no_delay_before_deleting_mount_path,json=noDelayBeforeDeletingMountPath,proto3" json:"no_delay_before_deleting_mount_path,omitempty"` + NoDelayBeforeDeletingMountPath bool `protobuf:"varint,2,opt,name=no_delay_before_deleting_mount_path,json=noDelayBeforeDeletingMountPath" json:"no_delay_before_deleting_mount_path,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeUnmountOptions) Reset() { - *x = SdkVolumeUnmountOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[143] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeUnmountOptions) Reset() { *m = SdkVolumeUnmountOptions{} } +func (m *SdkVolumeUnmountOptions) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeUnmountOptions) ProtoMessage() {} +func (*SdkVolumeUnmountOptions) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{143} } - -func (x *SdkVolumeUnmountOptions) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeUnmountOptions) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeUnmountOptions.Unmarshal(m, b) } - -func (*SdkVolumeUnmountOptions) ProtoMessage() {} - -func (x *SdkVolumeUnmountOptions) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[143] - 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) +func (m *SdkVolumeUnmountOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeUnmountOptions.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeUnmountOptions.ProtoReflect.Descriptor instead. -func (*SdkVolumeUnmountOptions) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{143} +func (dst *SdkVolumeUnmountOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeUnmountOptions.Merge(dst, src) +} +func (m *SdkVolumeUnmountOptions) XXX_Size() int { + return xxx_messageInfo_SdkVolumeUnmountOptions.Size(m) } +func (m *SdkVolumeUnmountOptions) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeUnmountOptions.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeUnmountOptions proto.InternalMessageInfo -func (x *SdkVolumeUnmountOptions) GetDeleteMountPath() bool { - if x != nil { - return x.DeleteMountPath +func (m *SdkVolumeUnmountOptions) GetDeleteMountPath() bool { + if m != nil { + return m.DeleteMountPath } return false } -func (x *SdkVolumeUnmountOptions) GetNoDelayBeforeDeletingMountPath() bool { - if x != nil { - return x.NoDelayBeforeDeletingMountPath +func (m *SdkVolumeUnmountOptions) GetNoDelayBeforeDeletingMountPath() bool { + if m != nil { + return m.NoDelayBeforeDeletingMountPath } return false } // Defines a request to unmount a volume on the node receiving this request type SdkVolumeUnmountRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of volume - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // MountPath for device - MountPath string `protobuf:"bytes,2,opt,name=mount_path,json=mountPath,proto3" json:"mount_path,omitempty"` + MountPath string `protobuf:"bytes,2,opt,name=mount_path,json=mountPath" json:"mount_path,omitempty"` // Options to unmount device - Options *SdkVolumeUnmountOptions `protobuf:"bytes,3,opt,name=options,proto3" json:"options,omitempty"` + Options *SdkVolumeUnmountOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"` // The following options are private to the driver plugin running the // OpenStorage SDK. Contact your driver developer for any special // values that need to be provided here. - DriverOptions map[string]string `protobuf:"bytes,4,rep,name=driver_options,json=driverOptions,proto3" json:"driver_options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + DriverOptions map[string]string `protobuf:"bytes,4,rep,name=driver_options,json=driverOptions" json:"driver_options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeUnmountRequest) Reset() { - *x = SdkVolumeUnmountRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[144] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeUnmountRequest) Reset() { *m = SdkVolumeUnmountRequest{} } +func (m *SdkVolumeUnmountRequest) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeUnmountRequest) ProtoMessage() {} +func (*SdkVolumeUnmountRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{144} } - -func (x *SdkVolumeUnmountRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeUnmountRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeUnmountRequest.Unmarshal(m, b) } - -func (*SdkVolumeUnmountRequest) ProtoMessage() {} - -func (x *SdkVolumeUnmountRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[144] - 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) +func (m *SdkVolumeUnmountRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeUnmountRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeUnmountRequest.ProtoReflect.Descriptor instead. -func (*SdkVolumeUnmountRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{144} +func (dst *SdkVolumeUnmountRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeUnmountRequest.Merge(dst, src) +} +func (m *SdkVolumeUnmountRequest) XXX_Size() int { + return xxx_messageInfo_SdkVolumeUnmountRequest.Size(m) +} +func (m *SdkVolumeUnmountRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeUnmountRequest.DiscardUnknown(m) } -func (x *SdkVolumeUnmountRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +var xxx_messageInfo_SdkVolumeUnmountRequest proto.InternalMessageInfo + +func (m *SdkVolumeUnmountRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *SdkVolumeUnmountRequest) GetMountPath() string { - if x != nil { - return x.MountPath +func (m *SdkVolumeUnmountRequest) GetMountPath() string { + if m != nil { + return m.MountPath } return "" } -func (x *SdkVolumeUnmountRequest) GetOptions() *SdkVolumeUnmountOptions { - if x != nil { - return x.Options +func (m *SdkVolumeUnmountRequest) GetOptions() *SdkVolumeUnmountOptions { + if m != nil { + return m.Options } return nil } -func (x *SdkVolumeUnmountRequest) GetDriverOptions() map[string]string { - if x != nil { - return x.DriverOptions +func (m *SdkVolumeUnmountRequest) GetDriverOptions() map[string]string { + if m != nil { + return m.DriverOptions } return nil } // Empty response type SdkVolumeUnmountResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeUnmountResponse) Reset() { - *x = SdkVolumeUnmountResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[145] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeUnmountResponse) Reset() { *m = SdkVolumeUnmountResponse{} } +func (m *SdkVolumeUnmountResponse) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeUnmountResponse) ProtoMessage() {} +func (*SdkVolumeUnmountResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{145} } - -func (x *SdkVolumeUnmountResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeUnmountResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeUnmountResponse.Unmarshal(m, b) } - -func (*SdkVolumeUnmountResponse) ProtoMessage() {} - -func (x *SdkVolumeUnmountResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[145] - 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) +func (m *SdkVolumeUnmountResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeUnmountResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeUnmountResponse.ProtoReflect.Descriptor instead. -func (*SdkVolumeUnmountResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{145} +func (dst *SdkVolumeUnmountResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeUnmountResponse.Merge(dst, src) +} +func (m *SdkVolumeUnmountResponse) XXX_Size() int { + return xxx_messageInfo_SdkVolumeUnmountResponse.Size(m) +} +func (m *SdkVolumeUnmountResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeUnmountResponse.DiscardUnknown(m) } +var xxx_messageInfo_SdkVolumeUnmountResponse proto.InternalMessageInfo + // Defines a request to attach a volume to the node receiving this request type SdkVolumeAttachRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of volume - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // Options to attach device - Options *SdkVolumeAttachOptions `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` + Options *SdkVolumeAttachOptions `protobuf:"bytes,2,opt,name=options" json:"options,omitempty"` // The following options are private to the driver plugin running the // OpenStorage SDK. Contact your driver developer for any special // values that need to be provided here. - DriverOptions map[string]string `protobuf:"bytes,3,rep,name=driver_options,json=driverOptions,proto3" json:"driver_options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + DriverOptions map[string]string `protobuf:"bytes,3,rep,name=driver_options,json=driverOptions" json:"driver_options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeAttachRequest) Reset() { - *x = SdkVolumeAttachRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[146] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeAttachRequest) Reset() { *m = SdkVolumeAttachRequest{} } +func (m *SdkVolumeAttachRequest) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeAttachRequest) ProtoMessage() {} +func (*SdkVolumeAttachRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{146} } - -func (x *SdkVolumeAttachRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeAttachRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeAttachRequest.Unmarshal(m, b) } - -func (*SdkVolumeAttachRequest) ProtoMessage() {} - -func (x *SdkVolumeAttachRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[146] - 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) +func (m *SdkVolumeAttachRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeAttachRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeAttachRequest.ProtoReflect.Descriptor instead. -func (*SdkVolumeAttachRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{146} +func (dst *SdkVolumeAttachRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeAttachRequest.Merge(dst, src) +} +func (m *SdkVolumeAttachRequest) XXX_Size() int { + return xxx_messageInfo_SdkVolumeAttachRequest.Size(m) } +func (m *SdkVolumeAttachRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeAttachRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeAttachRequest proto.InternalMessageInfo -func (x *SdkVolumeAttachRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +func (m *SdkVolumeAttachRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *SdkVolumeAttachRequest) GetOptions() *SdkVolumeAttachOptions { - if x != nil { - return x.Options +func (m *SdkVolumeAttachRequest) GetOptions() *SdkVolumeAttachOptions { + if m != nil { + return m.Options } return nil } -func (x *SdkVolumeAttachRequest) GetDriverOptions() map[string]string { - if x != nil { - return x.DriverOptions +func (m *SdkVolumeAttachRequest) GetDriverOptions() map[string]string { + if m != nil { + return m.DriverOptions } return nil } // Defines a response from the node which received the request to attach type SdkVolumeAttachResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Device path where device is exported - DevicePath string `protobuf:"bytes,1,opt,name=device_path,json=devicePath,proto3" json:"device_path,omitempty"` + DevicePath string `protobuf:"bytes,1,opt,name=device_path,json=devicePath" json:"device_path,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeAttachResponse) Reset() { - *x = SdkVolumeAttachResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[147] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeAttachResponse) Reset() { *m = SdkVolumeAttachResponse{} } +func (m *SdkVolumeAttachResponse) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeAttachResponse) ProtoMessage() {} +func (*SdkVolumeAttachResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{147} } - -func (x *SdkVolumeAttachResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeAttachResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeAttachResponse.Unmarshal(m, b) } - -func (*SdkVolumeAttachResponse) ProtoMessage() {} - -func (x *SdkVolumeAttachResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[147] - 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) +func (m *SdkVolumeAttachResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeAttachResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeAttachResponse.ProtoReflect.Descriptor instead. -func (*SdkVolumeAttachResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{147} +func (dst *SdkVolumeAttachResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeAttachResponse.Merge(dst, src) +} +func (m *SdkVolumeAttachResponse) XXX_Size() int { + return xxx_messageInfo_SdkVolumeAttachResponse.Size(m) } +func (m *SdkVolumeAttachResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeAttachResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeAttachResponse proto.InternalMessageInfo -func (x *SdkVolumeAttachResponse) GetDevicePath() string { - if x != nil { - return x.DevicePath +func (m *SdkVolumeAttachResponse) GetDevicePath() string { + if m != nil { + return m.DevicePath } return "" } type SdkVolumeDetachOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Forcefully detach device from the kernel - Force bool `protobuf:"varint,1,opt,name=force,proto3" json:"force,omitempty"` + Force bool `protobuf:"varint,1,opt,name=force" json:"force,omitempty"` // Unmount the volume before detaching - UnmountBeforeDetach bool `protobuf:"varint,2,opt,name=unmount_before_detach,json=unmountBeforeDetach,proto3" json:"unmount_before_detach,omitempty"` + UnmountBeforeDetach bool `protobuf:"varint,2,opt,name=unmount_before_detach,json=unmountBeforeDetach" json:"unmount_before_detach,omitempty"` // redirect the request to the attached node - Redirect bool `protobuf:"varint,3,opt,name=redirect,proto3" json:"redirect,omitempty"` + Redirect bool `protobuf:"varint,3,opt,name=redirect" json:"redirect,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeDetachOptions) Reset() { - *x = SdkVolumeDetachOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[148] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeDetachOptions) Reset() { *m = SdkVolumeDetachOptions{} } +func (m *SdkVolumeDetachOptions) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeDetachOptions) ProtoMessage() {} +func (*SdkVolumeDetachOptions) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{148} } - -func (x *SdkVolumeDetachOptions) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeDetachOptions) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeDetachOptions.Unmarshal(m, b) } - -func (*SdkVolumeDetachOptions) ProtoMessage() {} - -func (x *SdkVolumeDetachOptions) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[148] - 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) +func (m *SdkVolumeDetachOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeDetachOptions.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeDetachOptions.ProtoReflect.Descriptor instead. -func (*SdkVolumeDetachOptions) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{148} +func (dst *SdkVolumeDetachOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeDetachOptions.Merge(dst, src) +} +func (m *SdkVolumeDetachOptions) XXX_Size() int { + return xxx_messageInfo_SdkVolumeDetachOptions.Size(m) } +func (m *SdkVolumeDetachOptions) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeDetachOptions.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeDetachOptions proto.InternalMessageInfo -func (x *SdkVolumeDetachOptions) GetForce() bool { - if x != nil { - return x.Force +func (m *SdkVolumeDetachOptions) GetForce() bool { + if m != nil { + return m.Force } return false } -func (x *SdkVolumeDetachOptions) GetUnmountBeforeDetach() bool { - if x != nil { - return x.UnmountBeforeDetach +func (m *SdkVolumeDetachOptions) GetUnmountBeforeDetach() bool { + if m != nil { + return m.UnmountBeforeDetach } return false } -func (x *SdkVolumeDetachOptions) GetRedirect() bool { - if x != nil { - return x.Redirect +func (m *SdkVolumeDetachOptions) GetRedirect() bool { + if m != nil { + return m.Redirect } return false } // Defines a request to detach a volume type SdkVolumeDetachRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of the volume - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // Options to detach device - Options *SdkVolumeDetachOptions `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` + Options *SdkVolumeDetachOptions `protobuf:"bytes,2,opt,name=options" json:"options,omitempty"` // The following options are private to the driver plugin running the // OpenStorage SDK. Contact your driver developer for any special // values that need to be provided here. - DriverOptions map[string]string `protobuf:"bytes,3,rep,name=driver_options,json=driverOptions,proto3" json:"driver_options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + DriverOptions map[string]string `protobuf:"bytes,3,rep,name=driver_options,json=driverOptions" json:"driver_options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeDetachRequest) Reset() { - *x = SdkVolumeDetachRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[149] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeDetachRequest) Reset() { *m = SdkVolumeDetachRequest{} } +func (m *SdkVolumeDetachRequest) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeDetachRequest) ProtoMessage() {} +func (*SdkVolumeDetachRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{149} } - -func (x *SdkVolumeDetachRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeDetachRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeDetachRequest.Unmarshal(m, b) } - -func (*SdkVolumeDetachRequest) ProtoMessage() {} - -func (x *SdkVolumeDetachRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[149] - 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) +func (m *SdkVolumeDetachRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeDetachRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeDetachRequest.ProtoReflect.Descriptor instead. -func (*SdkVolumeDetachRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{149} +func (dst *SdkVolumeDetachRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeDetachRequest.Merge(dst, src) +} +func (m *SdkVolumeDetachRequest) XXX_Size() int { + return xxx_messageInfo_SdkVolumeDetachRequest.Size(m) } +func (m *SdkVolumeDetachRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeDetachRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeDetachRequest proto.InternalMessageInfo -func (x *SdkVolumeDetachRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +func (m *SdkVolumeDetachRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *SdkVolumeDetachRequest) GetOptions() *SdkVolumeDetachOptions { - if x != nil { - return x.Options +func (m *SdkVolumeDetachRequest) GetOptions() *SdkVolumeDetachOptions { + if m != nil { + return m.Options } return nil } -func (x *SdkVolumeDetachRequest) GetDriverOptions() map[string]string { - if x != nil { - return x.DriverOptions +func (m *SdkVolumeDetachRequest) GetDriverOptions() map[string]string { + if m != nil { + return m.DriverOptions } return nil } // Empty response type SdkVolumeDetachResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeDetachResponse) Reset() { - *x = SdkVolumeDetachResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[150] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeDetachResponse) Reset() { *m = SdkVolumeDetachResponse{} } +func (m *SdkVolumeDetachResponse) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeDetachResponse) ProtoMessage() {} +func (*SdkVolumeDetachResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{150} } - -func (x *SdkVolumeDetachResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeDetachResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeDetachResponse.Unmarshal(m, b) } - -func (*SdkVolumeDetachResponse) ProtoMessage() {} - -func (x *SdkVolumeDetachResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[150] - 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) +func (m *SdkVolumeDetachResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeDetachResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeDetachResponse.ProtoReflect.Descriptor instead. -func (*SdkVolumeDetachResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{150} +func (dst *SdkVolumeDetachResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeDetachResponse.Merge(dst, src) +} +func (m *SdkVolumeDetachResponse) XXX_Size() int { + return xxx_messageInfo_SdkVolumeDetachResponse.Size(m) +} +func (m *SdkVolumeDetachResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeDetachResponse.DiscardUnknown(m) } +var xxx_messageInfo_SdkVolumeDetachResponse proto.InternalMessageInfo + // Defines a request to create a volume. Use OpenStorageVolume.Update() // to update any labels on the volume. type SdkVolumeCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Unique name of the volume. This will be used for idempotency. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` // Volume specification - Spec *VolumeSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` + Spec *VolumeSpec `protobuf:"bytes,2,opt,name=spec" json:"spec,omitempty"` // Labels to apply to the volume - Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Labels map[string]string `protobuf:"bytes,3,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeCreateRequest) Reset() { - *x = SdkVolumeCreateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[151] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeCreateRequest) Reset() { *m = SdkVolumeCreateRequest{} } +func (m *SdkVolumeCreateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeCreateRequest) ProtoMessage() {} +func (*SdkVolumeCreateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{151} } - -func (x *SdkVolumeCreateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeCreateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeCreateRequest.Unmarshal(m, b) } - -func (*SdkVolumeCreateRequest) ProtoMessage() {} - -func (x *SdkVolumeCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[151] - 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) +func (m *SdkVolumeCreateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeCreateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeCreateRequest.ProtoReflect.Descriptor instead. -func (*SdkVolumeCreateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{151} +func (dst *SdkVolumeCreateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeCreateRequest.Merge(dst, src) +} +func (m *SdkVolumeCreateRequest) XXX_Size() int { + return xxx_messageInfo_SdkVolumeCreateRequest.Size(m) } +func (m *SdkVolumeCreateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeCreateRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeCreateRequest proto.InternalMessageInfo -func (x *SdkVolumeCreateRequest) GetName() string { - if x != nil { - return x.Name +func (m *SdkVolumeCreateRequest) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *SdkVolumeCreateRequest) GetSpec() *VolumeSpec { - if x != nil { - return x.Spec +func (m *SdkVolumeCreateRequest) GetSpec() *VolumeSpec { + if m != nil { + return m.Spec } return nil } -func (x *SdkVolumeCreateRequest) GetLabels() map[string]string { - if x != nil { - return x.Labels +func (m *SdkVolumeCreateRequest) GetLabels() map[string]string { + if m != nil { + return m.Labels } return nil } // Defines a response to the creation of a volume type SdkVolumeCreateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of new volume - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeCreateResponse) Reset() { - *x = SdkVolumeCreateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[152] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeCreateResponse) Reset() { *m = SdkVolumeCreateResponse{} } +func (m *SdkVolumeCreateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeCreateResponse) ProtoMessage() {} +func (*SdkVolumeCreateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{152} } - -func (x *SdkVolumeCreateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeCreateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeCreateResponse.Unmarshal(m, b) } - -func (*SdkVolumeCreateResponse) ProtoMessage() {} - -func (x *SdkVolumeCreateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[152] - 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) +func (m *SdkVolumeCreateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeCreateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeCreateResponse.ProtoReflect.Descriptor instead. -func (*SdkVolumeCreateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{152} +func (dst *SdkVolumeCreateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeCreateResponse.Merge(dst, src) +} +func (m *SdkVolumeCreateResponse) XXX_Size() int { + return xxx_messageInfo_SdkVolumeCreateResponse.Size(m) } +func (m *SdkVolumeCreateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeCreateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeCreateResponse proto.InternalMessageInfo -func (x *SdkVolumeCreateResponse) GetVolumeId() string { - if x != nil { - return x.VolumeId +func (m *SdkVolumeCreateResponse) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } // Defines a request to clone a volume or create a volume from a snapshot type SdkVolumeCloneRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Unique name of the volume. This will be used for idempotency. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` // Parent volume id or snapshot id will create a new volume as a clone of the parent. - ParentId string `protobuf:"bytes,2,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"` + ParentId string `protobuf:"bytes,2,opt,name=parent_id,json=parentId" json:"parent_id,omitempty"` // Additional labels to be appended after cloning the volume. Note that clone will // issue a snapshot, which copies most labels except pvc and namespace. This map // allows you to pass additional labels that are not part of the parent volume. - AdditionalLabels map[string]string `protobuf:"bytes,3,rep,name=additional_labels,json=additionalLabels,proto3" json:"additional_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + AdditionalLabels map[string]string `protobuf:"bytes,3,rep,name=additional_labels,json=additionalLabels" json:"additional_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeCloneRequest) Reset() { - *x = SdkVolumeCloneRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[153] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeCloneRequest) Reset() { *m = SdkVolumeCloneRequest{} } +func (m *SdkVolumeCloneRequest) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeCloneRequest) ProtoMessage() {} +func (*SdkVolumeCloneRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{153} } - -func (x *SdkVolumeCloneRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeCloneRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeCloneRequest.Unmarshal(m, b) } - -func (*SdkVolumeCloneRequest) ProtoMessage() {} - -func (x *SdkVolumeCloneRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[153] - 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) +func (m *SdkVolumeCloneRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeCloneRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeCloneRequest.ProtoReflect.Descriptor instead. -func (*SdkVolumeCloneRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{153} +func (dst *SdkVolumeCloneRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeCloneRequest.Merge(dst, src) +} +func (m *SdkVolumeCloneRequest) XXX_Size() int { + return xxx_messageInfo_SdkVolumeCloneRequest.Size(m) } +func (m *SdkVolumeCloneRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeCloneRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeCloneRequest proto.InternalMessageInfo -func (x *SdkVolumeCloneRequest) GetName() string { - if x != nil { - return x.Name +func (m *SdkVolumeCloneRequest) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *SdkVolumeCloneRequest) GetParentId() string { - if x != nil { - return x.ParentId +func (m *SdkVolumeCloneRequest) GetParentId() string { + if m != nil { + return m.ParentId } return "" } -func (x *SdkVolumeCloneRequest) GetAdditionalLabels() map[string]string { - if x != nil { - return x.AdditionalLabels +func (m *SdkVolumeCloneRequest) GetAdditionalLabels() map[string]string { + if m != nil { + return m.AdditionalLabels } return nil } // Defines the response when creating a clone from a volume or a snapshot type SdkVolumeCloneResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of new volume - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeCloneResponse) Reset() { - *x = SdkVolumeCloneResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[154] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeCloneResponse) Reset() { *m = SdkVolumeCloneResponse{} } +func (m *SdkVolumeCloneResponse) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeCloneResponse) ProtoMessage() {} +func (*SdkVolumeCloneResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{154} } - -func (x *SdkVolumeCloneResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeCloneResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeCloneResponse.Unmarshal(m, b) } - -func (*SdkVolumeCloneResponse) ProtoMessage() {} - -func (x *SdkVolumeCloneResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[154] - 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) +func (m *SdkVolumeCloneResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeCloneResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeCloneResponse.ProtoReflect.Descriptor instead. -func (*SdkVolumeCloneResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{154} +func (dst *SdkVolumeCloneResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeCloneResponse.Merge(dst, src) +} +func (m *SdkVolumeCloneResponse) XXX_Size() int { + return xxx_messageInfo_SdkVolumeCloneResponse.Size(m) } +func (m *SdkVolumeCloneResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeCloneResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeCloneResponse proto.InternalMessageInfo -func (x *SdkVolumeCloneResponse) GetVolumeId() string { - if x != nil { - return x.VolumeId +func (m *SdkVolumeCloneResponse) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } // Defines the request to delete a volume type SdkVolumeDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of volume to delete - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeDeleteRequest) Reset() { - *x = SdkVolumeDeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[155] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeDeleteRequest) Reset() { *m = SdkVolumeDeleteRequest{} } +func (m *SdkVolumeDeleteRequest) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeDeleteRequest) ProtoMessage() {} +func (*SdkVolumeDeleteRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{155} } - -func (x *SdkVolumeDeleteRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeDeleteRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeDeleteRequest.Unmarshal(m, b) } - -func (*SdkVolumeDeleteRequest) ProtoMessage() {} - -func (x *SdkVolumeDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[155] - 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) +func (m *SdkVolumeDeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeDeleteRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeDeleteRequest.ProtoReflect.Descriptor instead. -func (*SdkVolumeDeleteRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{155} +func (dst *SdkVolumeDeleteRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeDeleteRequest.Merge(dst, src) +} +func (m *SdkVolumeDeleteRequest) XXX_Size() int { + return xxx_messageInfo_SdkVolumeDeleteRequest.Size(m) } +func (m *SdkVolumeDeleteRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeDeleteRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeDeleteRequest proto.InternalMessageInfo -func (x *SdkVolumeDeleteRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +func (m *SdkVolumeDeleteRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } // Empty response type SdkVolumeDeleteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeDeleteResponse) Reset() { - *x = SdkVolumeDeleteResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[156] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeDeleteResponse) Reset() { *m = SdkVolumeDeleteResponse{} } +func (m *SdkVolumeDeleteResponse) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeDeleteResponse) ProtoMessage() {} +func (*SdkVolumeDeleteResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{156} } - -func (x *SdkVolumeDeleteResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeDeleteResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeDeleteResponse.Unmarshal(m, b) } - -func (*SdkVolumeDeleteResponse) ProtoMessage() {} - -func (x *SdkVolumeDeleteResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[156] - 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) +func (m *SdkVolumeDeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeDeleteResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeDeleteResponse.ProtoReflect.Descriptor instead. -func (*SdkVolumeDeleteResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{156} +func (dst *SdkVolumeDeleteResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeDeleteResponse.Merge(dst, src) +} +func (m *SdkVolumeDeleteResponse) XXX_Size() int { + return xxx_messageInfo_SdkVolumeDeleteResponse.Size(m) +} +func (m *SdkVolumeDeleteResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeDeleteResponse.DiscardUnknown(m) } +var xxx_messageInfo_SdkVolumeDeleteResponse proto.InternalMessageInfo + // Defines the request to inspect a volume type SdkVolumeInspectRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of volume to inspect - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // Options during inspection - Options *VolumeInspectOptions `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` + Options *VolumeInspectOptions `protobuf:"bytes,2,opt,name=options" json:"options,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeInspectRequest) Reset() { - *x = SdkVolumeInspectRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[157] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeInspectRequest) Reset() { *m = SdkVolumeInspectRequest{} } +func (m *SdkVolumeInspectRequest) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeInspectRequest) ProtoMessage() {} +func (*SdkVolumeInspectRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{157} } - -func (x *SdkVolumeInspectRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeInspectRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeInspectRequest.Unmarshal(m, b) } - -func (*SdkVolumeInspectRequest) ProtoMessage() {} - -func (x *SdkVolumeInspectRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[157] - 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) +func (m *SdkVolumeInspectRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeInspectRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeInspectRequest.ProtoReflect.Descriptor instead. -func (*SdkVolumeInspectRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{157} +func (dst *SdkVolumeInspectRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeInspectRequest.Merge(dst, src) +} +func (m *SdkVolumeInspectRequest) XXX_Size() int { + return xxx_messageInfo_SdkVolumeInspectRequest.Size(m) } +func (m *SdkVolumeInspectRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeInspectRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeInspectRequest proto.InternalMessageInfo -func (x *SdkVolumeInspectRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +func (m *SdkVolumeInspectRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *SdkVolumeInspectRequest) GetOptions() *VolumeInspectOptions { - if x != nil { - return x.Options +func (m *SdkVolumeInspectRequest) GetOptions() *VolumeInspectOptions { + if m != nil { + return m.Options } return nil } // Defines the response when inspecting a volume type SdkVolumeInspectResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Information about the volume - Volume *Volume `protobuf:"bytes,1,opt,name=volume,proto3" json:"volume,omitempty"` + Volume *Volume `protobuf:"bytes,1,opt,name=volume" json:"volume,omitempty"` // Name of volume - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` // Volume labels - Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Labels map[string]string `protobuf:"bytes,3,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeInspectResponse) Reset() { - *x = SdkVolumeInspectResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[158] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeInspectResponse) Reset() { *m = SdkVolumeInspectResponse{} } +func (m *SdkVolumeInspectResponse) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeInspectResponse) ProtoMessage() {} +func (*SdkVolumeInspectResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{158} } - -func (x *SdkVolumeInspectResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeInspectResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeInspectResponse.Unmarshal(m, b) } - -func (*SdkVolumeInspectResponse) ProtoMessage() {} - -func (x *SdkVolumeInspectResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[158] - 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) +func (m *SdkVolumeInspectResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeInspectResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeInspectResponse.ProtoReflect.Descriptor instead. -func (*SdkVolumeInspectResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{158} +func (dst *SdkVolumeInspectResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeInspectResponse.Merge(dst, src) +} +func (m *SdkVolumeInspectResponse) XXX_Size() int { + return xxx_messageInfo_SdkVolumeInspectResponse.Size(m) +} +func (m *SdkVolumeInspectResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeInspectResponse.DiscardUnknown(m) } -func (x *SdkVolumeInspectResponse) GetVolume() *Volume { - if x != nil { - return x.Volume +var xxx_messageInfo_SdkVolumeInspectResponse proto.InternalMessageInfo + +func (m *SdkVolumeInspectResponse) GetVolume() *Volume { + if m != nil { + return m.Volume } return nil } -func (x *SdkVolumeInspectResponse) GetName() string { - if x != nil { - return x.Name +func (m *SdkVolumeInspectResponse) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *SdkVolumeInspectResponse) GetLabels() map[string]string { - if x != nil { - return x.Labels +func (m *SdkVolumeInspectResponse) GetLabels() map[string]string { + if m != nil { + return m.Labels } return nil } // Defines the request to inspect volumes using a filter type SdkVolumeInspectWithFiltersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // (optional) Name to search - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` // (optional) Labels to search - Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Labels map[string]string `protobuf:"bytes,3,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // (optional) Ownership to match - Ownership *Ownership `protobuf:"bytes,4,opt,name=ownership,proto3" json:"ownership,omitempty"` + Ownership *Ownership `protobuf:"bytes,4,opt,name=ownership" json:"ownership,omitempty"` // (optional) Group to match - Group *Group `protobuf:"bytes,5,opt,name=group,proto3" json:"group,omitempty"` + Group *Group `protobuf:"bytes,5,opt,name=group" json:"group,omitempty"` // Options during inspection - Options *VolumeInspectOptions `protobuf:"bytes,6,opt,name=options,proto3" json:"options,omitempty"` + Options *VolumeInspectOptions `protobuf:"bytes,6,opt,name=options" json:"options,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeInspectWithFiltersRequest) Reset() { - *x = SdkVolumeInspectWithFiltersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[159] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeInspectWithFiltersRequest) Reset() { *m = SdkVolumeInspectWithFiltersRequest{} } +func (m *SdkVolumeInspectWithFiltersRequest) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeInspectWithFiltersRequest) ProtoMessage() {} +func (*SdkVolumeInspectWithFiltersRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{159} } - -func (x *SdkVolumeInspectWithFiltersRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeInspectWithFiltersRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeInspectWithFiltersRequest.Unmarshal(m, b) } - -func (*SdkVolumeInspectWithFiltersRequest) ProtoMessage() {} - -func (x *SdkVolumeInspectWithFiltersRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[159] - 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) +func (m *SdkVolumeInspectWithFiltersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeInspectWithFiltersRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeInspectWithFiltersRequest.ProtoReflect.Descriptor instead. -func (*SdkVolumeInspectWithFiltersRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{159} +func (dst *SdkVolumeInspectWithFiltersRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeInspectWithFiltersRequest.Merge(dst, src) +} +func (m *SdkVolumeInspectWithFiltersRequest) XXX_Size() int { + return xxx_messageInfo_SdkVolumeInspectWithFiltersRequest.Size(m) } +func (m *SdkVolumeInspectWithFiltersRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeInspectWithFiltersRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeInspectWithFiltersRequest proto.InternalMessageInfo -func (x *SdkVolumeInspectWithFiltersRequest) GetName() string { - if x != nil { - return x.Name +func (m *SdkVolumeInspectWithFiltersRequest) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *SdkVolumeInspectWithFiltersRequest) GetLabels() map[string]string { - if x != nil { - return x.Labels +func (m *SdkVolumeInspectWithFiltersRequest) GetLabels() map[string]string { + if m != nil { + return m.Labels } return nil } -func (x *SdkVolumeInspectWithFiltersRequest) GetOwnership() *Ownership { - if x != nil { - return x.Ownership +func (m *SdkVolumeInspectWithFiltersRequest) GetOwnership() *Ownership { + if m != nil { + return m.Ownership } return nil } -func (x *SdkVolumeInspectWithFiltersRequest) GetGroup() *Group { - if x != nil { - return x.Group +func (m *SdkVolumeInspectWithFiltersRequest) GetGroup() *Group { + if m != nil { + return m.Group } return nil } -func (x *SdkVolumeInspectWithFiltersRequest) GetOptions() *VolumeInspectOptions { - if x != nil { - return x.Options +func (m *SdkVolumeInspectWithFiltersRequest) GetOptions() *VolumeInspectOptions { + if m != nil { + return m.Options } return nil } // Defines the response when inspecting volumes using a filter type SdkVolumeInspectWithFiltersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // List of `SdkVolumeInspectResponse` objects describing the volumes - Volumes []*SdkVolumeInspectResponse `protobuf:"bytes,1,rep,name=volumes,proto3" json:"volumes,omitempty"` + Volumes []*SdkVolumeInspectResponse `protobuf:"bytes,1,rep,name=volumes" json:"volumes,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeInspectWithFiltersResponse) Reset() { - *x = SdkVolumeInspectWithFiltersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[160] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeInspectWithFiltersResponse) Reset() { *m = SdkVolumeInspectWithFiltersResponse{} } +func (m *SdkVolumeInspectWithFiltersResponse) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeInspectWithFiltersResponse) ProtoMessage() {} +func (*SdkVolumeInspectWithFiltersResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{160} } - -func (x *SdkVolumeInspectWithFiltersResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeInspectWithFiltersResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeInspectWithFiltersResponse.Unmarshal(m, b) } - -func (*SdkVolumeInspectWithFiltersResponse) ProtoMessage() {} - -func (x *SdkVolumeInspectWithFiltersResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[160] - 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) +func (m *SdkVolumeInspectWithFiltersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeInspectWithFiltersResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeInspectWithFiltersResponse.ProtoReflect.Descriptor instead. -func (*SdkVolumeInspectWithFiltersResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{160} +func (dst *SdkVolumeInspectWithFiltersResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeInspectWithFiltersResponse.Merge(dst, src) +} +func (m *SdkVolumeInspectWithFiltersResponse) XXX_Size() int { + return xxx_messageInfo_SdkVolumeInspectWithFiltersResponse.Size(m) +} +func (m *SdkVolumeInspectWithFiltersResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeInspectWithFiltersResponse.DiscardUnknown(m) } -func (x *SdkVolumeInspectWithFiltersResponse) GetVolumes() []*SdkVolumeInspectResponse { - if x != nil { - return x.Volumes +var xxx_messageInfo_SdkVolumeInspectWithFiltersResponse proto.InternalMessageInfo + +func (m *SdkVolumeInspectWithFiltersResponse) GetVolumes() []*SdkVolumeInspectResponse { + if m != nil { + return m.Volumes } return nil } // This request is used to adjust or set new values in the volume type SdkVolumeUpdateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of the volume to update - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // Change label values. Some of these values may not be able to be changed. // New labels will be added to the current volume labels. To delete a label, set the // value of the label to an empty string. - Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Labels map[string]string `protobuf:"bytes,3,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // VolumeSpecUpdate provides a method to request that certain values // in the VolumeSpec are changed. This is necessary as a separate variable // because values like int and bool in the VolumeSpec cannot be determined @@ -16610,1081 +15674,922 @@ type SdkVolumeUpdateRequest struct { // * To resize the volume: Set a new value in spec.size_opt.size. // * To change number of replicas: Adjust spec.ha_level_opt.ha_level. // * To change the I/O Profile: Adjust spec.io_profile_opt.io_profile. - Spec *VolumeSpecUpdate `protobuf:"bytes,4,opt,name=spec,proto3" json:"spec,omitempty"` + Spec *VolumeSpecUpdate `protobuf:"bytes,4,opt,name=spec" json:"spec,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeUpdateRequest) Reset() { - *x = SdkVolumeUpdateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[161] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeUpdateRequest) Reset() { *m = SdkVolumeUpdateRequest{} } +func (m *SdkVolumeUpdateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeUpdateRequest) ProtoMessage() {} +func (*SdkVolumeUpdateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{161} } - -func (x *SdkVolumeUpdateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeUpdateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeUpdateRequest.Unmarshal(m, b) } - -func (*SdkVolumeUpdateRequest) ProtoMessage() {} - -func (x *SdkVolumeUpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[161] - 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) +func (m *SdkVolumeUpdateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeUpdateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeUpdateRequest.ProtoReflect.Descriptor instead. -func (*SdkVolumeUpdateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{161} +func (dst *SdkVolumeUpdateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeUpdateRequest.Merge(dst, src) +} +func (m *SdkVolumeUpdateRequest) XXX_Size() int { + return xxx_messageInfo_SdkVolumeUpdateRequest.Size(m) +} +func (m *SdkVolumeUpdateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeUpdateRequest.DiscardUnknown(m) } -func (x *SdkVolumeUpdateRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +var xxx_messageInfo_SdkVolumeUpdateRequest proto.InternalMessageInfo + +func (m *SdkVolumeUpdateRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *SdkVolumeUpdateRequest) GetLabels() map[string]string { - if x != nil { - return x.Labels +func (m *SdkVolumeUpdateRequest) GetLabels() map[string]string { + if m != nil { + return m.Labels } return nil } -func (x *SdkVolumeUpdateRequest) GetSpec() *VolumeSpecUpdate { - if x != nil { - return x.Spec +func (m *SdkVolumeUpdateRequest) GetSpec() *VolumeSpecUpdate { + if m != nil { + return m.Spec } return nil } // Empty response type SdkVolumeUpdateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeUpdateResponse) Reset() { - *x = SdkVolumeUpdateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[162] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeUpdateResponse) Reset() { *m = SdkVolumeUpdateResponse{} } +func (m *SdkVolumeUpdateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeUpdateResponse) ProtoMessage() {} +func (*SdkVolumeUpdateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{162} } - -func (x *SdkVolumeUpdateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeUpdateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeUpdateResponse.Unmarshal(m, b) } - -func (*SdkVolumeUpdateResponse) ProtoMessage() {} - -func (x *SdkVolumeUpdateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[162] - 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) +func (m *SdkVolumeUpdateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeUpdateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeUpdateResponse.ProtoReflect.Descriptor instead. -func (*SdkVolumeUpdateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{162} +func (dst *SdkVolumeUpdateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeUpdateResponse.Merge(dst, src) +} +func (m *SdkVolumeUpdateResponse) XXX_Size() int { + return xxx_messageInfo_SdkVolumeUpdateResponse.Size(m) +} +func (m *SdkVolumeUpdateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeUpdateResponse.DiscardUnknown(m) } -// Defines a request to retrieve volume statistics -type SdkVolumeStatsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +var xxx_messageInfo_SdkVolumeUpdateResponse proto.InternalMessageInfo +// Defines a request to retreive volume statistics +type SdkVolumeStatsRequest struct { // Id of the volume to get statistics - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // When set to false the stats are in /proc/diskstats style stats. // When set to true the stats are stats for a specific duration. - NotCumulative bool `protobuf:"varint,2,opt,name=not_cumulative,json=notCumulative,proto3" json:"not_cumulative,omitempty"` + NotCumulative bool `protobuf:"varint,2,opt,name=not_cumulative,json=notCumulative" json:"not_cumulative,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeStatsRequest) Reset() { - *x = SdkVolumeStatsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[163] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeStatsRequest) Reset() { *m = SdkVolumeStatsRequest{} } +func (m *SdkVolumeStatsRequest) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeStatsRequest) ProtoMessage() {} +func (*SdkVolumeStatsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{163} } - -func (x *SdkVolumeStatsRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeStatsRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeStatsRequest.Unmarshal(m, b) } - -func (*SdkVolumeStatsRequest) ProtoMessage() {} - -func (x *SdkVolumeStatsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[163] - 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) +func (m *SdkVolumeStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeStatsRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeStatsRequest.ProtoReflect.Descriptor instead. -func (*SdkVolumeStatsRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{163} +func (dst *SdkVolumeStatsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeStatsRequest.Merge(dst, src) +} +func (m *SdkVolumeStatsRequest) XXX_Size() int { + return xxx_messageInfo_SdkVolumeStatsRequest.Size(m) +} +func (m *SdkVolumeStatsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeStatsRequest.DiscardUnknown(m) } -func (x *SdkVolumeStatsRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +var xxx_messageInfo_SdkVolumeStatsRequest proto.InternalMessageInfo + +func (m *SdkVolumeStatsRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *SdkVolumeStatsRequest) GetNotCumulative() bool { - if x != nil { - return x.NotCumulative +func (m *SdkVolumeStatsRequest) GetNotCumulative() bool { + if m != nil { + return m.NotCumulative } return false } // Defines a response containing drive statistics type SdkVolumeStatsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Statistics for a single volume - Stats *Stats `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats,omitempty"` + Stats *Stats `protobuf:"bytes,1,opt,name=stats" json:"stats,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeStatsResponse) Reset() { - *x = SdkVolumeStatsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[164] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeStatsResponse) Reset() { *m = SdkVolumeStatsResponse{} } +func (m *SdkVolumeStatsResponse) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeStatsResponse) ProtoMessage() {} +func (*SdkVolumeStatsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{164} } - -func (x *SdkVolumeStatsResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeStatsResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeStatsResponse.Unmarshal(m, b) } - -func (*SdkVolumeStatsResponse) ProtoMessage() {} - -func (x *SdkVolumeStatsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[164] - 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) +func (m *SdkVolumeStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeStatsResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeStatsResponse.ProtoReflect.Descriptor instead. -func (*SdkVolumeStatsResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{164} +func (dst *SdkVolumeStatsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeStatsResponse.Merge(dst, src) +} +func (m *SdkVolumeStatsResponse) XXX_Size() int { + return xxx_messageInfo_SdkVolumeStatsResponse.Size(m) } +func (m *SdkVolumeStatsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeStatsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeStatsResponse proto.InternalMessageInfo -func (x *SdkVolumeStatsResponse) GetStats() *Stats { - if x != nil { - return x.Stats +func (m *SdkVolumeStatsResponse) GetStats() *Stats { + if m != nil { + return m.Stats } return nil } // Defines request to retrieve volume/snapshot capacity usage details type SdkVolumeCapacityUsageRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of the snapshot/volume to get capacity usage details - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeCapacityUsageRequest) Reset() { - *x = SdkVolumeCapacityUsageRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[165] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeCapacityUsageRequest) Reset() { *m = SdkVolumeCapacityUsageRequest{} } +func (m *SdkVolumeCapacityUsageRequest) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeCapacityUsageRequest) ProtoMessage() {} +func (*SdkVolumeCapacityUsageRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{165} } - -func (x *SdkVolumeCapacityUsageRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeCapacityUsageRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeCapacityUsageRequest.Unmarshal(m, b) } - -func (*SdkVolumeCapacityUsageRequest) ProtoMessage() {} - -func (x *SdkVolumeCapacityUsageRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[165] - 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) +func (m *SdkVolumeCapacityUsageRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeCapacityUsageRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeCapacityUsageRequest.ProtoReflect.Descriptor instead. -func (*SdkVolumeCapacityUsageRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{165} +func (dst *SdkVolumeCapacityUsageRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeCapacityUsageRequest.Merge(dst, src) +} +func (m *SdkVolumeCapacityUsageRequest) XXX_Size() int { + return xxx_messageInfo_SdkVolumeCapacityUsageRequest.Size(m) } +func (m *SdkVolumeCapacityUsageRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeCapacityUsageRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeCapacityUsageRequest proto.InternalMessageInfo -func (x *SdkVolumeCapacityUsageRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +func (m *SdkVolumeCapacityUsageRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } // Defines response containing volume/snapshot capacity usage details type SdkVolumeCapacityUsageResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // CapacityUsage details - CapacityUsageInfo *CapacityUsageInfo `protobuf:"bytes,1,opt,name=capacity_usage_info,json=capacityUsageInfo,proto3" json:"capacity_usage_info,omitempty"` + CapacityUsageInfo *CapacityUsageInfo `protobuf:"bytes,1,opt,name=capacity_usage_info,json=capacityUsageInfo" json:"capacity_usage_info,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeCapacityUsageResponse) Reset() { - *x = SdkVolumeCapacityUsageResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[166] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeCapacityUsageResponse) Reset() { *m = SdkVolumeCapacityUsageResponse{} } +func (m *SdkVolumeCapacityUsageResponse) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeCapacityUsageResponse) ProtoMessage() {} +func (*SdkVolumeCapacityUsageResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{166} } - -func (x *SdkVolumeCapacityUsageResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeCapacityUsageResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeCapacityUsageResponse.Unmarshal(m, b) } - -func (*SdkVolumeCapacityUsageResponse) ProtoMessage() {} - -func (x *SdkVolumeCapacityUsageResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[166] - 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) +func (m *SdkVolumeCapacityUsageResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeCapacityUsageResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeCapacityUsageResponse.ProtoReflect.Descriptor instead. -func (*SdkVolumeCapacityUsageResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{166} +func (dst *SdkVolumeCapacityUsageResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeCapacityUsageResponse.Merge(dst, src) +} +func (m *SdkVolumeCapacityUsageResponse) XXX_Size() int { + return xxx_messageInfo_SdkVolumeCapacityUsageResponse.Size(m) } +func (m *SdkVolumeCapacityUsageResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeCapacityUsageResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeCapacityUsageResponse proto.InternalMessageInfo -func (x *SdkVolumeCapacityUsageResponse) GetCapacityUsageInfo() *CapacityUsageInfo { - if x != nil { - return x.CapacityUsageInfo +func (m *SdkVolumeCapacityUsageResponse) GetCapacityUsageInfo() *CapacityUsageInfo { + if m != nil { + return m.CapacityUsageInfo } return nil } // Defines a request to list volumes type SdkVolumeEnumerateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeEnumerateRequest) Reset() { - *x = SdkVolumeEnumerateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[167] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeEnumerateRequest) Reset() { *m = SdkVolumeEnumerateRequest{} } +func (m *SdkVolumeEnumerateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeEnumerateRequest) ProtoMessage() {} +func (*SdkVolumeEnumerateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{167} } - -func (x *SdkVolumeEnumerateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeEnumerateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeEnumerateRequest.Unmarshal(m, b) } - -func (*SdkVolumeEnumerateRequest) ProtoMessage() {} - -func (x *SdkVolumeEnumerateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[167] - 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) +func (m *SdkVolumeEnumerateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeEnumerateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeEnumerateRequest.ProtoReflect.Descriptor instead. -func (*SdkVolumeEnumerateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{167} +func (dst *SdkVolumeEnumerateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeEnumerateRequest.Merge(dst, src) +} +func (m *SdkVolumeEnumerateRequest) XXX_Size() int { + return xxx_messageInfo_SdkVolumeEnumerateRequest.Size(m) +} +func (m *SdkVolumeEnumerateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeEnumerateRequest.DiscardUnknown(m) } +var xxx_messageInfo_SdkVolumeEnumerateRequest proto.InternalMessageInfo + // Defines the response when listing volumes type SdkVolumeEnumerateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // List of volumes matching label - VolumeIds []string `protobuf:"bytes,1,rep,name=volume_ids,json=volumeIds,proto3" json:"volume_ids,omitempty"` + VolumeIds []string `protobuf:"bytes,1,rep,name=volume_ids,json=volumeIds" json:"volume_ids,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeEnumerateResponse) Reset() { - *x = SdkVolumeEnumerateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[168] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeEnumerateResponse) Reset() { *m = SdkVolumeEnumerateResponse{} } +func (m *SdkVolumeEnumerateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeEnumerateResponse) ProtoMessage() {} +func (*SdkVolumeEnumerateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{168} } - -func (x *SdkVolumeEnumerateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeEnumerateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeEnumerateResponse.Unmarshal(m, b) } - -func (*SdkVolumeEnumerateResponse) ProtoMessage() {} - -func (x *SdkVolumeEnumerateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[168] - 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) +func (m *SdkVolumeEnumerateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeEnumerateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeEnumerateResponse.ProtoReflect.Descriptor instead. -func (*SdkVolumeEnumerateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{168} +func (dst *SdkVolumeEnumerateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeEnumerateResponse.Merge(dst, src) +} +func (m *SdkVolumeEnumerateResponse) XXX_Size() int { + return xxx_messageInfo_SdkVolumeEnumerateResponse.Size(m) } +func (m *SdkVolumeEnumerateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeEnumerateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeEnumerateResponse proto.InternalMessageInfo -func (x *SdkVolumeEnumerateResponse) GetVolumeIds() []string { - if x != nil { - return x.VolumeIds +func (m *SdkVolumeEnumerateResponse) GetVolumeIds() []string { + if m != nil { + return m.VolumeIds } return nil } // Defines a request to list volumes type SdkVolumeEnumerateWithFiltersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // (optional) Name to search - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` // (optional) Labels to search - Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Labels map[string]string `protobuf:"bytes,3,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // (optional) Ownership to match - Ownership *Ownership `protobuf:"bytes,4,opt,name=ownership,proto3" json:"ownership,omitempty"` + Ownership *Ownership `protobuf:"bytes,4,opt,name=ownership" json:"ownership,omitempty"` // (optional) Group to match - Group *Group `protobuf:"bytes,5,opt,name=group,proto3" json:"group,omitempty"` + Group *Group `protobuf:"bytes,5,opt,name=group" json:"group,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeEnumerateWithFiltersRequest) Reset() { - *x = SdkVolumeEnumerateWithFiltersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[169] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeEnumerateWithFiltersRequest) Reset() { *m = SdkVolumeEnumerateWithFiltersRequest{} } +func (m *SdkVolumeEnumerateWithFiltersRequest) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeEnumerateWithFiltersRequest) ProtoMessage() {} +func (*SdkVolumeEnumerateWithFiltersRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{169} } - -func (x *SdkVolumeEnumerateWithFiltersRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeEnumerateWithFiltersRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeEnumerateWithFiltersRequest.Unmarshal(m, b) } - -func (*SdkVolumeEnumerateWithFiltersRequest) ProtoMessage() {} - -func (x *SdkVolumeEnumerateWithFiltersRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[169] - 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) +func (m *SdkVolumeEnumerateWithFiltersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeEnumerateWithFiltersRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeEnumerateWithFiltersRequest.ProtoReflect.Descriptor instead. -func (*SdkVolumeEnumerateWithFiltersRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{169} +func (dst *SdkVolumeEnumerateWithFiltersRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeEnumerateWithFiltersRequest.Merge(dst, src) +} +func (m *SdkVolumeEnumerateWithFiltersRequest) XXX_Size() int { + return xxx_messageInfo_SdkVolumeEnumerateWithFiltersRequest.Size(m) } +func (m *SdkVolumeEnumerateWithFiltersRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeEnumerateWithFiltersRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeEnumerateWithFiltersRequest proto.InternalMessageInfo -func (x *SdkVolumeEnumerateWithFiltersRequest) GetName() string { - if x != nil { - return x.Name +func (m *SdkVolumeEnumerateWithFiltersRequest) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *SdkVolumeEnumerateWithFiltersRequest) GetLabels() map[string]string { - if x != nil { - return x.Labels +func (m *SdkVolumeEnumerateWithFiltersRequest) GetLabels() map[string]string { + if m != nil { + return m.Labels } return nil } -func (x *SdkVolumeEnumerateWithFiltersRequest) GetOwnership() *Ownership { - if x != nil { - return x.Ownership +func (m *SdkVolumeEnumerateWithFiltersRequest) GetOwnership() *Ownership { + if m != nil { + return m.Ownership } return nil } -func (x *SdkVolumeEnumerateWithFiltersRequest) GetGroup() *Group { - if x != nil { - return x.Group +func (m *SdkVolumeEnumerateWithFiltersRequest) GetGroup() *Group { + if m != nil { + return m.Group } return nil } // Defines the response when listing volumes type SdkVolumeEnumerateWithFiltersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // List of volumes matching label - VolumeIds []string `protobuf:"bytes,1,rep,name=volume_ids,json=volumeIds,proto3" json:"volume_ids,omitempty"` + VolumeIds []string `protobuf:"bytes,1,rep,name=volume_ids,json=volumeIds" json:"volume_ids,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeEnumerateWithFiltersResponse) Reset() { - *x = SdkVolumeEnumerateWithFiltersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[170] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeEnumerateWithFiltersResponse) Reset() { *m = SdkVolumeEnumerateWithFiltersResponse{} } +func (m *SdkVolumeEnumerateWithFiltersResponse) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeEnumerateWithFiltersResponse) ProtoMessage() {} +func (*SdkVolumeEnumerateWithFiltersResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{170} } - -func (x *SdkVolumeEnumerateWithFiltersResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeEnumerateWithFiltersResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeEnumerateWithFiltersResponse.Unmarshal(m, b) } - -func (*SdkVolumeEnumerateWithFiltersResponse) ProtoMessage() {} - -func (x *SdkVolumeEnumerateWithFiltersResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[170] - 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) +func (m *SdkVolumeEnumerateWithFiltersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeEnumerateWithFiltersResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeEnumerateWithFiltersResponse.ProtoReflect.Descriptor instead. -func (*SdkVolumeEnumerateWithFiltersResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{170} +func (dst *SdkVolumeEnumerateWithFiltersResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeEnumerateWithFiltersResponse.Merge(dst, src) +} +func (m *SdkVolumeEnumerateWithFiltersResponse) XXX_Size() int { + return xxx_messageInfo_SdkVolumeEnumerateWithFiltersResponse.Size(m) } +func (m *SdkVolumeEnumerateWithFiltersResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeEnumerateWithFiltersResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeEnumerateWithFiltersResponse proto.InternalMessageInfo -func (x *SdkVolumeEnumerateWithFiltersResponse) GetVolumeIds() []string { - if x != nil { - return x.VolumeIds +func (m *SdkVolumeEnumerateWithFiltersResponse) GetVolumeIds() []string { + if m != nil { + return m.VolumeIds } return nil } // Defines the request when creating a snapshot from a volume. type SdkVolumeSnapshotCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of volume to take the snapshot from - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // Name of the snapshot. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` // Labels to apply to snapshot - Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Labels map[string]string `protobuf:"bytes,3,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeSnapshotCreateRequest) Reset() { - *x = SdkVolumeSnapshotCreateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[171] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeSnapshotCreateRequest) Reset() { *m = SdkVolumeSnapshotCreateRequest{} } +func (m *SdkVolumeSnapshotCreateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeSnapshotCreateRequest) ProtoMessage() {} +func (*SdkVolumeSnapshotCreateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{171} } - -func (x *SdkVolumeSnapshotCreateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeSnapshotCreateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeSnapshotCreateRequest.Unmarshal(m, b) } - -func (*SdkVolumeSnapshotCreateRequest) ProtoMessage() {} - -func (x *SdkVolumeSnapshotCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[171] - 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) +func (m *SdkVolumeSnapshotCreateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeSnapshotCreateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeSnapshotCreateRequest.ProtoReflect.Descriptor instead. -func (*SdkVolumeSnapshotCreateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{171} +func (dst *SdkVolumeSnapshotCreateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeSnapshotCreateRequest.Merge(dst, src) +} +func (m *SdkVolumeSnapshotCreateRequest) XXX_Size() int { + return xxx_messageInfo_SdkVolumeSnapshotCreateRequest.Size(m) } +func (m *SdkVolumeSnapshotCreateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeSnapshotCreateRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeSnapshotCreateRequest proto.InternalMessageInfo -func (x *SdkVolumeSnapshotCreateRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +func (m *SdkVolumeSnapshotCreateRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *SdkVolumeSnapshotCreateRequest) GetName() string { - if x != nil { - return x.Name +func (m *SdkVolumeSnapshotCreateRequest) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *SdkVolumeSnapshotCreateRequest) GetLabels() map[string]string { - if x != nil { - return x.Labels +func (m *SdkVolumeSnapshotCreateRequest) GetLabels() map[string]string { + if m != nil { + return m.Labels } return nil } // Defines a response after creating a snapshot of a volume type SdkVolumeSnapshotCreateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of immutable snapshot - SnapshotId string `protobuf:"bytes,1,opt,name=snapshot_id,json=snapshotId,proto3" json:"snapshot_id,omitempty"` + SnapshotId string `protobuf:"bytes,1,opt,name=snapshot_id,json=snapshotId" json:"snapshot_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeSnapshotCreateResponse) Reset() { - *x = SdkVolumeSnapshotCreateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[172] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeSnapshotCreateResponse) Reset() { *m = SdkVolumeSnapshotCreateResponse{} } +func (m *SdkVolumeSnapshotCreateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeSnapshotCreateResponse) ProtoMessage() {} +func (*SdkVolumeSnapshotCreateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{172} } - -func (x *SdkVolumeSnapshotCreateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeSnapshotCreateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeSnapshotCreateResponse.Unmarshal(m, b) +} +func (m *SdkVolumeSnapshotCreateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeSnapshotCreateResponse.Marshal(b, m, deterministic) +} +func (dst *SdkVolumeSnapshotCreateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeSnapshotCreateResponse.Merge(dst, src) +} +func (m *SdkVolumeSnapshotCreateResponse) XXX_Size() int { + return xxx_messageInfo_SdkVolumeSnapshotCreateResponse.Size(m) +} +func (m *SdkVolumeSnapshotCreateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeSnapshotCreateResponse.DiscardUnknown(m) } -func (*SdkVolumeSnapshotCreateResponse) ProtoMessage() {} +var xxx_messageInfo_SdkVolumeSnapshotCreateResponse proto.InternalMessageInfo -func (x *SdkVolumeSnapshotCreateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[172] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (m *SdkVolumeSnapshotCreateResponse) GetSnapshotId() string { + if m != nil { + return m.SnapshotId } - return mi.MessageOf(x) -} - -// Deprecated: Use SdkVolumeSnapshotCreateResponse.ProtoReflect.Descriptor instead. -func (*SdkVolumeSnapshotCreateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{172} -} - -func (x *SdkVolumeSnapshotCreateResponse) GetSnapshotId() string { - if x != nil { - return x.SnapshotId - } - return "" + return "" } // Defines a request to restore a volume to a snapshot type SdkVolumeSnapshotRestoreRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of volume - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // Snapshot id to apply to `volume_id` - SnapshotId string `protobuf:"bytes,2,opt,name=snapshot_id,json=snapshotId,proto3" json:"snapshot_id,omitempty"` + SnapshotId string `protobuf:"bytes,2,opt,name=snapshot_id,json=snapshotId" json:"snapshot_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeSnapshotRestoreRequest) Reset() { - *x = SdkVolumeSnapshotRestoreRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[173] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeSnapshotRestoreRequest) Reset() { *m = SdkVolumeSnapshotRestoreRequest{} } +func (m *SdkVolumeSnapshotRestoreRequest) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeSnapshotRestoreRequest) ProtoMessage() {} +func (*SdkVolumeSnapshotRestoreRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{173} } - -func (x *SdkVolumeSnapshotRestoreRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeSnapshotRestoreRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeSnapshotRestoreRequest.Unmarshal(m, b) } - -func (*SdkVolumeSnapshotRestoreRequest) ProtoMessage() {} - -func (x *SdkVolumeSnapshotRestoreRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[173] - 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) +func (m *SdkVolumeSnapshotRestoreRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeSnapshotRestoreRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeSnapshotRestoreRequest.ProtoReflect.Descriptor instead. -func (*SdkVolumeSnapshotRestoreRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{173} +func (dst *SdkVolumeSnapshotRestoreRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeSnapshotRestoreRequest.Merge(dst, src) +} +func (m *SdkVolumeSnapshotRestoreRequest) XXX_Size() int { + return xxx_messageInfo_SdkVolumeSnapshotRestoreRequest.Size(m) } +func (m *SdkVolumeSnapshotRestoreRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeSnapshotRestoreRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeSnapshotRestoreRequest proto.InternalMessageInfo -func (x *SdkVolumeSnapshotRestoreRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +func (m *SdkVolumeSnapshotRestoreRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *SdkVolumeSnapshotRestoreRequest) GetSnapshotId() string { - if x != nil { - return x.SnapshotId +func (m *SdkVolumeSnapshotRestoreRequest) GetSnapshotId() string { + if m != nil { + return m.SnapshotId } return "" } // Empty response type SdkVolumeSnapshotRestoreResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeSnapshotRestoreResponse) Reset() { - *x = SdkVolumeSnapshotRestoreResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[174] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeSnapshotRestoreResponse) Reset() { *m = SdkVolumeSnapshotRestoreResponse{} } +func (m *SdkVolumeSnapshotRestoreResponse) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeSnapshotRestoreResponse) ProtoMessage() {} +func (*SdkVolumeSnapshotRestoreResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{174} } - -func (x *SdkVolumeSnapshotRestoreResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeSnapshotRestoreResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeSnapshotRestoreResponse.Unmarshal(m, b) } - -func (*SdkVolumeSnapshotRestoreResponse) ProtoMessage() {} - -func (x *SdkVolumeSnapshotRestoreResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[174] - 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) +func (m *SdkVolumeSnapshotRestoreResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeSnapshotRestoreResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeSnapshotRestoreResponse.ProtoReflect.Descriptor instead. -func (*SdkVolumeSnapshotRestoreResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{174} +func (dst *SdkVolumeSnapshotRestoreResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeSnapshotRestoreResponse.Merge(dst, src) +} +func (m *SdkVolumeSnapshotRestoreResponse) XXX_Size() int { + return xxx_messageInfo_SdkVolumeSnapshotRestoreResponse.Size(m) } +func (m *SdkVolumeSnapshotRestoreResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeSnapshotRestoreResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeSnapshotRestoreResponse proto.InternalMessageInfo // Defines a request to list the snaphots type SdkVolumeSnapshotEnumerateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Get the snapshots for this volume id - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeSnapshotEnumerateRequest) Reset() { - *x = SdkVolumeSnapshotEnumerateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[175] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeSnapshotEnumerateRequest) Reset() { *m = SdkVolumeSnapshotEnumerateRequest{} } +func (m *SdkVolumeSnapshotEnumerateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeSnapshotEnumerateRequest) ProtoMessage() {} +func (*SdkVolumeSnapshotEnumerateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{175} } - -func (x *SdkVolumeSnapshotEnumerateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeSnapshotEnumerateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeSnapshotEnumerateRequest.Unmarshal(m, b) } - -func (*SdkVolumeSnapshotEnumerateRequest) ProtoMessage() {} - -func (x *SdkVolumeSnapshotEnumerateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[175] - 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) +func (m *SdkVolumeSnapshotEnumerateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeSnapshotEnumerateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeSnapshotEnumerateRequest.ProtoReflect.Descriptor instead. -func (*SdkVolumeSnapshotEnumerateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{175} +func (dst *SdkVolumeSnapshotEnumerateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeSnapshotEnumerateRequest.Merge(dst, src) +} +func (m *SdkVolumeSnapshotEnumerateRequest) XXX_Size() int { + return xxx_messageInfo_SdkVolumeSnapshotEnumerateRequest.Size(m) +} +func (m *SdkVolumeSnapshotEnumerateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeSnapshotEnumerateRequest.DiscardUnknown(m) } -func (x *SdkVolumeSnapshotEnumerateRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +var xxx_messageInfo_SdkVolumeSnapshotEnumerateRequest proto.InternalMessageInfo + +func (m *SdkVolumeSnapshotEnumerateRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } // Defines a response when listing snapshots type SdkVolumeSnapshotEnumerateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // List of immutable snapshots - VolumeSnapshotIds []string `protobuf:"bytes,1,rep,name=volume_snapshot_ids,json=volumeSnapshotIds,proto3" json:"volume_snapshot_ids,omitempty"` + VolumeSnapshotIds []string `protobuf:"bytes,1,rep,name=volume_snapshot_ids,json=volumeSnapshotIds" json:"volume_snapshot_ids,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeSnapshotEnumerateResponse) Reset() { - *x = SdkVolumeSnapshotEnumerateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[176] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeSnapshotEnumerateResponse) Reset() { *m = SdkVolumeSnapshotEnumerateResponse{} } +func (m *SdkVolumeSnapshotEnumerateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeSnapshotEnumerateResponse) ProtoMessage() {} +func (*SdkVolumeSnapshotEnumerateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{176} } - -func (x *SdkVolumeSnapshotEnumerateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeSnapshotEnumerateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeSnapshotEnumerateResponse.Unmarshal(m, b) } - -func (*SdkVolumeSnapshotEnumerateResponse) ProtoMessage() {} - -func (x *SdkVolumeSnapshotEnumerateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[176] - 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) +func (m *SdkVolumeSnapshotEnumerateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeSnapshotEnumerateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeSnapshotEnumerateResponse.ProtoReflect.Descriptor instead. -func (*SdkVolumeSnapshotEnumerateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{176} +func (dst *SdkVolumeSnapshotEnumerateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeSnapshotEnumerateResponse.Merge(dst, src) +} +func (m *SdkVolumeSnapshotEnumerateResponse) XXX_Size() int { + return xxx_messageInfo_SdkVolumeSnapshotEnumerateResponse.Size(m) +} +func (m *SdkVolumeSnapshotEnumerateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeSnapshotEnumerateResponse.DiscardUnknown(m) } -func (x *SdkVolumeSnapshotEnumerateResponse) GetVolumeSnapshotIds() []string { - if x != nil { - return x.VolumeSnapshotIds +var xxx_messageInfo_SdkVolumeSnapshotEnumerateResponse proto.InternalMessageInfo + +func (m *SdkVolumeSnapshotEnumerateResponse) GetVolumeSnapshotIds() []string { + if m != nil { + return m.VolumeSnapshotIds } return nil } // Defines a request to list the snaphots type SdkVolumeSnapshotEnumerateWithFiltersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // (optional) Get the snapshots for this volume id - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // (optional) Get snapshots that match these labels - Labels map[string]string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Labels map[string]string `protobuf:"bytes,2,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeSnapshotEnumerateWithFiltersRequest) Reset() { - *x = SdkVolumeSnapshotEnumerateWithFiltersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[177] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeSnapshotEnumerateWithFiltersRequest) Reset() { + *m = SdkVolumeSnapshotEnumerateWithFiltersRequest{} } - -func (x *SdkVolumeSnapshotEnumerateWithFiltersRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeSnapshotEnumerateWithFiltersRequest) String() string { + return proto.CompactTextString(m) } - func (*SdkVolumeSnapshotEnumerateWithFiltersRequest) ProtoMessage() {} - -func (x *SdkVolumeSnapshotEnumerateWithFiltersRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[177] - 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 SdkVolumeSnapshotEnumerateWithFiltersRequest.ProtoReflect.Descriptor instead. func (*SdkVolumeSnapshotEnumerateWithFiltersRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{177} + return fileDescriptor_api_bc0eb0e06839944e, []int{177} +} +func (m *SdkVolumeSnapshotEnumerateWithFiltersRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeSnapshotEnumerateWithFiltersRequest.Unmarshal(m, b) +} +func (m *SdkVolumeSnapshotEnumerateWithFiltersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeSnapshotEnumerateWithFiltersRequest.Marshal(b, m, deterministic) +} +func (dst *SdkVolumeSnapshotEnumerateWithFiltersRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeSnapshotEnumerateWithFiltersRequest.Merge(dst, src) +} +func (m *SdkVolumeSnapshotEnumerateWithFiltersRequest) XXX_Size() int { + return xxx_messageInfo_SdkVolumeSnapshotEnumerateWithFiltersRequest.Size(m) +} +func (m *SdkVolumeSnapshotEnumerateWithFiltersRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeSnapshotEnumerateWithFiltersRequest.DiscardUnknown(m) } -func (x *SdkVolumeSnapshotEnumerateWithFiltersRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +var xxx_messageInfo_SdkVolumeSnapshotEnumerateWithFiltersRequest proto.InternalMessageInfo + +func (m *SdkVolumeSnapshotEnumerateWithFiltersRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *SdkVolumeSnapshotEnumerateWithFiltersRequest) GetLabels() map[string]string { - if x != nil { - return x.Labels +func (m *SdkVolumeSnapshotEnumerateWithFiltersRequest) GetLabels() map[string]string { + if m != nil { + return m.Labels } return nil } // Defines a response when listing snapshots type SdkVolumeSnapshotEnumerateWithFiltersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // List of immutable snapshots - VolumeSnapshotIds []string `protobuf:"bytes,1,rep,name=volume_snapshot_ids,json=volumeSnapshotIds,proto3" json:"volume_snapshot_ids,omitempty"` + VolumeSnapshotIds []string `protobuf:"bytes,1,rep,name=volume_snapshot_ids,json=volumeSnapshotIds" json:"volume_snapshot_ids,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeSnapshotEnumerateWithFiltersResponse) Reset() { - *x = SdkVolumeSnapshotEnumerateWithFiltersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[178] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeSnapshotEnumerateWithFiltersResponse) Reset() { + *m = SdkVolumeSnapshotEnumerateWithFiltersResponse{} } - -func (x *SdkVolumeSnapshotEnumerateWithFiltersResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeSnapshotEnumerateWithFiltersResponse) String() string { + return proto.CompactTextString(m) } - func (*SdkVolumeSnapshotEnumerateWithFiltersResponse) ProtoMessage() {} - -func (x *SdkVolumeSnapshotEnumerateWithFiltersResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[178] - 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 SdkVolumeSnapshotEnumerateWithFiltersResponse.ProtoReflect.Descriptor instead. func (*SdkVolumeSnapshotEnumerateWithFiltersResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{178} + return fileDescriptor_api_bc0eb0e06839944e, []int{178} +} +func (m *SdkVolumeSnapshotEnumerateWithFiltersResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeSnapshotEnumerateWithFiltersResponse.Unmarshal(m, b) +} +func (m *SdkVolumeSnapshotEnumerateWithFiltersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeSnapshotEnumerateWithFiltersResponse.Marshal(b, m, deterministic) } +func (dst *SdkVolumeSnapshotEnumerateWithFiltersResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeSnapshotEnumerateWithFiltersResponse.Merge(dst, src) +} +func (m *SdkVolumeSnapshotEnumerateWithFiltersResponse) XXX_Size() int { + return xxx_messageInfo_SdkVolumeSnapshotEnumerateWithFiltersResponse.Size(m) +} +func (m *SdkVolumeSnapshotEnumerateWithFiltersResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeSnapshotEnumerateWithFiltersResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeSnapshotEnumerateWithFiltersResponse proto.InternalMessageInfo -func (x *SdkVolumeSnapshotEnumerateWithFiltersResponse) GetVolumeSnapshotIds() []string { - if x != nil { - return x.VolumeSnapshotIds +func (m *SdkVolumeSnapshotEnumerateWithFiltersResponse) GetVolumeSnapshotIds() []string { + if m != nil { + return m.VolumeSnapshotIds } return nil } // Defines a request to update the snapshot schedule of a volume type SdkVolumeSnapshotScheduleUpdateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of volume - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // Names of schedule policies - SnapshotScheduleNames []string `protobuf:"bytes,2,rep,name=snapshot_schedule_names,json=snapshotScheduleNames,proto3" json:"snapshot_schedule_names,omitempty"` + SnapshotScheduleNames []string `protobuf:"bytes,2,rep,name=snapshot_schedule_names,json=snapshotScheduleNames" json:"snapshot_schedule_names,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeSnapshotScheduleUpdateRequest) Reset() { - *x = SdkVolumeSnapshotScheduleUpdateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[179] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeSnapshotScheduleUpdateRequest) Reset() { + *m = SdkVolumeSnapshotScheduleUpdateRequest{} } - -func (x *SdkVolumeSnapshotScheduleUpdateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeSnapshotScheduleUpdateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeSnapshotScheduleUpdateRequest) ProtoMessage() {} +func (*SdkVolumeSnapshotScheduleUpdateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{179} } - -func (*SdkVolumeSnapshotScheduleUpdateRequest) ProtoMessage() {} - -func (x *SdkVolumeSnapshotScheduleUpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[179] - 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) +func (m *SdkVolumeSnapshotScheduleUpdateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeSnapshotScheduleUpdateRequest.Unmarshal(m, b) } - -// Deprecated: Use SdkVolumeSnapshotScheduleUpdateRequest.ProtoReflect.Descriptor instead. -func (*SdkVolumeSnapshotScheduleUpdateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{179} +func (m *SdkVolumeSnapshotScheduleUpdateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeSnapshotScheduleUpdateRequest.Marshal(b, m, deterministic) +} +func (dst *SdkVolumeSnapshotScheduleUpdateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeSnapshotScheduleUpdateRequest.Merge(dst, src) +} +func (m *SdkVolumeSnapshotScheduleUpdateRequest) XXX_Size() int { + return xxx_messageInfo_SdkVolumeSnapshotScheduleUpdateRequest.Size(m) +} +func (m *SdkVolumeSnapshotScheduleUpdateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeSnapshotScheduleUpdateRequest.DiscardUnknown(m) } -func (x *SdkVolumeSnapshotScheduleUpdateRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +var xxx_messageInfo_SdkVolumeSnapshotScheduleUpdateRequest proto.InternalMessageInfo + +func (m *SdkVolumeSnapshotScheduleUpdateRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *SdkVolumeSnapshotScheduleUpdateRequest) GetSnapshotScheduleNames() []string { - if x != nil { - return x.SnapshotScheduleNames +func (m *SdkVolumeSnapshotScheduleUpdateRequest) GetSnapshotScheduleNames() []string { + if m != nil { + return m.SnapshotScheduleNames } return nil } // Empty response type SdkVolumeSnapshotScheduleUpdateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeSnapshotScheduleUpdateResponse) Reset() { - *x = SdkVolumeSnapshotScheduleUpdateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[180] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeSnapshotScheduleUpdateResponse) Reset() { + *m = SdkVolumeSnapshotScheduleUpdateResponse{} } - -func (x *SdkVolumeSnapshotScheduleUpdateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeSnapshotScheduleUpdateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeSnapshotScheduleUpdateResponse) ProtoMessage() {} +func (*SdkVolumeSnapshotScheduleUpdateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{180} } - -func (*SdkVolumeSnapshotScheduleUpdateResponse) ProtoMessage() {} - -func (x *SdkVolumeSnapshotScheduleUpdateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[180] - 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) +func (m *SdkVolumeSnapshotScheduleUpdateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeSnapshotScheduleUpdateResponse.Unmarshal(m, b) } - -// Deprecated: Use SdkVolumeSnapshotScheduleUpdateResponse.ProtoReflect.Descriptor instead. -func (*SdkVolumeSnapshotScheduleUpdateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{180} +func (m *SdkVolumeSnapshotScheduleUpdateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeSnapshotScheduleUpdateResponse.Marshal(b, m, deterministic) +} +func (dst *SdkVolumeSnapshotScheduleUpdateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeSnapshotScheduleUpdateResponse.Merge(dst, src) +} +func (m *SdkVolumeSnapshotScheduleUpdateResponse) XXX_Size() int { + return xxx_messageInfo_SdkVolumeSnapshotScheduleUpdateResponse.Size(m) } +func (m *SdkVolumeSnapshotScheduleUpdateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeSnapshotScheduleUpdateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeSnapshotScheduleUpdateResponse proto.InternalMessageInfo // Defines the request to watch an openstorage event. An event can be a volume, a node, a disk, etc type SdkWatchRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // event_type is an option to indicate the type of openStorage event to watch on. // examples of options are volume, node, disk, etc // - // Types that are assignable to EventType: + // Types that are valid to be assigned to EventType: // *SdkWatchRequest_VolumeEvent - EventType isSdkWatchRequest_EventType `protobuf_oneof:"event_type"` + EventType isSdkWatchRequest_EventType `protobuf_oneof:"event_type"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkWatchRequest) Reset() { - *x = SdkWatchRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[181] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkWatchRequest) Reset() { *m = SdkWatchRequest{} } +func (m *SdkWatchRequest) String() string { return proto.CompactTextString(m) } +func (*SdkWatchRequest) ProtoMessage() {} +func (*SdkWatchRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{181} } - -func (x *SdkWatchRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkWatchRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkWatchRequest.Unmarshal(m, b) +} +func (m *SdkWatchRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkWatchRequest.Marshal(b, m, deterministic) +} +func (dst *SdkWatchRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkWatchRequest.Merge(dst, src) +} +func (m *SdkWatchRequest) XXX_Size() int { + return xxx_messageInfo_SdkWatchRequest.Size(m) +} +func (m *SdkWatchRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkWatchRequest.DiscardUnknown(m) } -func (*SdkWatchRequest) ProtoMessage() {} +var xxx_messageInfo_SdkWatchRequest proto.InternalMessageInfo -func (x *SdkWatchRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[181] - 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) +type isSdkWatchRequest_EventType interface { + isSdkWatchRequest_EventType() } -// Deprecated: Use SdkWatchRequest.ProtoReflect.Descriptor instead. -func (*SdkWatchRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{181} +type SdkWatchRequest_VolumeEvent struct { + VolumeEvent *SdkVolumeWatchRequest `protobuf:"bytes,1,opt,name=volume_event,json=volumeEvent,oneof"` } +func (*SdkWatchRequest_VolumeEvent) isSdkWatchRequest_EventType() {} + func (m *SdkWatchRequest) GetEventType() isSdkWatchRequest_EventType { if m != nil { return m.EventType @@ -17692,70 +16597,115 @@ func (m *SdkWatchRequest) GetEventType() isSdkWatchRequest_EventType { return nil } -func (x *SdkWatchRequest) GetVolumeEvent() *SdkVolumeWatchRequest { - if x, ok := x.GetEventType().(*SdkWatchRequest_VolumeEvent); ok { +func (m *SdkWatchRequest) GetVolumeEvent() *SdkVolumeWatchRequest { + if x, ok := m.GetEventType().(*SdkWatchRequest_VolumeEvent); ok { return x.VolumeEvent } return nil } -type isSdkWatchRequest_EventType interface { - isSdkWatchRequest_EventType() +// XXX_OneofFuncs is for the internal use of the proto package. +func (*SdkWatchRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _SdkWatchRequest_OneofMarshaler, _SdkWatchRequest_OneofUnmarshaler, _SdkWatchRequest_OneofSizer, []interface{}{ + (*SdkWatchRequest_VolumeEvent)(nil), + } } -type SdkWatchRequest_VolumeEvent struct { - // watch request for volume event - VolumeEvent *SdkVolumeWatchRequest `protobuf:"bytes,1,opt,name=volume_event,json=volumeEvent,proto3,oneof"` +func _SdkWatchRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*SdkWatchRequest) + // event_type + switch x := m.EventType.(type) { + case *SdkWatchRequest_VolumeEvent: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.VolumeEvent); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("SdkWatchRequest.EventType has unexpected type %T", x) + } + return nil } -func (*SdkWatchRequest_VolumeEvent) isSdkWatchRequest_EventType() {} +func _SdkWatchRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*SdkWatchRequest) + switch tag { + case 1: // event_type.volume_event + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkVolumeWatchRequest) + err := b.DecodeMessage(msg) + m.EventType = &SdkWatchRequest_VolumeEvent{msg} + return true, err + default: + return false, nil + } +} + +func _SdkWatchRequest_OneofSizer(msg proto.Message) (n int) { + m := msg.(*SdkWatchRequest) + // event_type + switch x := m.EventType.(type) { + case *SdkWatchRequest_VolumeEvent: + s := proto.Size(x.VolumeEvent) + n += 1 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} // Defines the response to watch an openstorage event. An event can be a volume, a node, a disk, etc type SdkWatchResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // event_type is an option to indicate the type of openStorage event to watch on. // examples of options are volume, node, disk, etc // - // Types that are assignable to EventType: + // Types that are valid to be assigned to EventType: // *SdkWatchResponse_VolumeEvent - EventType isSdkWatchResponse_EventType `protobuf_oneof:"event_type"` + EventType isSdkWatchResponse_EventType `protobuf_oneof:"event_type"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkWatchResponse) Reset() { - *x = SdkWatchResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[182] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkWatchResponse) Reset() { *m = SdkWatchResponse{} } +func (m *SdkWatchResponse) String() string { return proto.CompactTextString(m) } +func (*SdkWatchResponse) ProtoMessage() {} +func (*SdkWatchResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{182} } - -func (x *SdkWatchResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkWatchResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkWatchResponse.Unmarshal(m, b) +} +func (m *SdkWatchResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkWatchResponse.Marshal(b, m, deterministic) +} +func (dst *SdkWatchResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkWatchResponse.Merge(dst, src) +} +func (m *SdkWatchResponse) XXX_Size() int { + return xxx_messageInfo_SdkWatchResponse.Size(m) +} +func (m *SdkWatchResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkWatchResponse.DiscardUnknown(m) } -func (*SdkWatchResponse) ProtoMessage() {} +var xxx_messageInfo_SdkWatchResponse proto.InternalMessageInfo -func (x *SdkWatchResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[182] - 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) +type isSdkWatchResponse_EventType interface { + isSdkWatchResponse_EventType() } -// Deprecated: Use SdkWatchResponse.ProtoReflect.Descriptor instead. -func (*SdkWatchResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{182} +type SdkWatchResponse_VolumeEvent struct { + VolumeEvent *SdkVolumeWatchResponse `protobuf:"bytes,1,opt,name=volume_event,json=volumeEvent,oneof"` } +func (*SdkWatchResponse_VolumeEvent) isSdkWatchResponse_EventType() {} + func (m *SdkWatchResponse) GetEventType() isSdkWatchResponse_EventType { if m != nil { return m.EventType @@ -17763,127 +16713,154 @@ func (m *SdkWatchResponse) GetEventType() isSdkWatchResponse_EventType { return nil } -func (x *SdkWatchResponse) GetVolumeEvent() *SdkVolumeWatchResponse { - if x, ok := x.GetEventType().(*SdkWatchResponse_VolumeEvent); ok { +func (m *SdkWatchResponse) GetVolumeEvent() *SdkVolumeWatchResponse { + if x, ok := m.GetEventType().(*SdkWatchResponse_VolumeEvent); ok { return x.VolumeEvent } return nil } -type isSdkWatchResponse_EventType interface { - isSdkWatchResponse_EventType() +// XXX_OneofFuncs is for the internal use of the proto package. +func (*SdkWatchResponse) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _SdkWatchResponse_OneofMarshaler, _SdkWatchResponse_OneofUnmarshaler, _SdkWatchResponse_OneofSizer, []interface{}{ + (*SdkWatchResponse_VolumeEvent)(nil), + } } -type SdkWatchResponse_VolumeEvent struct { - VolumeEvent *SdkVolumeWatchResponse `protobuf:"bytes,1,opt,name=volume_event,json=volumeEvent,proto3,oneof"` +func _SdkWatchResponse_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*SdkWatchResponse) + // event_type + switch x := m.EventType.(type) { + case *SdkWatchResponse_VolumeEvent: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.VolumeEvent); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("SdkWatchResponse.EventType has unexpected type %T", x) + } + return nil } -func (*SdkWatchResponse_VolumeEvent) isSdkWatchResponse_EventType() {} +func _SdkWatchResponse_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*SdkWatchResponse) + switch tag { + case 1: // event_type.volume_event + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkVolumeWatchResponse) + err := b.DecodeMessage(msg) + m.EventType = &SdkWatchResponse_VolumeEvent{msg} + return true, err + default: + return false, nil + } +} + +func _SdkWatchResponse_OneofSizer(msg proto.Message) (n int) { + m := msg.(*SdkWatchResponse) + // event_type + switch x := m.EventType.(type) { + case *SdkWatchResponse_VolumeEvent: + s := proto.Size(x.VolumeEvent) + n += 1 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} // Defines the request to watch an openstorage volume event for the given label // if the label is empty, it returns all the volume events type SdkVolumeWatchRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // labels to filter out the volumes to watch on - Labels map[string]string `protobuf:"bytes,1,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Labels map[string]string `protobuf:"bytes,1,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeWatchRequest) Reset() { - *x = SdkVolumeWatchRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[183] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeWatchRequest) Reset() { *m = SdkVolumeWatchRequest{} } +func (m *SdkVolumeWatchRequest) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeWatchRequest) ProtoMessage() {} +func (*SdkVolumeWatchRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{183} } - -func (x *SdkVolumeWatchRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeWatchRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeWatchRequest.Unmarshal(m, b) } - -func (*SdkVolumeWatchRequest) ProtoMessage() {} - -func (x *SdkVolumeWatchRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[183] - 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) +func (m *SdkVolumeWatchRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeWatchRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeWatchRequest.ProtoReflect.Descriptor instead. -func (*SdkVolumeWatchRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{183} +func (dst *SdkVolumeWatchRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeWatchRequest.Merge(dst, src) +} +func (m *SdkVolumeWatchRequest) XXX_Size() int { + return xxx_messageInfo_SdkVolumeWatchRequest.Size(m) +} +func (m *SdkVolumeWatchRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeWatchRequest.DiscardUnknown(m) } -func (x *SdkVolumeWatchRequest) GetLabels() map[string]string { - if x != nil { - return x.Labels +var xxx_messageInfo_SdkVolumeWatchRequest proto.InternalMessageInfo + +func (m *SdkVolumeWatchRequest) GetLabels() map[string]string { + if m != nil { + return m.Labels } return nil } // Defines the response containing an volume with a state changed type SdkVolumeWatchResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Information about the volume - Volume *Volume `protobuf:"bytes,1,opt,name=volume,proto3" json:"volume,omitempty"` + Volume *Volume `protobuf:"bytes,1,opt,name=volume" json:"volume,omitempty"` // Name of volume - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeWatchResponse) Reset() { - *x = SdkVolumeWatchResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[184] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeWatchResponse) Reset() { *m = SdkVolumeWatchResponse{} } +func (m *SdkVolumeWatchResponse) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeWatchResponse) ProtoMessage() {} +func (*SdkVolumeWatchResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{184} } - -func (x *SdkVolumeWatchResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeWatchResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeWatchResponse.Unmarshal(m, b) } - -func (*SdkVolumeWatchResponse) ProtoMessage() {} - -func (x *SdkVolumeWatchResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[184] - 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) +func (m *SdkVolumeWatchResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeWatchResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeWatchResponse.ProtoReflect.Descriptor instead. -func (*SdkVolumeWatchResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{184} +func (dst *SdkVolumeWatchResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeWatchResponse.Merge(dst, src) +} +func (m *SdkVolumeWatchResponse) XXX_Size() int { + return xxx_messageInfo_SdkVolumeWatchResponse.Size(m) +} +func (m *SdkVolumeWatchResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeWatchResponse.DiscardUnknown(m) } -func (x *SdkVolumeWatchResponse) GetVolume() *Volume { - if x != nil { - return x.Volume +var xxx_messageInfo_SdkVolumeWatchResponse proto.InternalMessageInfo + +func (m *SdkVolumeWatchResponse) GetVolume() *Volume { + if m != nil { + return m.Volume } return nil } -func (x *SdkVolumeWatchResponse) GetName() string { - if x != nil { - return x.Name +func (m *SdkVolumeWatchResponse) GetName() string { + if m != nil { + return m.Name } return "" } @@ -17891,705 +16868,493 @@ func (x *SdkVolumeWatchResponse) GetName() string { // Defines request to retrieve all volumes/snapshots capacity usage details // for a given node type SdkNodeVolumeUsageByNodeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of the node to get snapshot/volumes capacity usage details - NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` + NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId" json:"node_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkNodeVolumeUsageByNodeRequest) Reset() { - *x = SdkNodeVolumeUsageByNodeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[185] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkNodeVolumeUsageByNodeRequest) Reset() { *m = SdkNodeVolumeUsageByNodeRequest{} } +func (m *SdkNodeVolumeUsageByNodeRequest) String() string { return proto.CompactTextString(m) } +func (*SdkNodeVolumeUsageByNodeRequest) ProtoMessage() {} +func (*SdkNodeVolumeUsageByNodeRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{185} } - -func (x *SdkNodeVolumeUsageByNodeRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkNodeVolumeUsageByNodeRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkNodeVolumeUsageByNodeRequest.Unmarshal(m, b) } - -func (*SdkNodeVolumeUsageByNodeRequest) ProtoMessage() {} - -func (x *SdkNodeVolumeUsageByNodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[185] - 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) +func (m *SdkNodeVolumeUsageByNodeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkNodeVolumeUsageByNodeRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkNodeVolumeUsageByNodeRequest.ProtoReflect.Descriptor instead. -func (*SdkNodeVolumeUsageByNodeRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{185} +func (dst *SdkNodeVolumeUsageByNodeRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkNodeVolumeUsageByNodeRequest.Merge(dst, src) +} +func (m *SdkNodeVolumeUsageByNodeRequest) XXX_Size() int { + return xxx_messageInfo_SdkNodeVolumeUsageByNodeRequest.Size(m) +} +func (m *SdkNodeVolumeUsageByNodeRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkNodeVolumeUsageByNodeRequest.DiscardUnknown(m) } -func (x *SdkNodeVolumeUsageByNodeRequest) GetNodeId() string { - if x != nil { - return x.NodeId +var xxx_messageInfo_SdkNodeVolumeUsageByNodeRequest proto.InternalMessageInfo + +func (m *SdkNodeVolumeUsageByNodeRequest) GetNodeId() string { + if m != nil { + return m.NodeId } return "" } // Defines response containing Node's volumes/snapshot capacity usage details type SdkNodeVolumeUsageByNodeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // VolumeUsageByNode details - VolumeUsageInfo *VolumeUsageByNode `protobuf:"bytes,1,opt,name=volume_usage_info,json=volumeUsageInfo,proto3" json:"volume_usage_info,omitempty"` + VolumeUsageInfo *VolumeUsageByNode `protobuf:"bytes,1,opt,name=volume_usage_info,json=volumeUsageInfo" json:"volume_usage_info,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkNodeVolumeUsageByNodeResponse) Reset() { - *x = SdkNodeVolumeUsageByNodeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[186] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkNodeVolumeUsageByNodeResponse) Reset() { *m = SdkNodeVolumeUsageByNodeResponse{} } +func (m *SdkNodeVolumeUsageByNodeResponse) String() string { return proto.CompactTextString(m) } +func (*SdkNodeVolumeUsageByNodeResponse) ProtoMessage() {} +func (*SdkNodeVolumeUsageByNodeResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{186} } - -func (x *SdkNodeVolumeUsageByNodeResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkNodeVolumeUsageByNodeResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkNodeVolumeUsageByNodeResponse.Unmarshal(m, b) } - -func (*SdkNodeVolumeUsageByNodeResponse) ProtoMessage() {} - -func (x *SdkNodeVolumeUsageByNodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[186] - 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) +func (m *SdkNodeVolumeUsageByNodeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkNodeVolumeUsageByNodeResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkNodeVolumeUsageByNodeResponse.ProtoReflect.Descriptor instead. -func (*SdkNodeVolumeUsageByNodeResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{186} +func (dst *SdkNodeVolumeUsageByNodeResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkNodeVolumeUsageByNodeResponse.Merge(dst, src) +} +func (m *SdkNodeVolumeUsageByNodeResponse) XXX_Size() int { + return xxx_messageInfo_SdkNodeVolumeUsageByNodeResponse.Size(m) +} +func (m *SdkNodeVolumeUsageByNodeResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkNodeVolumeUsageByNodeResponse.DiscardUnknown(m) } -func (x *SdkNodeVolumeUsageByNodeResponse) GetVolumeUsageInfo() *VolumeUsageByNode { - if x != nil { - return x.VolumeUsageInfo +var xxx_messageInfo_SdkNodeVolumeUsageByNodeResponse proto.InternalMessageInfo + +func (m *SdkNodeVolumeUsageByNodeResponse) GetVolumeUsageInfo() *VolumeUsageByNode { + if m != nil { + return m.VolumeUsageInfo } return nil } -// Defines request to trigger RelaxedReclaim purge -// for a given node -type SdkNodeRelaxedReclaimPurgeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Id of the node to trigger the purge - NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` +// Empty request +type SdkClusterDomainsEnumerateRequest struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkNodeRelaxedReclaimPurgeRequest) Reset() { - *x = SdkNodeRelaxedReclaimPurgeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[187] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkClusterDomainsEnumerateRequest) Reset() { *m = SdkClusterDomainsEnumerateRequest{} } +func (m *SdkClusterDomainsEnumerateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkClusterDomainsEnumerateRequest) ProtoMessage() {} +func (*SdkClusterDomainsEnumerateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{187} } - -func (x *SdkNodeRelaxedReclaimPurgeRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkClusterDomainsEnumerateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkClusterDomainsEnumerateRequest.Unmarshal(m, b) } - -func (*SdkNodeRelaxedReclaimPurgeRequest) ProtoMessage() {} - -func (x *SdkNodeRelaxedReclaimPurgeRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[187] - 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) +func (m *SdkClusterDomainsEnumerateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkClusterDomainsEnumerateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkNodeRelaxedReclaimPurgeRequest.ProtoReflect.Descriptor instead. -func (*SdkNodeRelaxedReclaimPurgeRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{187} +func (dst *SdkClusterDomainsEnumerateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkClusterDomainsEnumerateRequest.Merge(dst, src) +} +func (m *SdkClusterDomainsEnumerateRequest) XXX_Size() int { + return xxx_messageInfo_SdkClusterDomainsEnumerateRequest.Size(m) +} +func (m *SdkClusterDomainsEnumerateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkClusterDomainsEnumerateRequest.DiscardUnknown(m) } -func (x *SdkNodeRelaxedReclaimPurgeRequest) GetNodeId() string { - if x != nil { - return x.NodeId - } - return "" -} - -// Defines response containing status of the trigger -type SdkNodeRelaxedReclaimPurgeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // status returns true on successful purge - Status *RelaxedReclaimPurge `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` -} - -func (x *SdkNodeRelaxedReclaimPurgeResponse) Reset() { - *x = SdkNodeRelaxedReclaimPurgeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[188] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SdkNodeRelaxedReclaimPurgeResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SdkNodeRelaxedReclaimPurgeResponse) ProtoMessage() {} - -func (x *SdkNodeRelaxedReclaimPurgeResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[188] - 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 SdkNodeRelaxedReclaimPurgeResponse.ProtoReflect.Descriptor instead. -func (*SdkNodeRelaxedReclaimPurgeResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{188} -} - -func (x *SdkNodeRelaxedReclaimPurgeResponse) GetStatus() *RelaxedReclaimPurge { - if x != nil { - return x.Status - } - return nil -} - -// Empty request -type SdkClusterDomainsEnumerateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *SdkClusterDomainsEnumerateRequest) Reset() { - *x = SdkClusterDomainsEnumerateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[189] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SdkClusterDomainsEnumerateRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SdkClusterDomainsEnumerateRequest) ProtoMessage() {} - -func (x *SdkClusterDomainsEnumerateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[189] - 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 SdkClusterDomainsEnumerateRequest.ProtoReflect.Descriptor instead. -func (*SdkClusterDomainsEnumerateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{189} -} +var xxx_messageInfo_SdkClusterDomainsEnumerateRequest proto.InternalMessageInfo // Defines a response when enumerating cluster domains type SdkClusterDomainsEnumerateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // List of names of all the cluster domains in a cluster - ClusterDomainNames []string `protobuf:"bytes,1,rep,name=cluster_domain_names,json=clusterDomainNames,proto3" json:"cluster_domain_names,omitempty"` + ClusterDomainNames []string `protobuf:"bytes,1,rep,name=cluster_domain_names,json=clusterDomainNames" json:"cluster_domain_names,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkClusterDomainsEnumerateResponse) Reset() { - *x = SdkClusterDomainsEnumerateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[190] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkClusterDomainsEnumerateResponse) Reset() { *m = SdkClusterDomainsEnumerateResponse{} } +func (m *SdkClusterDomainsEnumerateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkClusterDomainsEnumerateResponse) ProtoMessage() {} +func (*SdkClusterDomainsEnumerateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{188} } - -func (x *SdkClusterDomainsEnumerateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkClusterDomainsEnumerateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkClusterDomainsEnumerateResponse.Unmarshal(m, b) } - -func (*SdkClusterDomainsEnumerateResponse) ProtoMessage() {} - -func (x *SdkClusterDomainsEnumerateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[190] - 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) +func (m *SdkClusterDomainsEnumerateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkClusterDomainsEnumerateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkClusterDomainsEnumerateResponse.ProtoReflect.Descriptor instead. -func (*SdkClusterDomainsEnumerateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{190} +func (dst *SdkClusterDomainsEnumerateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkClusterDomainsEnumerateResponse.Merge(dst, src) +} +func (m *SdkClusterDomainsEnumerateResponse) XXX_Size() int { + return xxx_messageInfo_SdkClusterDomainsEnumerateResponse.Size(m) } +func (m *SdkClusterDomainsEnumerateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkClusterDomainsEnumerateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkClusterDomainsEnumerateResponse proto.InternalMessageInfo -func (x *SdkClusterDomainsEnumerateResponse) GetClusterDomainNames() []string { - if x != nil { - return x.ClusterDomainNames +func (m *SdkClusterDomainsEnumerateResponse) GetClusterDomainNames() []string { + if m != nil { + return m.ClusterDomainNames } return nil } // Defines a request to inspect a cluster domain type SdkClusterDomainInspectRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Name of the cluster domain to inspect - ClusterDomainName string `protobuf:"bytes,1,opt,name=cluster_domain_name,json=clusterDomainName,proto3" json:"cluster_domain_name,omitempty"` + ClusterDomainName string `protobuf:"bytes,1,opt,name=cluster_domain_name,json=clusterDomainName" json:"cluster_domain_name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkClusterDomainInspectRequest) Reset() { - *x = SdkClusterDomainInspectRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[191] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkClusterDomainInspectRequest) Reset() { *m = SdkClusterDomainInspectRequest{} } +func (m *SdkClusterDomainInspectRequest) String() string { return proto.CompactTextString(m) } +func (*SdkClusterDomainInspectRequest) ProtoMessage() {} +func (*SdkClusterDomainInspectRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{189} } - -func (x *SdkClusterDomainInspectRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkClusterDomainInspectRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkClusterDomainInspectRequest.Unmarshal(m, b) } - -func (*SdkClusterDomainInspectRequest) ProtoMessage() {} - -func (x *SdkClusterDomainInspectRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[191] - 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) +func (m *SdkClusterDomainInspectRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkClusterDomainInspectRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkClusterDomainInspectRequest.ProtoReflect.Descriptor instead. -func (*SdkClusterDomainInspectRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{191} +func (dst *SdkClusterDomainInspectRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkClusterDomainInspectRequest.Merge(dst, src) +} +func (m *SdkClusterDomainInspectRequest) XXX_Size() int { + return xxx_messageInfo_SdkClusterDomainInspectRequest.Size(m) } +func (m *SdkClusterDomainInspectRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkClusterDomainInspectRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkClusterDomainInspectRequest proto.InternalMessageInfo -func (x *SdkClusterDomainInspectRequest) GetClusterDomainName() string { - if x != nil { - return x.ClusterDomainName +func (m *SdkClusterDomainInspectRequest) GetClusterDomainName() string { + if m != nil { + return m.ClusterDomainName } return "" } // Defines a response to inspecting a cluster domain type SdkClusterDomainInspectResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Name of the cluster domain - ClusterDomainName string `protobuf:"bytes,1,opt,name=cluster_domain_name,json=clusterDomainName,proto3" json:"cluster_domain_name,omitempty"` + ClusterDomainName string `protobuf:"bytes,1,opt,name=cluster_domain_name,json=clusterDomainName" json:"cluster_domain_name,omitempty"` // IsActive indicates whether this cluster domain is active - IsActive bool `protobuf:"varint,2,opt,name=is_active,json=isActive,proto3" json:"is_active,omitempty"` + IsActive bool `protobuf:"varint,2,opt,name=is_active,json=isActive" json:"is_active,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkClusterDomainInspectResponse) Reset() { - *x = SdkClusterDomainInspectResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[192] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkClusterDomainInspectResponse) Reset() { *m = SdkClusterDomainInspectResponse{} } +func (m *SdkClusterDomainInspectResponse) String() string { return proto.CompactTextString(m) } +func (*SdkClusterDomainInspectResponse) ProtoMessage() {} +func (*SdkClusterDomainInspectResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{190} } - -func (x *SdkClusterDomainInspectResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkClusterDomainInspectResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkClusterDomainInspectResponse.Unmarshal(m, b) } - -func (*SdkClusterDomainInspectResponse) ProtoMessage() {} - -func (x *SdkClusterDomainInspectResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[192] - 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) +func (m *SdkClusterDomainInspectResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkClusterDomainInspectResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkClusterDomainInspectResponse.ProtoReflect.Descriptor instead. -func (*SdkClusterDomainInspectResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{192} +func (dst *SdkClusterDomainInspectResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkClusterDomainInspectResponse.Merge(dst, src) +} +func (m *SdkClusterDomainInspectResponse) XXX_Size() int { + return xxx_messageInfo_SdkClusterDomainInspectResponse.Size(m) } +func (m *SdkClusterDomainInspectResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkClusterDomainInspectResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkClusterDomainInspectResponse proto.InternalMessageInfo -func (x *SdkClusterDomainInspectResponse) GetClusterDomainName() string { - if x != nil { - return x.ClusterDomainName +func (m *SdkClusterDomainInspectResponse) GetClusterDomainName() string { + if m != nil { + return m.ClusterDomainName } return "" } -func (x *SdkClusterDomainInspectResponse) GetIsActive() bool { - if x != nil { - return x.IsActive +func (m *SdkClusterDomainInspectResponse) GetIsActive() bool { + if m != nil { + return m.IsActive } return false } // Defines a request to activate a cluster domain type SdkClusterDomainActivateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Name of the cluster domain to activate - ClusterDomainName string `protobuf:"bytes,1,opt,name=cluster_domain_name,json=clusterDomainName,proto3" json:"cluster_domain_name,omitempty"` + ClusterDomainName string `protobuf:"bytes,1,opt,name=cluster_domain_name,json=clusterDomainName" json:"cluster_domain_name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkClusterDomainActivateRequest) Reset() { - *x = SdkClusterDomainActivateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[193] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkClusterDomainActivateRequest) Reset() { *m = SdkClusterDomainActivateRequest{} } +func (m *SdkClusterDomainActivateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkClusterDomainActivateRequest) ProtoMessage() {} +func (*SdkClusterDomainActivateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{191} } - -func (x *SdkClusterDomainActivateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkClusterDomainActivateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkClusterDomainActivateRequest.Unmarshal(m, b) } - -func (*SdkClusterDomainActivateRequest) ProtoMessage() {} - -func (x *SdkClusterDomainActivateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[193] - 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) +func (m *SdkClusterDomainActivateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkClusterDomainActivateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkClusterDomainActivateRequest.ProtoReflect.Descriptor instead. -func (*SdkClusterDomainActivateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{193} +func (dst *SdkClusterDomainActivateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkClusterDomainActivateRequest.Merge(dst, src) +} +func (m *SdkClusterDomainActivateRequest) XXX_Size() int { + return xxx_messageInfo_SdkClusterDomainActivateRequest.Size(m) +} +func (m *SdkClusterDomainActivateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkClusterDomainActivateRequest.DiscardUnknown(m) } -func (x *SdkClusterDomainActivateRequest) GetClusterDomainName() string { - if x != nil { - return x.ClusterDomainName +var xxx_messageInfo_SdkClusterDomainActivateRequest proto.InternalMessageInfo + +func (m *SdkClusterDomainActivateRequest) GetClusterDomainName() string { + if m != nil { + return m.ClusterDomainName } return "" } // Empty response type SdkClusterDomainActivateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkClusterDomainActivateResponse) Reset() { - *x = SdkClusterDomainActivateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[194] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkClusterDomainActivateResponse) Reset() { *m = SdkClusterDomainActivateResponse{} } +func (m *SdkClusterDomainActivateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkClusterDomainActivateResponse) ProtoMessage() {} +func (*SdkClusterDomainActivateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{192} } - -func (x *SdkClusterDomainActivateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkClusterDomainActivateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkClusterDomainActivateResponse.Unmarshal(m, b) } - -func (*SdkClusterDomainActivateResponse) ProtoMessage() {} - -func (x *SdkClusterDomainActivateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[194] - 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) +func (m *SdkClusterDomainActivateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkClusterDomainActivateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkClusterDomainActivateResponse.ProtoReflect.Descriptor instead. -func (*SdkClusterDomainActivateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{194} +func (dst *SdkClusterDomainActivateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkClusterDomainActivateResponse.Merge(dst, src) +} +func (m *SdkClusterDomainActivateResponse) XXX_Size() int { + return xxx_messageInfo_SdkClusterDomainActivateResponse.Size(m) } +func (m *SdkClusterDomainActivateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkClusterDomainActivateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkClusterDomainActivateResponse proto.InternalMessageInfo // Defines a request to deactivate a cluster domain type SdkClusterDomainDeactivateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Name of the cluster domain to deactivate - ClusterDomainName string `protobuf:"bytes,1,opt,name=cluster_domain_name,json=clusterDomainName,proto3" json:"cluster_domain_name,omitempty"` + ClusterDomainName string `protobuf:"bytes,1,opt,name=cluster_domain_name,json=clusterDomainName" json:"cluster_domain_name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkClusterDomainDeactivateRequest) Reset() { - *x = SdkClusterDomainDeactivateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[195] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkClusterDomainDeactivateRequest) Reset() { *m = SdkClusterDomainDeactivateRequest{} } +func (m *SdkClusterDomainDeactivateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkClusterDomainDeactivateRequest) ProtoMessage() {} +func (*SdkClusterDomainDeactivateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{193} } - -func (x *SdkClusterDomainDeactivateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkClusterDomainDeactivateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkClusterDomainDeactivateRequest.Unmarshal(m, b) } - -func (*SdkClusterDomainDeactivateRequest) ProtoMessage() {} - -func (x *SdkClusterDomainDeactivateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[195] - 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) +func (m *SdkClusterDomainDeactivateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkClusterDomainDeactivateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkClusterDomainDeactivateRequest.ProtoReflect.Descriptor instead. -func (*SdkClusterDomainDeactivateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{195} +func (dst *SdkClusterDomainDeactivateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkClusterDomainDeactivateRequest.Merge(dst, src) +} +func (m *SdkClusterDomainDeactivateRequest) XXX_Size() int { + return xxx_messageInfo_SdkClusterDomainDeactivateRequest.Size(m) +} +func (m *SdkClusterDomainDeactivateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkClusterDomainDeactivateRequest.DiscardUnknown(m) } -func (x *SdkClusterDomainDeactivateRequest) GetClusterDomainName() string { - if x != nil { - return x.ClusterDomainName +var xxx_messageInfo_SdkClusterDomainDeactivateRequest proto.InternalMessageInfo + +func (m *SdkClusterDomainDeactivateRequest) GetClusterDomainName() string { + if m != nil { + return m.ClusterDomainName } return "" } // Empty response type SdkClusterDomainDeactivateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkClusterDomainDeactivateResponse) Reset() { - *x = SdkClusterDomainDeactivateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[196] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkClusterDomainDeactivateResponse) Reset() { *m = SdkClusterDomainDeactivateResponse{} } +func (m *SdkClusterDomainDeactivateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkClusterDomainDeactivateResponse) ProtoMessage() {} +func (*SdkClusterDomainDeactivateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{194} } - -func (x *SdkClusterDomainDeactivateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkClusterDomainDeactivateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkClusterDomainDeactivateResponse.Unmarshal(m, b) } - -func (*SdkClusterDomainDeactivateResponse) ProtoMessage() {} - -func (x *SdkClusterDomainDeactivateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[196] - 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) +func (m *SdkClusterDomainDeactivateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkClusterDomainDeactivateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkClusterDomainDeactivateResponse.ProtoReflect.Descriptor instead. -func (*SdkClusterDomainDeactivateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{196} +func (dst *SdkClusterDomainDeactivateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkClusterDomainDeactivateResponse.Merge(dst, src) +} +func (m *SdkClusterDomainDeactivateResponse) XXX_Size() int { + return xxx_messageInfo_SdkClusterDomainDeactivateResponse.Size(m) } +func (m *SdkClusterDomainDeactivateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkClusterDomainDeactivateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkClusterDomainDeactivateResponse proto.InternalMessageInfo // Empty request type SdkClusterInspectCurrentRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkClusterInspectCurrentRequest) Reset() { - *x = SdkClusterInspectCurrentRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[197] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkClusterInspectCurrentRequest) Reset() { *m = SdkClusterInspectCurrentRequest{} } +func (m *SdkClusterInspectCurrentRequest) String() string { return proto.CompactTextString(m) } +func (*SdkClusterInspectCurrentRequest) ProtoMessage() {} +func (*SdkClusterInspectCurrentRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{195} } - -func (x *SdkClusterInspectCurrentRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkClusterInspectCurrentRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkClusterInspectCurrentRequest.Unmarshal(m, b) } - -func (*SdkClusterInspectCurrentRequest) ProtoMessage() {} - -func (x *SdkClusterInspectCurrentRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[197] - 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) +func (m *SdkClusterInspectCurrentRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkClusterInspectCurrentRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkClusterInspectCurrentRequest.ProtoReflect.Descriptor instead. -func (*SdkClusterInspectCurrentRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{197} +func (dst *SdkClusterInspectCurrentRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkClusterInspectCurrentRequest.Merge(dst, src) +} +func (m *SdkClusterInspectCurrentRequest) XXX_Size() int { + return xxx_messageInfo_SdkClusterInspectCurrentRequest.Size(m) } +func (m *SdkClusterInspectCurrentRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkClusterInspectCurrentRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkClusterInspectCurrentRequest proto.InternalMessageInfo // Defines a response when inspecting the current cluster type SdkClusterInspectCurrentResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Cluster information - Cluster *StorageCluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` + Cluster *StorageCluster `protobuf:"bytes,1,opt,name=cluster" json:"cluster,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkClusterInspectCurrentResponse) Reset() { - *x = SdkClusterInspectCurrentResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[198] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkClusterInspectCurrentResponse) Reset() { *m = SdkClusterInspectCurrentResponse{} } +func (m *SdkClusterInspectCurrentResponse) String() string { return proto.CompactTextString(m) } +func (*SdkClusterInspectCurrentResponse) ProtoMessage() {} +func (*SdkClusterInspectCurrentResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{196} } - -func (x *SdkClusterInspectCurrentResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkClusterInspectCurrentResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkClusterInspectCurrentResponse.Unmarshal(m, b) } - -func (*SdkClusterInspectCurrentResponse) ProtoMessage() {} - -func (x *SdkClusterInspectCurrentResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[198] - 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) +func (m *SdkClusterInspectCurrentResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkClusterInspectCurrentResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkClusterInspectCurrentResponse.ProtoReflect.Descriptor instead. -func (*SdkClusterInspectCurrentResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{198} +func (dst *SdkClusterInspectCurrentResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkClusterInspectCurrentResponse.Merge(dst, src) +} +func (m *SdkClusterInspectCurrentResponse) XXX_Size() int { + return xxx_messageInfo_SdkClusterInspectCurrentResponse.Size(m) +} +func (m *SdkClusterInspectCurrentResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkClusterInspectCurrentResponse.DiscardUnknown(m) } -func (x *SdkClusterInspectCurrentResponse) GetCluster() *StorageCluster { - if x != nil { - return x.Cluster +var xxx_messageInfo_SdkClusterInspectCurrentResponse proto.InternalMessageInfo + +func (m *SdkClusterInspectCurrentResponse) GetCluster() *StorageCluster { + if m != nil { + return m.Cluster } return nil } // Defines a request when inspecting a node type SdkNodeInspectRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of node to inspect - NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` + NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId" json:"node_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkNodeInspectRequest) Reset() { - *x = SdkNodeInspectRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[199] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkNodeInspectRequest) Reset() { *m = SdkNodeInspectRequest{} } +func (m *SdkNodeInspectRequest) String() string { return proto.CompactTextString(m) } +func (*SdkNodeInspectRequest) ProtoMessage() {} +func (*SdkNodeInspectRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{197} } - -func (x *SdkNodeInspectRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkNodeInspectRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkNodeInspectRequest.Unmarshal(m, b) } - -func (*SdkNodeInspectRequest) ProtoMessage() {} - -func (x *SdkNodeInspectRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[199] - 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) +func (m *SdkNodeInspectRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkNodeInspectRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkNodeInspectRequest.ProtoReflect.Descriptor instead. -func (*SdkNodeInspectRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{199} +func (dst *SdkNodeInspectRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkNodeInspectRequest.Merge(dst, src) +} +func (m *SdkNodeInspectRequest) XXX_Size() int { + return xxx_messageInfo_SdkNodeInspectRequest.Size(m) +} +func (m *SdkNodeInspectRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkNodeInspectRequest.DiscardUnknown(m) } -func (x *SdkNodeInspectRequest) GetNodeId() string { - if x != nil { - return x.NodeId +var xxx_messageInfo_SdkNodeInspectRequest proto.InternalMessageInfo + +func (m *SdkNodeInspectRequest) GetNodeId() string { + if m != nil { + return m.NodeId } return "" } @@ -18597,901 +17362,617 @@ func (x *SdkNodeInspectRequest) GetNodeId() string { // Job is a generic job object that can encapsulate other // messages which follow the job framework of APIs type Job struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // ID of the job - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` // State of the current job - State Job_State `protobuf:"varint,2,opt,name=state,proto3,enum=openstorage.api.Job_State" json:"state,omitempty"` + State Job_State `protobuf:"varint,2,opt,name=state,enum=openstorage.api.Job_State" json:"state,omitempty"` // Type is the job type - Type Job_Type `protobuf:"varint,3,opt,name=type,proto3,enum=openstorage.api.Job_Type" json:"type,omitempty"` + Type Job_Type `protobuf:"varint,3,opt,name=type,enum=openstorage.api.Job_Type" json:"type,omitempty"` // Job is one of the supported jobs // - // Types that are assignable to Job: + // Types that are valid to be assigned to Job: // *Job_DrainAttachments // *Job_ClouddriveTransfer // *Job_CollectDiags - // *Job_Defrag Job isJob_Job `protobuf_oneof:"job"` // CreateTime is the time the job was created - CreateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime" json:"create_time,omitempty"` // LastUpdateTime is the time the job was updated - LastUpdateTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=last_update_time,json=lastUpdateTime,proto3" json:"last_update_time,omitempty"` + LastUpdateTime *timestamp.Timestamp `protobuf:"bytes,6,opt,name=last_update_time,json=lastUpdateTime" json:"last_update_time,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Job) Reset() { - *x = Job{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[200] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *Job) Reset() { *m = Job{} } +func (m *Job) String() string { return proto.CompactTextString(m) } +func (*Job) ProtoMessage() {} +func (*Job) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{198} } - -func (x *Job) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *Job) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Job.Unmarshal(m, b) +} +func (m *Job) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Job.Marshal(b, m, deterministic) +} +func (dst *Job) XXX_Merge(src proto.Message) { + xxx_messageInfo_Job.Merge(dst, src) +} +func (m *Job) XXX_Size() int { + return xxx_messageInfo_Job.Size(m) +} +func (m *Job) XXX_DiscardUnknown() { + xxx_messageInfo_Job.DiscardUnknown(m) } -func (*Job) ProtoMessage() {} +var xxx_messageInfo_Job proto.InternalMessageInfo -func (x *Job) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[200] - 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) +type isJob_Job interface { + isJob_Job() } -// Deprecated: Use Job.ProtoReflect.Descriptor instead. -func (*Job) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{200} +type Job_DrainAttachments struct { + DrainAttachments *NodeDrainAttachmentsJob `protobuf:"bytes,400,opt,name=drain_attachments,json=drainAttachments,oneof"` +} +type Job_ClouddriveTransfer struct { + ClouddriveTransfer *CloudDriveTransferJob `protobuf:"bytes,401,opt,name=clouddrive_transfer,json=clouddriveTransfer,oneof"` +} +type Job_CollectDiags struct { + CollectDiags *CollectDiagsJob `protobuf:"bytes,402,opt,name=collect_diags,json=collectDiags,oneof"` } -func (x *Job) GetId() string { - if x != nil { - return x.Id +func (*Job_DrainAttachments) isJob_Job() {} +func (*Job_ClouddriveTransfer) isJob_Job() {} +func (*Job_CollectDiags) isJob_Job() {} + +func (m *Job) GetJob() isJob_Job { + if m != nil { + return m.Job } - return "" + return nil } -func (x *Job) GetState() Job_State { - if x != nil { - return x.State +func (m *Job) GetId() string { + if m != nil { + return m.Id } - return Job_UNSPECIFIED_STATE + return "" } -func (x *Job) GetType() Job_Type { - if x != nil { - return x.Type +func (m *Job) GetState() Job_State { + if m != nil { + return m.State } - return Job_UNSPECIFIED_TYPE + return Job_UNSPECIFIED_STATE } -func (m *Job) GetJob() isJob_Job { +func (m *Job) GetType() Job_Type { if m != nil { - return m.Job + return m.Type } - return nil + return Job_UNSPECIFIED_TYPE } -func (x *Job) GetDrainAttachments() *NodeDrainAttachmentsJob { - if x, ok := x.GetJob().(*Job_DrainAttachments); ok { +func (m *Job) GetDrainAttachments() *NodeDrainAttachmentsJob { + if x, ok := m.GetJob().(*Job_DrainAttachments); ok { return x.DrainAttachments } return nil } -func (x *Job) GetClouddriveTransfer() *CloudDriveTransferJob { - if x, ok := x.GetJob().(*Job_ClouddriveTransfer); ok { +func (m *Job) GetClouddriveTransfer() *CloudDriveTransferJob { + if x, ok := m.GetJob().(*Job_ClouddriveTransfer); ok { return x.ClouddriveTransfer } return nil } -func (x *Job) GetCollectDiags() *CollectDiagsJob { - if x, ok := x.GetJob().(*Job_CollectDiags); ok { +func (m *Job) GetCollectDiags() *CollectDiagsJob { + if x, ok := m.GetJob().(*Job_CollectDiags); ok { return x.CollectDiags } return nil } -func (x *Job) GetDefrag() *DefragJob { - if x, ok := x.GetJob().(*Job_Defrag); ok { - return x.Defrag +func (m *Job) GetCreateTime() *timestamp.Timestamp { + if m != nil { + return m.CreateTime } return nil } -func (x *Job) GetCreateTime() *timestamppb.Timestamp { - if x != nil { - return x.CreateTime +func (m *Job) GetLastUpdateTime() *timestamp.Timestamp { + if m != nil { + return m.LastUpdateTime } return nil } -func (x *Job) GetLastUpdateTime() *timestamppb.Timestamp { - if x != nil { - return x.LastUpdateTime +// XXX_OneofFuncs is for the internal use of the proto package. +func (*Job) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _Job_OneofMarshaler, _Job_OneofUnmarshaler, _Job_OneofSizer, []interface{}{ + (*Job_DrainAttachments)(nil), + (*Job_ClouddriveTransfer)(nil), + (*Job_CollectDiags)(nil), } - return nil -} - -type isJob_Job interface { - isJob_Job() -} - -type Job_DrainAttachments struct { - // NodeDrainAttachmentsJob if selected this job desribes - // the task for removing volume attachments from a node - DrainAttachments *NodeDrainAttachmentsJob `protobuf:"bytes,400,opt,name=drain_attachments,json=drainAttachments,proto3,oneof"` -} - -type Job_ClouddriveTransfer struct { - // CloudDriveTransferJob if selected describes the task to transfer a cloud driveset - // from one node to another - ClouddriveTransfer *CloudDriveTransferJob `protobuf:"bytes,401,opt,name=clouddrive_transfer,json=clouddriveTransfer,proto3,oneof"` -} - -type Job_CollectDiags struct { - // CollectDiagsJob if selected describes the task to collect diagnostics for the cluster - CollectDiags *CollectDiagsJob `protobuf:"bytes,402,opt,name=collect_diags,json=collectDiags,proto3,oneof"` } -type Job_Defrag struct { - // DefragJob if selected describes the task to run storage defragmentation on cluster nodes - Defrag *DefragJob `protobuf:"bytes,403,opt,name=defrag,proto3,oneof"` +func _Job_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*Job) + // job + switch x := m.Job.(type) { + case *Job_DrainAttachments: + b.EncodeVarint(400<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.DrainAttachments); err != nil { + return err + } + case *Job_ClouddriveTransfer: + b.EncodeVarint(401<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.ClouddriveTransfer); err != nil { + return err + } + case *Job_CollectDiags: + b.EncodeVarint(402<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.CollectDiags); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("Job.Job has unexpected type %T", x) + } + return nil +} + +func _Job_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*Job) + switch tag { + case 400: // job.drain_attachments + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(NodeDrainAttachmentsJob) + err := b.DecodeMessage(msg) + m.Job = &Job_DrainAttachments{msg} + return true, err + case 401: // job.clouddrive_transfer + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(CloudDriveTransferJob) + err := b.DecodeMessage(msg) + m.Job = &Job_ClouddriveTransfer{msg} + return true, err + case 402: // job.collect_diags + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(CollectDiagsJob) + err := b.DecodeMessage(msg) + m.Job = &Job_CollectDiags{msg} + return true, err + default: + return false, nil + } +} + +func _Job_OneofSizer(msg proto.Message) (n int) { + m := msg.(*Job) + // job + switch x := m.Job.(type) { + case *Job_DrainAttachments: + s := proto.Size(x.DrainAttachments) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case *Job_ClouddriveTransfer: + s := proto.Size(x.ClouddriveTransfer) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case *Job_CollectDiags: + s := proto.Size(x.CollectDiags) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n } -func (*Job_DrainAttachments) isJob_Job() {} - -func (*Job_ClouddriveTransfer) isJob_Job() {} - -func (*Job_CollectDiags) isJob_Job() {} - -func (*Job_Defrag) isJob_Job() {} - // Defines a response for an SDK request that spins up a new job // to perform the request type SdkJobResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Job that was created for the SDK request - Job *Job `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"` + Job *Job `protobuf:"bytes,1,opt,name=job" json:"job,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkJobResponse) Reset() { - *x = SdkJobResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[201] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkJobResponse) Reset() { *m = SdkJobResponse{} } +func (m *SdkJobResponse) String() string { return proto.CompactTextString(m) } +func (*SdkJobResponse) ProtoMessage() {} +func (*SdkJobResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{199} } - -func (x *SdkJobResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkJobResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkJobResponse.Unmarshal(m, b) } - -func (*SdkJobResponse) ProtoMessage() {} - -func (x *SdkJobResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[201] - 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) +func (m *SdkJobResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkJobResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkJobResponse.ProtoReflect.Descriptor instead. -func (*SdkJobResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{201} +func (dst *SdkJobResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkJobResponse.Merge(dst, src) +} +func (m *SdkJobResponse) XXX_Size() int { + return xxx_messageInfo_SdkJobResponse.Size(m) +} +func (m *SdkJobResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkJobResponse.DiscardUnknown(m) } -func (x *SdkJobResponse) GetJob() *Job { - if x != nil { - return x.Job +var xxx_messageInfo_SdkJobResponse proto.InternalMessageInfo + +func (m *SdkJobResponse) GetJob() *Job { + if m != nil { + return m.Job } return nil } // Options for draining volume attachment from a node type NodeDrainAttachmentOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *NodeDrainAttachmentOptions) Reset() { - *x = NodeDrainAttachmentOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[202] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *NodeDrainAttachmentOptions) Reset() { *m = NodeDrainAttachmentOptions{} } +func (m *NodeDrainAttachmentOptions) String() string { return proto.CompactTextString(m) } +func (*NodeDrainAttachmentOptions) ProtoMessage() {} +func (*NodeDrainAttachmentOptions) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{200} } - -func (x *NodeDrainAttachmentOptions) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *NodeDrainAttachmentOptions) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_NodeDrainAttachmentOptions.Unmarshal(m, b) +} +func (m *NodeDrainAttachmentOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_NodeDrainAttachmentOptions.Marshal(b, m, deterministic) +} +func (dst *NodeDrainAttachmentOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_NodeDrainAttachmentOptions.Merge(dst, src) +} +func (m *NodeDrainAttachmentOptions) XXX_Size() int { + return xxx_messageInfo_NodeDrainAttachmentOptions.Size(m) +} +func (m *NodeDrainAttachmentOptions) XXX_DiscardUnknown() { + xxx_messageInfo_NodeDrainAttachmentOptions.DiscardUnknown(m) } -func (*NodeDrainAttachmentOptions) ProtoMessage() {} - -func (x *NodeDrainAttachmentOptions) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[202] - 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 NodeDrainAttachmentOptions.ProtoReflect.Descriptor instead. -func (*NodeDrainAttachmentOptions) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{202} -} +var xxx_messageInfo_NodeDrainAttachmentOptions proto.InternalMessageInfo // Defines a node drain volume attachments request type SdkNodeDrainAttachmentsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of the node to drain - NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` + NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId" json:"node_id,omitempty"` // Selector is used for selecting volumes whose // attachment needs to be moved from this node. // The selector could be a list of volume label // key value pairs to select a subset of volumes. - Selector []*LabelSelectorRequirement `protobuf:"bytes,2,rep,name=selector,proto3" json:"selector,omitempty"` + Selector []*LabelSelectorRequirement `protobuf:"bytes,2,rep,name=selector" json:"selector,omitempty"` // Drain only sharedv4 volumes from a node // By default all volumes will be drained. - OnlySharedv4 bool `protobuf:"varint,3,opt,name=only_sharedv4,json=onlySharedv4,proto3" json:"only_sharedv4,omitempty"` + OnlySharedv4 bool `protobuf:"varint,3,opt,name=only_sharedv4,json=onlySharedv4" json:"only_sharedv4,omitempty"` // Issuer is a user friendly name for the caller who is // invoking the API. It can be used by caller to filter out // drain requests from a particular issuer - Issuer string `protobuf:"bytes,4,opt,name=issuer,proto3" json:"issuer,omitempty"` + Issuer string `protobuf:"bytes,4,opt,name=issuer" json:"issuer,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkNodeDrainAttachmentsRequest) Reset() { - *x = SdkNodeDrainAttachmentsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[203] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkNodeDrainAttachmentsRequest) Reset() { *m = SdkNodeDrainAttachmentsRequest{} } +func (m *SdkNodeDrainAttachmentsRequest) String() string { return proto.CompactTextString(m) } +func (*SdkNodeDrainAttachmentsRequest) ProtoMessage() {} +func (*SdkNodeDrainAttachmentsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{201} } - -func (x *SdkNodeDrainAttachmentsRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkNodeDrainAttachmentsRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkNodeDrainAttachmentsRequest.Unmarshal(m, b) } - -func (*SdkNodeDrainAttachmentsRequest) ProtoMessage() {} - -func (x *SdkNodeDrainAttachmentsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[203] - 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) +func (m *SdkNodeDrainAttachmentsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkNodeDrainAttachmentsRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkNodeDrainAttachmentsRequest.ProtoReflect.Descriptor instead. -func (*SdkNodeDrainAttachmentsRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{203} +func (dst *SdkNodeDrainAttachmentsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkNodeDrainAttachmentsRequest.Merge(dst, src) +} +func (m *SdkNodeDrainAttachmentsRequest) XXX_Size() int { + return xxx_messageInfo_SdkNodeDrainAttachmentsRequest.Size(m) } +func (m *SdkNodeDrainAttachmentsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkNodeDrainAttachmentsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkNodeDrainAttachmentsRequest proto.InternalMessageInfo -func (x *SdkNodeDrainAttachmentsRequest) GetNodeId() string { - if x != nil { - return x.NodeId +func (m *SdkNodeDrainAttachmentsRequest) GetNodeId() string { + if m != nil { + return m.NodeId } return "" } -func (x *SdkNodeDrainAttachmentsRequest) GetSelector() []*LabelSelectorRequirement { - if x != nil { - return x.Selector +func (m *SdkNodeDrainAttachmentsRequest) GetSelector() []*LabelSelectorRequirement { + if m != nil { + return m.Selector } return nil } -func (x *SdkNodeDrainAttachmentsRequest) GetOnlySharedv4() bool { - if x != nil { - return x.OnlySharedv4 +func (m *SdkNodeDrainAttachmentsRequest) GetOnlySharedv4() bool { + if m != nil { + return m.OnlySharedv4 } return false } -func (x *SdkNodeDrainAttachmentsRequest) GetIssuer() string { - if x != nil { - return x.Issuer +func (m *SdkNodeDrainAttachmentsRequest) GetIssuer() string { + if m != nil { + return m.Issuer } return "" } // NodeDrainAttachmentsJob describe a job to drain volume attachments from a node type NodeDrainAttachmentsJob struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // NodeID of the node for which this drain job is running - NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` + NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId" json:"node_id,omitempty"` // Status describes a helpful status of this node drain operation - Status string `protobuf:"bytes,2,opt,name=Status,proto3" json:"Status,omitempty"` + Status string `protobuf:"bytes,2,opt,name=Status" json:"Status,omitempty"` // Issuer is a user friendly name for the caller who is // invoking the API. It can be used by caller to filter out // drain requests from a particular issuer - Issuer string `protobuf:"bytes,3,opt,name=issuer,proto3" json:"issuer,omitempty"` + Issuer string `protobuf:"bytes,3,opt,name=issuer" json:"issuer,omitempty"` // Parameters is the original request params for this node drain operation // This node drain job is applicable to only one of these node drain operations. - Parameters *SdkNodeDrainAttachmentsRequest `protobuf:"bytes,4,opt,name=parameters,proto3" json:"parameters,omitempty"` + Parameters *SdkNodeDrainAttachmentsRequest `protobuf:"bytes,4,opt,name=parameters" json:"parameters,omitempty"` // CreateTime is the time the job was created - CreateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime" json:"create_time,omitempty"` // LastUpdateTime is the time the job was updated - LastUpdateTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=last_update_time,json=lastUpdateTime,proto3" json:"last_update_time,omitempty"` + LastUpdateTime *timestamp.Timestamp `protobuf:"bytes,6,opt,name=last_update_time,json=lastUpdateTime" json:"last_update_time,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *NodeDrainAttachmentsJob) Reset() { - *x = NodeDrainAttachmentsJob{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[204] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *NodeDrainAttachmentsJob) Reset() { *m = NodeDrainAttachmentsJob{} } +func (m *NodeDrainAttachmentsJob) String() string { return proto.CompactTextString(m) } +func (*NodeDrainAttachmentsJob) ProtoMessage() {} +func (*NodeDrainAttachmentsJob) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{202} } - -func (x *NodeDrainAttachmentsJob) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *NodeDrainAttachmentsJob) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_NodeDrainAttachmentsJob.Unmarshal(m, b) } - -func (*NodeDrainAttachmentsJob) ProtoMessage() {} - -func (x *NodeDrainAttachmentsJob) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[204] - 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) +func (m *NodeDrainAttachmentsJob) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_NodeDrainAttachmentsJob.Marshal(b, m, deterministic) } - -// Deprecated: Use NodeDrainAttachmentsJob.ProtoReflect.Descriptor instead. -func (*NodeDrainAttachmentsJob) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{204} +func (dst *NodeDrainAttachmentsJob) XXX_Merge(src proto.Message) { + xxx_messageInfo_NodeDrainAttachmentsJob.Merge(dst, src) +} +func (m *NodeDrainAttachmentsJob) XXX_Size() int { + return xxx_messageInfo_NodeDrainAttachmentsJob.Size(m) +} +func (m *NodeDrainAttachmentsJob) XXX_DiscardUnknown() { + xxx_messageInfo_NodeDrainAttachmentsJob.DiscardUnknown(m) } -func (x *NodeDrainAttachmentsJob) GetNodeId() string { - if x != nil { - return x.NodeId +var xxx_messageInfo_NodeDrainAttachmentsJob proto.InternalMessageInfo + +func (m *NodeDrainAttachmentsJob) GetNodeId() string { + if m != nil { + return m.NodeId } return "" } -func (x *NodeDrainAttachmentsJob) GetStatus() string { - if x != nil { - return x.Status +func (m *NodeDrainAttachmentsJob) GetStatus() string { + if m != nil { + return m.Status } return "" } -func (x *NodeDrainAttachmentsJob) GetIssuer() string { - if x != nil { - return x.Issuer +func (m *NodeDrainAttachmentsJob) GetIssuer() string { + if m != nil { + return m.Issuer } return "" } -func (x *NodeDrainAttachmentsJob) GetParameters() *SdkNodeDrainAttachmentsRequest { - if x != nil { - return x.Parameters +func (m *NodeDrainAttachmentsJob) GetParameters() *SdkNodeDrainAttachmentsRequest { + if m != nil { + return m.Parameters } return nil } -func (x *NodeDrainAttachmentsJob) GetCreateTime() *timestamppb.Timestamp { - if x != nil { - return x.CreateTime +func (m *NodeDrainAttachmentsJob) GetCreateTime() *timestamp.Timestamp { + if m != nil { + return m.CreateTime } return nil } -func (x *NodeDrainAttachmentsJob) GetLastUpdateTime() *timestamppb.Timestamp { - if x != nil { - return x.LastUpdateTime +func (m *NodeDrainAttachmentsJob) GetLastUpdateTime() *timestamp.Timestamp { + if m != nil { + return m.LastUpdateTime } return nil } type CloudDriveTransferJob struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // SourceDrivesetID is the ID of the current driveset that needs to be transferred - SourceDrivesetId string `protobuf:"bytes,1,opt,name=source_driveset_id,json=sourceDrivesetId,proto3" json:"source_driveset_id,omitempty"` + SourceDrivesetId string `protobuf:"bytes,1,opt,name=source_driveset_id,json=sourceDrivesetId" json:"source_driveset_id,omitempty"` // DestinationInstanceID is the ID of the storageless instance that needs to take over the SourceDriveSetID - DestinationInstanceId string `protobuf:"bytes,2,opt,name=destination_instance_id,json=destinationInstanceId,proto3" json:"destination_instance_id,omitempty"` + DestinationInstanceId string `protobuf:"bytes,2,opt,name=destination_instance_id,json=destinationInstanceId" json:"destination_instance_id,omitempty"` // Status describes a helpful status of this operation - Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` + Status string `protobuf:"bytes,3,opt,name=status" json:"status,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CloudDriveTransferJob) Reset() { - *x = CloudDriveTransferJob{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[205] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CloudDriveTransferJob) Reset() { *m = CloudDriveTransferJob{} } +func (m *CloudDriveTransferJob) String() string { return proto.CompactTextString(m) } +func (*CloudDriveTransferJob) ProtoMessage() {} +func (*CloudDriveTransferJob) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{203} } - -func (x *CloudDriveTransferJob) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CloudDriveTransferJob) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CloudDriveTransferJob.Unmarshal(m, b) } - -func (*CloudDriveTransferJob) ProtoMessage() {} - -func (x *CloudDriveTransferJob) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[205] - 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) +func (m *CloudDriveTransferJob) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CloudDriveTransferJob.Marshal(b, m, deterministic) } - -// Deprecated: Use CloudDriveTransferJob.ProtoReflect.Descriptor instead. -func (*CloudDriveTransferJob) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{205} +func (dst *CloudDriveTransferJob) XXX_Merge(src proto.Message) { + xxx_messageInfo_CloudDriveTransferJob.Merge(dst, src) +} +func (m *CloudDriveTransferJob) XXX_Size() int { + return xxx_messageInfo_CloudDriveTransferJob.Size(m) } +func (m *CloudDriveTransferJob) XXX_DiscardUnknown() { + xxx_messageInfo_CloudDriveTransferJob.DiscardUnknown(m) +} + +var xxx_messageInfo_CloudDriveTransferJob proto.InternalMessageInfo -func (x *CloudDriveTransferJob) GetSourceDrivesetId() string { - if x != nil { - return x.SourceDrivesetId +func (m *CloudDriveTransferJob) GetSourceDrivesetId() string { + if m != nil { + return m.SourceDrivesetId } return "" } -func (x *CloudDriveTransferJob) GetDestinationInstanceId() string { - if x != nil { - return x.DestinationInstanceId +func (m *CloudDriveTransferJob) GetDestinationInstanceId() string { + if m != nil { + return m.DestinationInstanceId } return "" } -func (x *CloudDriveTransferJob) GetStatus() string { - if x != nil { - return x.Status +func (m *CloudDriveTransferJob) GetStatus() string { + if m != nil { + return m.Status } return "" } type CollectDiagsJob struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Request is the user request for this diags collection job - Request *SdkDiagsCollectRequest `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"` + Request *SdkDiagsCollectRequest `protobuf:"bytes,1,opt,name=request" json:"request,omitempty"` // Statuses is a list of statuses for diags collection for each node that is part of the request - Statuses []*DiagsCollectionStatus `protobuf:"bytes,2,rep,name=statuses,proto3" json:"statuses,omitempty"` -} - -func (x *CollectDiagsJob) Reset() { - *x = CollectDiagsJob{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[206] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CollectDiagsJob) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CollectDiagsJob) ProtoMessage() {} - -func (x *CollectDiagsJob) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[206] - 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) + Statuses []*DiagsCollectionStatus `protobuf:"bytes,2,rep,name=statuses" json:"statuses,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -// Deprecated: Use CollectDiagsJob.ProtoReflect.Descriptor instead. +func (m *CollectDiagsJob) Reset() { *m = CollectDiagsJob{} } +func (m *CollectDiagsJob) String() string { return proto.CompactTextString(m) } +func (*CollectDiagsJob) ProtoMessage() {} func (*CollectDiagsJob) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{206} -} - -func (x *CollectDiagsJob) GetRequest() *SdkDiagsCollectRequest { - if x != nil { - return x.Request - } - return nil -} - -func (x *CollectDiagsJob) GetStatuses() []*DiagsCollectionStatus { - if x != nil { - return x.Statuses - } - return nil -} - -// DefragJob describes a job to run defragmentation on cluster nodes -type DefragJob struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // MaxDurationHours defines the time limit in hours - MaxDurationHours float64 `protobuf:"fixed64,1,opt,name=max_duration_hours,json=maxDurationHours,proto3" json:"max_duration_hours,omitempty"` - // MaxNodesInParallel defines the maximum number of nodes running the defrag job in parallel - MaxNodesInParallel uint32 `protobuf:"varint,2,opt,name=max_nodes_in_parallel,json=maxNodesInParallel,proto3" json:"max_nodes_in_parallel,omitempty"` - // IncludeNodes is a list of node UUID: if provided, will only run the job on these nodes; - // if not provided, will run on all nodes - // cannot coexist with ExcludeNodes and NodeSelector - IncludeNodes []string `protobuf:"bytes,3,rep,name=include_nodes,json=includeNodes,proto3" json:"include_nodes,omitempty"` - // ExcludeNodes is a list of node UUID: if provided, the job will skip these nodes; - // if not provided, will run on all nodes - // cannot coexist with IncludeNodes - ExcludeNodes []string `protobuf:"bytes,4,rep,name=exclude_nodes,json=excludeNodes,proto3" json:"exclude_nodes,omitempty"` - // NodeSelector is a list of node label `key=value` pairs separated by comma, - // which selects the nodes to be run on for the job - // can coexist with ExcludeNodes but cannot coexist with IncludeNodes - NodeSelector []string `protobuf:"bytes,5,rep,name=node_selector,json=nodeSelector,proto3" json:"node_selector,omitempty"` - // CurrentRunningNodes stores the nodes on which the job is currently running - CurrentRunningNodes []string `protobuf:"bytes,6,rep,name=current_running_nodes,json=currentRunningNodes,proto3" json:"current_running_nodes,omitempty"` - // ScheduleId is the ID of the schedule which started this job - ScheduleId string `protobuf:"bytes,7,opt,name=schedule_id,json=scheduleId,proto3" json:"schedule_id,omitempty"` -} - -func (x *DefragJob) Reset() { - *x = DefragJob{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[207] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DefragJob) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DefragJob) ProtoMessage() {} - -func (x *DefragJob) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[207] - 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 DefragJob.ProtoReflect.Descriptor instead. -func (*DefragJob) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{207} -} - -func (x *DefragJob) GetMaxDurationHours() float64 { - if x != nil { - return x.MaxDurationHours - } - return 0 -} - -func (x *DefragJob) GetMaxNodesInParallel() uint32 { - if x != nil { - return x.MaxNodesInParallel - } - return 0 -} - -func (x *DefragJob) GetIncludeNodes() []string { - if x != nil { - return x.IncludeNodes - } - return nil -} - -func (x *DefragJob) GetExcludeNodes() []string { - if x != nil { - return x.ExcludeNodes - } - return nil -} - -func (x *DefragJob) GetNodeSelector() []string { - if x != nil { - return x.NodeSelector - } - return nil -} - -func (x *DefragJob) GetCurrentRunningNodes() []string { - if x != nil { - return x.CurrentRunningNodes - } - return nil -} - -func (x *DefragJob) GetScheduleId() string { - if x != nil { - return x.ScheduleId - } - return "" -} - -// DefragNodeStatus describes the defragmentation status of a node -type DefragNodeStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // PoolStatus is a map of pairs - PoolStatus map[string]*DefragPoolStatus `protobuf:"bytes,1,rep,name=pool_status,json=poolStatus,proto3" json:"pool_status,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // RunningSchedule is the defrag schedule being run on the node - RunningSchedule string `protobuf:"bytes,2,opt,name=running_schedule,json=runningSchedule,proto3" json:"running_schedule,omitempty"` -} - -func (x *DefragNodeStatus) Reset() { - *x = DefragNodeStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[208] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DefragNodeStatus) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DefragNodeStatus) ProtoMessage() {} - -func (x *DefragNodeStatus) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[208] - 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 DefragNodeStatus.ProtoReflect.Descriptor instead. -func (*DefragNodeStatus) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{208} -} - -func (x *DefragNodeStatus) GetPoolStatus() map[string]*DefragPoolStatus { - if x != nil { - return x.PoolStatus - } - return nil -} - -func (x *DefragNodeStatus) GetRunningSchedule() string { - if x != nil { - return x.RunningSchedule - } - return "" + return fileDescriptor_api_bc0eb0e06839944e, []int{204} } - -// DefragNodeStatus describes the defragmentation status of a pool -type DefragPoolStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // NumIterations counts the number of times the pool gets defraged - NumIterations uint32 `protobuf:"varint,1,opt,name=num_iterations,json=numIterations,proto3" json:"num_iterations,omitempty"` - // Running indicates whether the pool is being defraged - Running bool `protobuf:"varint,2,opt,name=running,proto3" json:"running,omitempty"` - // LastSuccess indicates whether the last run of defrag on this pool was successful - LastSuccess bool `protobuf:"varint,3,opt,name=last_success,json=lastSuccess,proto3" json:"last_success,omitempty"` - // LastStartTime is the start time of the latest run (current or last run) on this pool - LastStartTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=last_start_time,json=lastStartTime,proto3" json:"last_start_time,omitempty"` - // LastCompleteTime is the completion time of the last run on this pool - LastCompleteTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=last_complete_time,json=lastCompleteTime,proto3" json:"last_complete_time,omitempty"` - // LastVolumeId is the volume on which defrag has started but not yet finished - // if provided, volume is currently being defraged or was interrupted in the last run of defrag - LastVolumeId string `protobuf:"bytes,6,opt,name=last_volume_id,json=lastVolumeId,proto3" json:"last_volume_id,omitempty"` - // LastOffset is the offset of the last defrag command executed on the pending volume - // -1 means no volume is in a pending state (either not started or fully finished) - LastOffset int64 `protobuf:"varint,7,opt,name=last_offset,json=lastOffset,proto3" json:"last_offset,omitempty"` - // ProgressPercentage describes the progress of the lastest defrag job (current or last run) on this pool - // percentage = bytes completed / sum of file sizes - ProgressPercentage int32 `protobuf:"varint,8,opt,name=progress_percentage,json=progressPercentage,proto3" json:"progress_percentage,omitempty"` -} - -func (x *DefragPoolStatus) Reset() { - *x = DefragPoolStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[209] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DefragPoolStatus) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CollectDiagsJob) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CollectDiagsJob.Unmarshal(m, b) } - -func (*DefragPoolStatus) ProtoMessage() {} - -func (x *DefragPoolStatus) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[209] - 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) +func (m *CollectDiagsJob) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CollectDiagsJob.Marshal(b, m, deterministic) } - -// Deprecated: Use DefragPoolStatus.ProtoReflect.Descriptor instead. -func (*DefragPoolStatus) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{209} +func (dst *CollectDiagsJob) XXX_Merge(src proto.Message) { + xxx_messageInfo_CollectDiagsJob.Merge(dst, src) } - -func (x *DefragPoolStatus) GetNumIterations() uint32 { - if x != nil { - return x.NumIterations - } - return 0 +func (m *CollectDiagsJob) XXX_Size() int { + return xxx_messageInfo_CollectDiagsJob.Size(m) } - -func (x *DefragPoolStatus) GetRunning() bool { - if x != nil { - return x.Running - } - return false +func (m *CollectDiagsJob) XXX_DiscardUnknown() { + xxx_messageInfo_CollectDiagsJob.DiscardUnknown(m) } -func (x *DefragPoolStatus) GetLastSuccess() bool { - if x != nil { - return x.LastSuccess - } - return false -} +var xxx_messageInfo_CollectDiagsJob proto.InternalMessageInfo -func (x *DefragPoolStatus) GetLastStartTime() *timestamppb.Timestamp { - if x != nil { - return x.LastStartTime +func (m *CollectDiagsJob) GetRequest() *SdkDiagsCollectRequest { + if m != nil { + return m.Request } return nil } -func (x *DefragPoolStatus) GetLastCompleteTime() *timestamppb.Timestamp { - if x != nil { - return x.LastCompleteTime +func (m *CollectDiagsJob) GetStatuses() []*DiagsCollectionStatus { + if m != nil { + return m.Statuses } return nil } -func (x *DefragPoolStatus) GetLastVolumeId() string { - if x != nil { - return x.LastVolumeId - } - return "" -} - -func (x *DefragPoolStatus) GetLastOffset() int64 { - if x != nil { - return x.LastOffset - } - return 0 -} - -func (x *DefragPoolStatus) GetProgressPercentage() int32 { - if x != nil { - return x.ProgressPercentage - } - return 0 -} - type DiagsCollectionStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Node is the node that's collecting the diags - Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + Node string `protobuf:"bytes,1,opt,name=node" json:"node,omitempty"` // State is the current state of diags collection on the node - State DiagsCollectionStatus_State `protobuf:"varint,2,opt,name=state,proto3,enum=openstorage.api.DiagsCollectionStatus_State" json:"state,omitempty"` + State DiagsCollectionStatus_State `protobuf:"varint,2,opt,name=state,enum=openstorage.api.DiagsCollectionStatus_State" json:"state,omitempty"` // Message is a user friendly message for current status of diags collection - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` + Message string `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *DiagsCollectionStatus) Reset() { - *x = DiagsCollectionStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[210] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *DiagsCollectionStatus) Reset() { *m = DiagsCollectionStatus{} } +func (m *DiagsCollectionStatus) String() string { return proto.CompactTextString(m) } +func (*DiagsCollectionStatus) ProtoMessage() {} +func (*DiagsCollectionStatus) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{205} } - -func (x *DiagsCollectionStatus) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *DiagsCollectionStatus) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DiagsCollectionStatus.Unmarshal(m, b) } - -func (*DiagsCollectionStatus) ProtoMessage() {} - -func (x *DiagsCollectionStatus) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[210] - 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) +func (m *DiagsCollectionStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DiagsCollectionStatus.Marshal(b, m, deterministic) } - -// Deprecated: Use DiagsCollectionStatus.ProtoReflect.Descriptor instead. -func (*DiagsCollectionStatus) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{210} +func (dst *DiagsCollectionStatus) XXX_Merge(src proto.Message) { + xxx_messageInfo_DiagsCollectionStatus.Merge(dst, src) +} +func (m *DiagsCollectionStatus) XXX_Size() int { + return xxx_messageInfo_DiagsCollectionStatus.Size(m) } +func (m *DiagsCollectionStatus) XXX_DiscardUnknown() { + xxx_messageInfo_DiagsCollectionStatus.DiscardUnknown(m) +} + +var xxx_messageInfo_DiagsCollectionStatus proto.InternalMessageInfo -func (x *DiagsCollectionStatus) GetNode() string { - if x != nil { - return x.Node +func (m *DiagsCollectionStatus) GetNode() string { + if m != nil { + return m.Node } return "" } -func (x *DiagsCollectionStatus) GetState() DiagsCollectionStatus_State { - if x != nil { - return x.State +func (m *DiagsCollectionStatus) GetState() DiagsCollectionStatus_State { + if m != nil { + return m.State } return DiagsCollectionStatus_UNSPECIFIED } -func (x *DiagsCollectionStatus) GetMessage() string { - if x != nil { - return x.Message +func (m *DiagsCollectionStatus) GetMessage() string { + if m != nil { + return m.Message } return "" } @@ -19500,154 +17981,127 @@ func (x *DiagsCollectionStatus) GetMessage() string { // User can specify both Node and Volume or just one of them. If both are provided, the implementation will select // nodes based on both and also handle overlaps type SdkDiagsCollectRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Node selects the node(s) for diags collection - Node *DiagsNodeSelector `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + Node *DiagsNodeSelector `protobuf:"bytes,1,opt,name=node" json:"node,omitempty"` // Volume selects the volume(s) for diags collection - Volume *DiagsVolumeSelector `protobuf:"bytes,2,opt,name=volume,proto3" json:"volume,omitempty"` + Volume *DiagsVolumeSelector `protobuf:"bytes,2,opt,name=volume" json:"volume,omitempty"` // ProfileOnly is an optional flag if true will only collect the stack and heap profile of the driver and will skip // other diag components - ProfileOnly bool `protobuf:"varint,3,opt,name=profile_only,json=profileOnly,proto3" json:"profile_only,omitempty"` + ProfileOnly bool `protobuf:"varint,3,opt,name=profile_only,json=profileOnly" json:"profile_only,omitempty"` // Issuer is an optional user friendly name for the caller invoking the API - Issuer string `protobuf:"bytes,4,opt,name=issuer,proto3" json:"issuer,omitempty"` + Issuer string `protobuf:"bytes,4,opt,name=issuer" json:"issuer,omitempty"` // TimeoutMins is the timeout in minutes for the job. This is an optional field and if not provided, the // implementation of the SDK will use a sane default - TimeoutMins int64 `protobuf:"varint,5,opt,name=timeout_mins,json=timeoutMins,proto3" json:"timeout_mins,omitempty"` + TimeoutMins int64 `protobuf:"varint,5,opt,name=timeout_mins,json=timeoutMins" json:"timeout_mins,omitempty"` // Live is an optional flag if true will collect live cores from running processes of the driver - Live bool `protobuf:"varint,6,opt,name=live,proto3" json:"live,omitempty"` - // Filename is an optional flag only to be used for testing purposes. - Filename string `protobuf:"bytes,7,opt,name=filename,proto3" json:"filename,omitempty"` + Live bool `protobuf:"varint,6,opt,name=live" json:"live,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkDiagsCollectRequest) Reset() { - *x = SdkDiagsCollectRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[211] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkDiagsCollectRequest) Reset() { *m = SdkDiagsCollectRequest{} } +func (m *SdkDiagsCollectRequest) String() string { return proto.CompactTextString(m) } +func (*SdkDiagsCollectRequest) ProtoMessage() {} +func (*SdkDiagsCollectRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{206} } - -func (x *SdkDiagsCollectRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkDiagsCollectRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkDiagsCollectRequest.Unmarshal(m, b) } - -func (*SdkDiagsCollectRequest) ProtoMessage() {} - -func (x *SdkDiagsCollectRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[211] - 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) +func (m *SdkDiagsCollectRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkDiagsCollectRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkDiagsCollectRequest.ProtoReflect.Descriptor instead. -func (*SdkDiagsCollectRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{211} +func (dst *SdkDiagsCollectRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkDiagsCollectRequest.Merge(dst, src) +} +func (m *SdkDiagsCollectRequest) XXX_Size() int { + return xxx_messageInfo_SdkDiagsCollectRequest.Size(m) } +func (m *SdkDiagsCollectRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkDiagsCollectRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkDiagsCollectRequest proto.InternalMessageInfo -func (x *SdkDiagsCollectRequest) GetNode() *DiagsNodeSelector { - if x != nil { - return x.Node +func (m *SdkDiagsCollectRequest) GetNode() *DiagsNodeSelector { + if m != nil { + return m.Node } return nil } -func (x *SdkDiagsCollectRequest) GetVolume() *DiagsVolumeSelector { - if x != nil { - return x.Volume +func (m *SdkDiagsCollectRequest) GetVolume() *DiagsVolumeSelector { + if m != nil { + return m.Volume } return nil } -func (x *SdkDiagsCollectRequest) GetProfileOnly() bool { - if x != nil { - return x.ProfileOnly +func (m *SdkDiagsCollectRequest) GetProfileOnly() bool { + if m != nil { + return m.ProfileOnly } return false } -func (x *SdkDiagsCollectRequest) GetIssuer() string { - if x != nil { - return x.Issuer +func (m *SdkDiagsCollectRequest) GetIssuer() string { + if m != nil { + return m.Issuer } return "" } -func (x *SdkDiagsCollectRequest) GetTimeoutMins() int64 { - if x != nil { - return x.TimeoutMins +func (m *SdkDiagsCollectRequest) GetTimeoutMins() int64 { + if m != nil { + return m.TimeoutMins } return 0 } -func (x *SdkDiagsCollectRequest) GetLive() bool { - if x != nil { - return x.Live +func (m *SdkDiagsCollectRequest) GetLive() bool { + if m != nil { + return m.Live } return false } -func (x *SdkDiagsCollectRequest) GetFilename() string { - if x != nil { - return x.Filename - } - return "" -} - // SdkDiagsCollectResponse defines a response for an SDK request to collect diags type SdkDiagsCollectResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Job that was created for the SDK request - Job *Job `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"` + Job *Job `protobuf:"bytes,1,opt,name=job" json:"job,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkDiagsCollectResponse) Reset() { - *x = SdkDiagsCollectResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[212] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkDiagsCollectResponse) Reset() { *m = SdkDiagsCollectResponse{} } +func (m *SdkDiagsCollectResponse) String() string { return proto.CompactTextString(m) } +func (*SdkDiagsCollectResponse) ProtoMessage() {} +func (*SdkDiagsCollectResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{207} } - -func (x *SdkDiagsCollectResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkDiagsCollectResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkDiagsCollectResponse.Unmarshal(m, b) } - -func (*SdkDiagsCollectResponse) ProtoMessage() {} - -func (x *SdkDiagsCollectResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[212] - 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) +func (m *SdkDiagsCollectResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkDiagsCollectResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkDiagsCollectResponse.ProtoReflect.Descriptor instead. -func (*SdkDiagsCollectResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{212} +func (dst *SdkDiagsCollectResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkDiagsCollectResponse.Merge(dst, src) +} +func (m *SdkDiagsCollectResponse) XXX_Size() int { + return xxx_messageInfo_SdkDiagsCollectResponse.Size(m) } +func (m *SdkDiagsCollectResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkDiagsCollectResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkDiagsCollectResponse proto.InternalMessageInfo -func (x *SdkDiagsCollectResponse) GetJob() *Job { - if x != nil { - return x.Job +func (m *SdkDiagsCollectResponse) GetJob() *Job { + if m != nil { + return m.Job } return nil } @@ -19657,67 +18111,58 @@ func (x *SdkDiagsCollectResponse) GetJob() *Job { // both labels and IDs and also handle overlaps // If All is set to true, other selectors are ignored since it selects all nodes type DiagsNodeSelector struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // NodeLabelSelector is a label selector used to select the nodes for which diags will be collected - NodeLabelSelector []*LabelSelectorRequirement `protobuf:"bytes,1,rep,name=node_label_selector,json=nodeLabelSelector,proto3" json:"node_label_selector,omitempty"` + NodeLabelSelector []*LabelSelectorRequirement `protobuf:"bytes,1,rep,name=node_label_selector,json=nodeLabelSelector" json:"node_label_selector,omitempty"` // NodeIDs are unique IDs fo the nodes for which the diags will be collected - NodeIds []string `protobuf:"bytes,2,rep,name=node_ids,json=nodeIds,proto3" json:"node_ids,omitempty"` + NodeIds []string `protobuf:"bytes,2,rep,name=node_ids,json=nodeIds" json:"node_ids,omitempty"` // All selects all nodes for diags collection - All bool `protobuf:"varint,3,opt,name=all,proto3" json:"all,omitempty"` + All bool `protobuf:"varint,3,opt,name=all" json:"all,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *DiagsNodeSelector) Reset() { - *x = DiagsNodeSelector{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[213] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *DiagsNodeSelector) Reset() { *m = DiagsNodeSelector{} } +func (m *DiagsNodeSelector) String() string { return proto.CompactTextString(m) } +func (*DiagsNodeSelector) ProtoMessage() {} +func (*DiagsNodeSelector) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{208} } - -func (x *DiagsNodeSelector) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *DiagsNodeSelector) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DiagsNodeSelector.Unmarshal(m, b) } - -func (*DiagsNodeSelector) ProtoMessage() {} - -func (x *DiagsNodeSelector) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[213] - 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) +func (m *DiagsNodeSelector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DiagsNodeSelector.Marshal(b, m, deterministic) } - -// Deprecated: Use DiagsNodeSelector.ProtoReflect.Descriptor instead. -func (*DiagsNodeSelector) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{213} +func (dst *DiagsNodeSelector) XXX_Merge(src proto.Message) { + xxx_messageInfo_DiagsNodeSelector.Merge(dst, src) +} +func (m *DiagsNodeSelector) XXX_Size() int { + return xxx_messageInfo_DiagsNodeSelector.Size(m) +} +func (m *DiagsNodeSelector) XXX_DiscardUnknown() { + xxx_messageInfo_DiagsNodeSelector.DiscardUnknown(m) } -func (x *DiagsNodeSelector) GetNodeLabelSelector() []*LabelSelectorRequirement { - if x != nil { - return x.NodeLabelSelector +var xxx_messageInfo_DiagsNodeSelector proto.InternalMessageInfo + +func (m *DiagsNodeSelector) GetNodeLabelSelector() []*LabelSelectorRequirement { + if m != nil { + return m.NodeLabelSelector } return nil } -func (x *DiagsNodeSelector) GetNodeIds() []string { - if x != nil { - return x.NodeIds +func (m *DiagsNodeSelector) GetNodeIds() []string { + if m != nil { + return m.NodeIds } return nil } -func (x *DiagsNodeSelector) GetAll() bool { - if x != nil { - return x.All +func (m *DiagsNodeSelector) GetAll() bool { + if m != nil { + return m.All } return false } @@ -19726,322 +18171,269 @@ func (x *DiagsNodeSelector) GetAll() bool { // User can select VolumeLabelSelector AND/OR VolumeIDs. If both are provided, the implementation will select nodes // based on both labels and IDs and also handle overlaps type DiagsVolumeSelector struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // VolumeLabelSelector selects volumes by their labels and then uses replica and attached nodes for those volumes for // diags collection - VolumeLabelSelector []*LabelSelectorRequirement `protobuf:"bytes,1,rep,name=volume_label_selector,json=volumeLabelSelector,proto3" json:"volume_label_selector,omitempty"` + VolumeLabelSelector []*LabelSelectorRequirement `protobuf:"bytes,1,rep,name=volume_label_selector,json=volumeLabelSelector" json:"volume_label_selector,omitempty"` // VolumeIDs selects volumes by their unique IDs and then uses replica and attached nodes for those volumes for diags // collection - VolumeIds []string `protobuf:"bytes,2,rep,name=volume_ids,json=volumeIds,proto3" json:"volume_ids,omitempty"` + VolumeIds []string `protobuf:"bytes,2,rep,name=volume_ids,json=volumeIds" json:"volume_ids,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *DiagsVolumeSelector) Reset() { - *x = DiagsVolumeSelector{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[214] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *DiagsVolumeSelector) Reset() { *m = DiagsVolumeSelector{} } +func (m *DiagsVolumeSelector) String() string { return proto.CompactTextString(m) } +func (*DiagsVolumeSelector) ProtoMessage() {} +func (*DiagsVolumeSelector) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{209} } - -func (x *DiagsVolumeSelector) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *DiagsVolumeSelector) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DiagsVolumeSelector.Unmarshal(m, b) } - -func (*DiagsVolumeSelector) ProtoMessage() {} - -func (x *DiagsVolumeSelector) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[214] - 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) +func (m *DiagsVolumeSelector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DiagsVolumeSelector.Marshal(b, m, deterministic) } - -// Deprecated: Use DiagsVolumeSelector.ProtoReflect.Descriptor instead. -func (*DiagsVolumeSelector) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{214} +func (dst *DiagsVolumeSelector) XXX_Merge(src proto.Message) { + xxx_messageInfo_DiagsVolumeSelector.Merge(dst, src) +} +func (m *DiagsVolumeSelector) XXX_Size() int { + return xxx_messageInfo_DiagsVolumeSelector.Size(m) +} +func (m *DiagsVolumeSelector) XXX_DiscardUnknown() { + xxx_messageInfo_DiagsVolumeSelector.DiscardUnknown(m) } -func (x *DiagsVolumeSelector) GetVolumeLabelSelector() []*LabelSelectorRequirement { - if x != nil { - return x.VolumeLabelSelector +var xxx_messageInfo_DiagsVolumeSelector proto.InternalMessageInfo + +func (m *DiagsVolumeSelector) GetVolumeLabelSelector() []*LabelSelectorRequirement { + if m != nil { + return m.VolumeLabelSelector } return nil } -func (x *DiagsVolumeSelector) GetVolumeIds() []string { - if x != nil { - return x.VolumeIds +func (m *DiagsVolumeSelector) GetVolumeIds() []string { + if m != nil { + return m.VolumeIds } return nil } // Defines a request to list all the jobs type SdkEnumerateJobsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Type if specified will list the jobs of the provided type - Type Job_Type `protobuf:"varint,1,opt,name=type,proto3,enum=openstorage.api.Job_Type" json:"type,omitempty"` + Type Job_Type `protobuf:"varint,1,opt,name=type,enum=openstorage.api.Job_Type" json:"type,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkEnumerateJobsRequest) Reset() { - *x = SdkEnumerateJobsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[215] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkEnumerateJobsRequest) Reset() { *m = SdkEnumerateJobsRequest{} } +func (m *SdkEnumerateJobsRequest) String() string { return proto.CompactTextString(m) } +func (*SdkEnumerateJobsRequest) ProtoMessage() {} +func (*SdkEnumerateJobsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{210} } - -func (x *SdkEnumerateJobsRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkEnumerateJobsRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkEnumerateJobsRequest.Unmarshal(m, b) } - -func (*SdkEnumerateJobsRequest) ProtoMessage() {} - -func (x *SdkEnumerateJobsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[215] - 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) +func (m *SdkEnumerateJobsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkEnumerateJobsRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkEnumerateJobsRequest.ProtoReflect.Descriptor instead. -func (*SdkEnumerateJobsRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{215} +func (dst *SdkEnumerateJobsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkEnumerateJobsRequest.Merge(dst, src) +} +func (m *SdkEnumerateJobsRequest) XXX_Size() int { + return xxx_messageInfo_SdkEnumerateJobsRequest.Size(m) } +func (m *SdkEnumerateJobsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkEnumerateJobsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkEnumerateJobsRequest proto.InternalMessageInfo -func (x *SdkEnumerateJobsRequest) GetType() Job_Type { - if x != nil { - return x.Type +func (m *SdkEnumerateJobsRequest) GetType() Job_Type { + if m != nil { + return m.Type } return Job_UNSPECIFIED_TYPE } // Defines a response will all the known jobs type SdkEnumerateJobsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Jobs is the list of jobs in the response - Jobs []*Job `protobuf:"bytes,1,rep,name=jobs,proto3" json:"jobs,omitempty"` + Jobs []*Job `protobuf:"bytes,1,rep,name=jobs" json:"jobs,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkEnumerateJobsResponse) Reset() { - *x = SdkEnumerateJobsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[216] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkEnumerateJobsResponse) Reset() { *m = SdkEnumerateJobsResponse{} } +func (m *SdkEnumerateJobsResponse) String() string { return proto.CompactTextString(m) } +func (*SdkEnumerateJobsResponse) ProtoMessage() {} +func (*SdkEnumerateJobsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{211} } - -func (x *SdkEnumerateJobsResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkEnumerateJobsResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkEnumerateJobsResponse.Unmarshal(m, b) } - -func (*SdkEnumerateJobsResponse) ProtoMessage() {} - -func (x *SdkEnumerateJobsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[216] - 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) +func (m *SdkEnumerateJobsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkEnumerateJobsResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkEnumerateJobsResponse.ProtoReflect.Descriptor instead. -func (*SdkEnumerateJobsResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{216} +func (dst *SdkEnumerateJobsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkEnumerateJobsResponse.Merge(dst, src) +} +func (m *SdkEnumerateJobsResponse) XXX_Size() int { + return xxx_messageInfo_SdkEnumerateJobsResponse.Size(m) +} +func (m *SdkEnumerateJobsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkEnumerateJobsResponse.DiscardUnknown(m) } -func (x *SdkEnumerateJobsResponse) GetJobs() []*Job { - if x != nil { - return x.Jobs +var xxx_messageInfo_SdkEnumerateJobsResponse proto.InternalMessageInfo + +func (m *SdkEnumerateJobsResponse) GetJobs() []*Job { + if m != nil { + return m.Jobs } return nil } // Defines a request to update an existing job type SdkUpdateJobRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // ID of the job - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` // Type of the job - Type Job_Type `protobuf:"varint,2,opt,name=type,proto3,enum=openstorage.api.Job_Type" json:"type,omitempty"` + Type Job_Type `protobuf:"varint,2,opt,name=type,enum=openstorage.api.Job_Type" json:"type,omitempty"` // State is the new task state to update the job to - State Job_State `protobuf:"varint,3,opt,name=state,proto3,enum=openstorage.api.Job_State" json:"state,omitempty"` + State Job_State `protobuf:"varint,3,opt,name=state,enum=openstorage.api.Job_State" json:"state,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkUpdateJobRequest) Reset() { - *x = SdkUpdateJobRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[217] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkUpdateJobRequest) Reset() { *m = SdkUpdateJobRequest{} } +func (m *SdkUpdateJobRequest) String() string { return proto.CompactTextString(m) } +func (*SdkUpdateJobRequest) ProtoMessage() {} +func (*SdkUpdateJobRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{212} } - -func (x *SdkUpdateJobRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkUpdateJobRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkUpdateJobRequest.Unmarshal(m, b) } - -func (*SdkUpdateJobRequest) ProtoMessage() {} - -func (x *SdkUpdateJobRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[217] - 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) +func (m *SdkUpdateJobRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkUpdateJobRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkUpdateJobRequest.ProtoReflect.Descriptor instead. -func (*SdkUpdateJobRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{217} +func (dst *SdkUpdateJobRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkUpdateJobRequest.Merge(dst, src) +} +func (m *SdkUpdateJobRequest) XXX_Size() int { + return xxx_messageInfo_SdkUpdateJobRequest.Size(m) +} +func (m *SdkUpdateJobRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkUpdateJobRequest.DiscardUnknown(m) } -func (x *SdkUpdateJobRequest) GetId() string { - if x != nil { - return x.Id +var xxx_messageInfo_SdkUpdateJobRequest proto.InternalMessageInfo + +func (m *SdkUpdateJobRequest) GetId() string { + if m != nil { + return m.Id } return "" } -func (x *SdkUpdateJobRequest) GetType() Job_Type { - if x != nil { - return x.Type +func (m *SdkUpdateJobRequest) GetType() Job_Type { + if m != nil { + return m.Type } return Job_UNSPECIFIED_TYPE } -func (x *SdkUpdateJobRequest) GetState() Job_State { - if x != nil { - return x.State +func (m *SdkUpdateJobRequest) GetState() Job_State { + if m != nil { + return m.State } return Job_UNSPECIFIED_STATE } // Defines the response for an update to an existing job type SdkUpdateJobResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkUpdateJobResponse) Reset() { - *x = SdkUpdateJobResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[218] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkUpdateJobResponse) Reset() { *m = SdkUpdateJobResponse{} } +func (m *SdkUpdateJobResponse) String() string { return proto.CompactTextString(m) } +func (*SdkUpdateJobResponse) ProtoMessage() {} +func (*SdkUpdateJobResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{213} } - -func (x *SdkUpdateJobResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkUpdateJobResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkUpdateJobResponse.Unmarshal(m, b) } - -func (*SdkUpdateJobResponse) ProtoMessage() {} - -func (x *SdkUpdateJobResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[218] - 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) +func (m *SdkUpdateJobResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkUpdateJobResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkUpdateJobResponse.ProtoReflect.Descriptor instead. -func (*SdkUpdateJobResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{218} +func (dst *SdkUpdateJobResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkUpdateJobResponse.Merge(dst, src) +} +func (m *SdkUpdateJobResponse) XXX_Size() int { + return xxx_messageInfo_SdkUpdateJobResponse.Size(m) +} +func (m *SdkUpdateJobResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkUpdateJobResponse.DiscardUnknown(m) } +var xxx_messageInfo_SdkUpdateJobResponse proto.InternalMessageInfo + // Defines a request to get the status of an existing job type SdkGetJobStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // ID of the job - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` // Type of the job - Type Job_Type `protobuf:"varint,2,opt,name=type,proto3,enum=openstorage.api.Job_Type" json:"type,omitempty"` + Type Job_Type `protobuf:"varint,2,opt,name=type,enum=openstorage.api.Job_Type" json:"type,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkGetJobStatusRequest) Reset() { - *x = SdkGetJobStatusRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[219] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkGetJobStatusRequest) Reset() { *m = SdkGetJobStatusRequest{} } +func (m *SdkGetJobStatusRequest) String() string { return proto.CompactTextString(m) } +func (*SdkGetJobStatusRequest) ProtoMessage() {} +func (*SdkGetJobStatusRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{214} } - -func (x *SdkGetJobStatusRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkGetJobStatusRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkGetJobStatusRequest.Unmarshal(m, b) } - -func (*SdkGetJobStatusRequest) ProtoMessage() {} - -func (x *SdkGetJobStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[219] - 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) +func (m *SdkGetJobStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkGetJobStatusRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkGetJobStatusRequest.ProtoReflect.Descriptor instead. -func (*SdkGetJobStatusRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{219} +func (dst *SdkGetJobStatusRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkGetJobStatusRequest.Merge(dst, src) +} +func (m *SdkGetJobStatusRequest) XXX_Size() int { + return xxx_messageInfo_SdkGetJobStatusRequest.Size(m) } +func (m *SdkGetJobStatusRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkGetJobStatusRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkGetJobStatusRequest proto.InternalMessageInfo -func (x *SdkGetJobStatusRequest) GetId() string { - if x != nil { - return x.Id +func (m *SdkGetJobStatusRequest) GetId() string { + if m != nil { + return m.Id } return "" } -func (x *SdkGetJobStatusRequest) GetType() Job_Type { - if x != nil { - return x.Type +func (m *SdkGetJobStatusRequest) GetType() Job_Type { + if m != nil { + return m.Type } return Job_UNSPECIFIED_TYPE } @@ -20049,97 +18441,89 @@ func (x *SdkGetJobStatusRequest) GetType() Job_Type { // JobAudit is an audit entry for a job describing the different operations // performed as a part of the job type JobAudit struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Summary []*JobWorkSummary `protobuf:"bytes,1,rep,name=summary,proto3" json:"summary,omitempty"` + Summary []*JobWorkSummary `protobuf:"bytes,1,rep,name=summary" json:"summary,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *JobAudit) Reset() { - *x = JobAudit{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[220] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *JobAudit) Reset() { *m = JobAudit{} } +func (m *JobAudit) String() string { return proto.CompactTextString(m) } +func (*JobAudit) ProtoMessage() {} +func (*JobAudit) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{215} } - -func (x *JobAudit) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *JobAudit) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_JobAudit.Unmarshal(m, b) } - -func (*JobAudit) ProtoMessage() {} - -func (x *JobAudit) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[220] - 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) +func (m *JobAudit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_JobAudit.Marshal(b, m, deterministic) } - -// Deprecated: Use JobAudit.ProtoReflect.Descriptor instead. -func (*JobAudit) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{220} +func (dst *JobAudit) XXX_Merge(src proto.Message) { + xxx_messageInfo_JobAudit.Merge(dst, src) +} +func (m *JobAudit) XXX_Size() int { + return xxx_messageInfo_JobAudit.Size(m) } +func (m *JobAudit) XXX_DiscardUnknown() { + xxx_messageInfo_JobAudit.DiscardUnknown(m) +} + +var xxx_messageInfo_JobAudit proto.InternalMessageInfo -func (x *JobAudit) GetSummary() []*JobWorkSummary { - if x != nil { - return x.Summary +func (m *JobAudit) GetSummary() []*JobWorkSummary { + if m != nil { + return m.Summary } return nil } // JobWorkSummary describes an action taken while performing the hob type JobWorkSummary struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Summary provides more information about the on-going job // - // Types that are assignable to Summary: + // Types that are valid to be assigned to Summary: // *JobWorkSummary_DrainAttachmentsSummary - Summary isJobWorkSummary_Summary `protobuf_oneof:"summary"` + Summary isJobWorkSummary_Summary `protobuf_oneof:"summary"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *JobWorkSummary) Reset() { - *x = JobWorkSummary{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[221] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *JobWorkSummary) Reset() { *m = JobWorkSummary{} } +func (m *JobWorkSummary) String() string { return proto.CompactTextString(m) } +func (*JobWorkSummary) ProtoMessage() {} +func (*JobWorkSummary) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{216} } - -func (x *JobWorkSummary) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *JobWorkSummary) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_JobWorkSummary.Unmarshal(m, b) +} +func (m *JobWorkSummary) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_JobWorkSummary.Marshal(b, m, deterministic) +} +func (dst *JobWorkSummary) XXX_Merge(src proto.Message) { + xxx_messageInfo_JobWorkSummary.Merge(dst, src) +} +func (m *JobWorkSummary) XXX_Size() int { + return xxx_messageInfo_JobWorkSummary.Size(m) +} +func (m *JobWorkSummary) XXX_DiscardUnknown() { + xxx_messageInfo_JobWorkSummary.DiscardUnknown(m) } -func (*JobWorkSummary) ProtoMessage() {} +var xxx_messageInfo_JobWorkSummary proto.InternalMessageInfo -func (x *JobWorkSummary) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[221] - 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) +type isJobWorkSummary_Summary interface { + isJobWorkSummary_Summary() } -// Deprecated: Use JobWorkSummary.ProtoReflect.Descriptor instead. -func (*JobWorkSummary) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{221} +type JobWorkSummary_DrainAttachmentsSummary struct { + DrainAttachmentsSummary *DrainAttachmentsSummary `protobuf:"bytes,3,opt,name=drain_attachments_summary,json=drainAttachmentsSummary,oneof"` } +func (*JobWorkSummary_DrainAttachmentsSummary) isJobWorkSummary_Summary() {} + func (m *JobWorkSummary) GetSummary() isJobWorkSummary_Summary { if m != nil { return m.Summary @@ -20147,145 +18531,171 @@ func (m *JobWorkSummary) GetSummary() isJobWorkSummary_Summary { return nil } -func (x *JobWorkSummary) GetDrainAttachmentsSummary() *DrainAttachmentsSummary { - if x, ok := x.GetSummary().(*JobWorkSummary_DrainAttachmentsSummary); ok { +func (m *JobWorkSummary) GetDrainAttachmentsSummary() *DrainAttachmentsSummary { + if x, ok := m.GetSummary().(*JobWorkSummary_DrainAttachmentsSummary); ok { return x.DrainAttachmentsSummary } return nil } -type isJobWorkSummary_Summary interface { - isJobWorkSummary_Summary() +// XXX_OneofFuncs is for the internal use of the proto package. +func (*JobWorkSummary) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _JobWorkSummary_OneofMarshaler, _JobWorkSummary_OneofUnmarshaler, _JobWorkSummary_OneofSizer, []interface{}{ + (*JobWorkSummary_DrainAttachmentsSummary)(nil), + } } -type JobWorkSummary_DrainAttachmentsSummary struct { - // Summary summarizes drain attachment job - DrainAttachmentsSummary *DrainAttachmentsSummary `protobuf:"bytes,3,opt,name=drain_attachments_summary,json=drainAttachmentsSummary,proto3,oneof"` +func _JobWorkSummary_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*JobWorkSummary) + // summary + switch x := m.Summary.(type) { + case *JobWorkSummary_DrainAttachmentsSummary: + b.EncodeVarint(3<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.DrainAttachmentsSummary); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("JobWorkSummary.Summary has unexpected type %T", x) + } + return nil } -func (*JobWorkSummary_DrainAttachmentsSummary) isJobWorkSummary_Summary() {} +func _JobWorkSummary_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*JobWorkSummary) + switch tag { + case 3: // summary.drain_attachments_summary + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(DrainAttachmentsSummary) + err := b.DecodeMessage(msg) + m.Summary = &JobWorkSummary_DrainAttachmentsSummary{msg} + return true, err + default: + return false, nil + } +} + +func _JobWorkSummary_OneofSizer(msg proto.Message) (n int) { + m := msg.(*JobWorkSummary) + // summary + switch x := m.Summary.(type) { + case *JobWorkSummary_DrainAttachmentsSummary: + s := proto.Size(x.DrainAttachmentsSummary) + n += 1 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} // JobSummary provides a summary of a job type JobSummary struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // ID of the job - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` // Total runtime in seconds - TotalRuntimeSeconds uint64 `protobuf:"varint,2,opt,name=total_runtime_seconds,json=totalRuntimeSeconds,proto3" json:"total_runtime_seconds,omitempty"` + TotalRuntimeSeconds uint64 `protobuf:"varint,2,opt,name=total_runtime_seconds,json=totalRuntimeSeconds" json:"total_runtime_seconds,omitempty"` // Summary provides more information about the on-going job - WorkSummaries []*JobWorkSummary `protobuf:"bytes,3,rep,name=work_summaries,json=workSummaries,proto3" json:"work_summaries,omitempty"` + WorkSummaries []*JobWorkSummary `protobuf:"bytes,3,rep,name=work_summaries,json=workSummaries" json:"work_summaries,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *JobSummary) Reset() { - *x = JobSummary{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[222] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *JobSummary) Reset() { *m = JobSummary{} } +func (m *JobSummary) String() string { return proto.CompactTextString(m) } +func (*JobSummary) ProtoMessage() {} +func (*JobSummary) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{217} } - -func (x *JobSummary) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *JobSummary) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_JobSummary.Unmarshal(m, b) } - -func (*JobSummary) ProtoMessage() {} - -func (x *JobSummary) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[222] - 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) +func (m *JobSummary) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_JobSummary.Marshal(b, m, deterministic) } - -// Deprecated: Use JobSummary.ProtoReflect.Descriptor instead. -func (*JobSummary) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{222} +func (dst *JobSummary) XXX_Merge(src proto.Message) { + xxx_messageInfo_JobSummary.Merge(dst, src) +} +func (m *JobSummary) XXX_Size() int { + return xxx_messageInfo_JobSummary.Size(m) } +func (m *JobSummary) XXX_DiscardUnknown() { + xxx_messageInfo_JobSummary.DiscardUnknown(m) +} + +var xxx_messageInfo_JobSummary proto.InternalMessageInfo -func (x *JobSummary) GetId() string { - if x != nil { - return x.Id +func (m *JobSummary) GetId() string { + if m != nil { + return m.Id } return "" } -func (x *JobSummary) GetTotalRuntimeSeconds() uint64 { - if x != nil { - return x.TotalRuntimeSeconds +func (m *JobSummary) GetTotalRuntimeSeconds() uint64 { + if m != nil { + return m.TotalRuntimeSeconds } return 0 } -func (x *JobSummary) GetWorkSummaries() []*JobWorkSummary { - if x != nil { - return x.WorkSummaries +func (m *JobSummary) GetWorkSummaries() []*JobWorkSummary { + if m != nil { + return m.WorkSummaries } return nil } // Defines the status of an existing job type SdkGetJobStatusResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Job for this node drain operation. - Job *Job `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"` + Job *Job `protobuf:"bytes,1,opt,name=job" json:"job,omitempty"` // Summary of this job - Summary *JobSummary `protobuf:"bytes,2,opt,name=summary,proto3" json:"summary,omitempty"` + Summary *JobSummary `protobuf:"bytes,2,opt,name=summary" json:"summary,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkGetJobStatusResponse) Reset() { - *x = SdkGetJobStatusResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[223] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkGetJobStatusResponse) Reset() { *m = SdkGetJobStatusResponse{} } +func (m *SdkGetJobStatusResponse) String() string { return proto.CompactTextString(m) } +func (*SdkGetJobStatusResponse) ProtoMessage() {} +func (*SdkGetJobStatusResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{218} } - -func (x *SdkGetJobStatusResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkGetJobStatusResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkGetJobStatusResponse.Unmarshal(m, b) } - -func (*SdkGetJobStatusResponse) ProtoMessage() {} - -func (x *SdkGetJobStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[223] - 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) +func (m *SdkGetJobStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkGetJobStatusResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkGetJobStatusResponse.ProtoReflect.Descriptor instead. -func (*SdkGetJobStatusResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{223} +func (dst *SdkGetJobStatusResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkGetJobStatusResponse.Merge(dst, src) +} +func (m *SdkGetJobStatusResponse) XXX_Size() int { + return xxx_messageInfo_SdkGetJobStatusResponse.Size(m) } +func (m *SdkGetJobStatusResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkGetJobStatusResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkGetJobStatusResponse proto.InternalMessageInfo -func (x *SdkGetJobStatusResponse) GetJob() *Job { - if x != nil { - return x.Job +func (m *SdkGetJobStatusResponse) GetJob() *Job { + if m != nil { + return m.Job } return nil } -func (x *SdkGetJobStatusResponse) GetSummary() *JobSummary { - if x != nil { - return x.Summary +func (m *SdkGetJobStatusResponse) GetSummary() *JobSummary { + if m != nil { + return m.Summary } return nil } @@ -20293,67 +18703,58 @@ func (x *SdkGetJobStatusResponse) GetSummary() *JobSummary { // DrainAttachments summary of the volumes whose attachments need to be drained // from a node type DrainAttachmentsSummary struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Total number of volumes that need to be drained - NumVolumesTotal uint64 `protobuf:"varint,2,opt,name=num_volumes_total,json=numVolumesTotal,proto3" json:"num_volumes_total,omitempty"` + NumVolumesTotal uint64 `protobuf:"varint,2,opt,name=num_volumes_total,json=numVolumesTotal" json:"num_volumes_total,omitempty"` // Number of volumes which have been drained - NumVolumesDone uint64 `protobuf:"varint,3,opt,name=num_volumes_done,json=numVolumesDone,proto3" json:"num_volumes_done,omitempty"` + NumVolumesDone uint64 `protobuf:"varint,3,opt,name=num_volumes_done,json=numVolumesDone" json:"num_volumes_done,omitempty"` // Number of volumes which have not been drained yet - NumVolumesPending uint64 `protobuf:"varint,4,opt,name=num_volumes_pending,json=numVolumesPending,proto3" json:"num_volumes_pending,omitempty"` + NumVolumesPending uint64 `protobuf:"varint,4,opt,name=num_volumes_pending,json=numVolumesPending" json:"num_volumes_pending,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *DrainAttachmentsSummary) Reset() { - *x = DrainAttachmentsSummary{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[224] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *DrainAttachmentsSummary) Reset() { *m = DrainAttachmentsSummary{} } +func (m *DrainAttachmentsSummary) String() string { return proto.CompactTextString(m) } +func (*DrainAttachmentsSummary) ProtoMessage() {} +func (*DrainAttachmentsSummary) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{219} } - -func (x *DrainAttachmentsSummary) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *DrainAttachmentsSummary) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DrainAttachmentsSummary.Unmarshal(m, b) } - -func (*DrainAttachmentsSummary) ProtoMessage() {} - -func (x *DrainAttachmentsSummary) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[224] - 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) +func (m *DrainAttachmentsSummary) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DrainAttachmentsSummary.Marshal(b, m, deterministic) } - -// Deprecated: Use DrainAttachmentsSummary.ProtoReflect.Descriptor instead. -func (*DrainAttachmentsSummary) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{224} +func (dst *DrainAttachmentsSummary) XXX_Merge(src proto.Message) { + xxx_messageInfo_DrainAttachmentsSummary.Merge(dst, src) +} +func (m *DrainAttachmentsSummary) XXX_Size() int { + return xxx_messageInfo_DrainAttachmentsSummary.Size(m) +} +func (m *DrainAttachmentsSummary) XXX_DiscardUnknown() { + xxx_messageInfo_DrainAttachmentsSummary.DiscardUnknown(m) } -func (x *DrainAttachmentsSummary) GetNumVolumesTotal() uint64 { - if x != nil { - return x.NumVolumesTotal +var xxx_messageInfo_DrainAttachmentsSummary proto.InternalMessageInfo + +func (m *DrainAttachmentsSummary) GetNumVolumesTotal() uint64 { + if m != nil { + return m.NumVolumesTotal } return 0 } -func (x *DrainAttachmentsSummary) GetNumVolumesDone() uint64 { - if x != nil { - return x.NumVolumesDone +func (m *DrainAttachmentsSummary) GetNumVolumesDone() uint64 { + if m != nil { + return m.NumVolumesDone } return 0 } -func (x *DrainAttachmentsSummary) GetNumVolumesPending() uint64 { - if x != nil { - return x.NumVolumesPending +func (m *DrainAttachmentsSummary) GetNumVolumesPending() uint64 { + if m != nil { + return m.NumVolumesPending } return 0 } @@ -20361,49 +18762,40 @@ func (x *DrainAttachmentsSummary) GetNumVolumesPending() uint64 { // SdkNodeCordonAttachmentsRequest request for disabling new volume // attachments from a node type SdkNodeCordonAttachmentsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Node ID on which any further volume attachments will be disabled - NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` + NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId" json:"node_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkNodeCordonAttachmentsRequest) Reset() { - *x = SdkNodeCordonAttachmentsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[225] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkNodeCordonAttachmentsRequest) Reset() { *m = SdkNodeCordonAttachmentsRequest{} } +func (m *SdkNodeCordonAttachmentsRequest) String() string { return proto.CompactTextString(m) } +func (*SdkNodeCordonAttachmentsRequest) ProtoMessage() {} +func (*SdkNodeCordonAttachmentsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{220} } - -func (x *SdkNodeCordonAttachmentsRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkNodeCordonAttachmentsRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkNodeCordonAttachmentsRequest.Unmarshal(m, b) } - -func (*SdkNodeCordonAttachmentsRequest) ProtoMessage() {} - -func (x *SdkNodeCordonAttachmentsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[225] - 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) +func (m *SdkNodeCordonAttachmentsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkNodeCordonAttachmentsRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkNodeCordonAttachmentsRequest.ProtoReflect.Descriptor instead. -func (*SdkNodeCordonAttachmentsRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{225} +func (dst *SdkNodeCordonAttachmentsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkNodeCordonAttachmentsRequest.Merge(dst, src) +} +func (m *SdkNodeCordonAttachmentsRequest) XXX_Size() int { + return xxx_messageInfo_SdkNodeCordonAttachmentsRequest.Size(m) +} +func (m *SdkNodeCordonAttachmentsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkNodeCordonAttachmentsRequest.DiscardUnknown(m) } -func (x *SdkNodeCordonAttachmentsRequest) GetNodeId() string { - if x != nil { - return x.NodeId +var xxx_messageInfo_SdkNodeCordonAttachmentsRequest proto.InternalMessageInfo + +func (m *SdkNodeCordonAttachmentsRequest) GetNodeId() string { + if m != nil { + return m.NodeId } return "" } @@ -20411,89 +18803,72 @@ func (x *SdkNodeCordonAttachmentsRequest) GetNodeId() string { // SdkNodeCordonAttachmentsRespinse response for disabling new volume // attachments from a node type SdkNodeCordonAttachmentsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkNodeCordonAttachmentsResponse) Reset() { - *x = SdkNodeCordonAttachmentsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[226] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkNodeCordonAttachmentsResponse) Reset() { *m = SdkNodeCordonAttachmentsResponse{} } +func (m *SdkNodeCordonAttachmentsResponse) String() string { return proto.CompactTextString(m) } +func (*SdkNodeCordonAttachmentsResponse) ProtoMessage() {} +func (*SdkNodeCordonAttachmentsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{221} } - -func (x *SdkNodeCordonAttachmentsResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkNodeCordonAttachmentsResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkNodeCordonAttachmentsResponse.Unmarshal(m, b) } - -func (*SdkNodeCordonAttachmentsResponse) ProtoMessage() {} - -func (x *SdkNodeCordonAttachmentsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[226] - 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) +func (m *SdkNodeCordonAttachmentsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkNodeCordonAttachmentsResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkNodeCordonAttachmentsResponse.ProtoReflect.Descriptor instead. -func (*SdkNodeCordonAttachmentsResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{226} +func (dst *SdkNodeCordonAttachmentsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkNodeCordonAttachmentsResponse.Merge(dst, src) +} +func (m *SdkNodeCordonAttachmentsResponse) XXX_Size() int { + return xxx_messageInfo_SdkNodeCordonAttachmentsResponse.Size(m) } +func (m *SdkNodeCordonAttachmentsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkNodeCordonAttachmentsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkNodeCordonAttachmentsResponse proto.InternalMessageInfo // SdkNodeUncordonAttachmentsRequest request for re-enabling volume // attachments for a node type SdkNodeUncordonAttachmentsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Node ID on which any further volume attachments will be enabled - NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` + NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId" json:"node_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkNodeUncordonAttachmentsRequest) Reset() { - *x = SdkNodeUncordonAttachmentsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[227] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkNodeUncordonAttachmentsRequest) Reset() { *m = SdkNodeUncordonAttachmentsRequest{} } +func (m *SdkNodeUncordonAttachmentsRequest) String() string { return proto.CompactTextString(m) } +func (*SdkNodeUncordonAttachmentsRequest) ProtoMessage() {} +func (*SdkNodeUncordonAttachmentsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{222} } - -func (x *SdkNodeUncordonAttachmentsRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkNodeUncordonAttachmentsRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkNodeUncordonAttachmentsRequest.Unmarshal(m, b) } - -func (*SdkNodeUncordonAttachmentsRequest) ProtoMessage() {} - -func (x *SdkNodeUncordonAttachmentsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[227] - 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) +func (m *SdkNodeUncordonAttachmentsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkNodeUncordonAttachmentsRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkNodeUncordonAttachmentsRequest.ProtoReflect.Descriptor instead. -func (*SdkNodeUncordonAttachmentsRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{227} +func (dst *SdkNodeUncordonAttachmentsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkNodeUncordonAttachmentsRequest.Merge(dst, src) +} +func (m *SdkNodeUncordonAttachmentsRequest) XXX_Size() int { + return xxx_messageInfo_SdkNodeUncordonAttachmentsRequest.Size(m) +} +func (m *SdkNodeUncordonAttachmentsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkNodeUncordonAttachmentsRequest.DiscardUnknown(m) } -func (x *SdkNodeUncordonAttachmentsRequest) GetNodeId() string { - if x != nil { - return x.NodeId +var xxx_messageInfo_SdkNodeUncordonAttachmentsRequest proto.InternalMessageInfo + +func (m *SdkNodeUncordonAttachmentsRequest) GetNodeId() string { + if m != nil { + return m.NodeId } return "" } @@ -20501,103 +18876,95 @@ func (x *SdkNodeUncordonAttachmentsRequest) GetNodeId() string { // SdkNodeUncordonAttachmentsRespinse response for enabling new volume // attachments from a node type SdkNodeUncordonAttachmentsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkNodeUncordonAttachmentsResponse) Reset() { - *x = SdkNodeUncordonAttachmentsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[228] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkNodeUncordonAttachmentsResponse) Reset() { *m = SdkNodeUncordonAttachmentsResponse{} } +func (m *SdkNodeUncordonAttachmentsResponse) String() string { return proto.CompactTextString(m) } +func (*SdkNodeUncordonAttachmentsResponse) ProtoMessage() {} +func (*SdkNodeUncordonAttachmentsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{223} } - -func (x *SdkNodeUncordonAttachmentsResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkNodeUncordonAttachmentsResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkNodeUncordonAttachmentsResponse.Unmarshal(m, b) } - -func (*SdkNodeUncordonAttachmentsResponse) ProtoMessage() {} - -func (x *SdkNodeUncordonAttachmentsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[228] - 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) +func (m *SdkNodeUncordonAttachmentsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkNodeUncordonAttachmentsResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkNodeUncordonAttachmentsResponse.ProtoReflect.Descriptor instead. -func (*SdkNodeUncordonAttachmentsResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{228} +func (dst *SdkNodeUncordonAttachmentsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkNodeUncordonAttachmentsResponse.Merge(dst, src) +} +func (m *SdkNodeUncordonAttachmentsResponse) XXX_Size() int { + return xxx_messageInfo_SdkNodeUncordonAttachmentsResponse.Size(m) } +func (m *SdkNodeUncordonAttachmentsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkNodeUncordonAttachmentsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkNodeUncordonAttachmentsResponse proto.InternalMessageInfo // Defines a request when inspect a storage pool type SdkStoragePoolResizeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // UUID of the storage pool to inspect - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + Uuid string `protobuf:"bytes,1,opt,name=uuid" json:"uuid,omitempty"` // ResizeFactor is the option to indicate if you would like to resize the pool // by a fixed size or by a percentage of current size // - // Types that are assignable to ResizeFactor: + // Types that are valid to be assigned to ResizeFactor: // *SdkStoragePoolResizeRequest_Size // *SdkStoragePoolResizeRequest_Percentage ResizeFactor isSdkStoragePoolResizeRequest_ResizeFactor `protobuf_oneof:"resize_factor"` // OperationType is the operation that's used to resize the storage pool (optional) - OperationType SdkStoragePool_ResizeOperationType `protobuf:"varint,3,opt,name=operation_type,json=operationType,proto3,enum=openstorage.api.SdkStoragePool_ResizeOperationType" json:"operation_type,omitempty"` + OperationType SdkStoragePool_ResizeOperationType `protobuf:"varint,3,opt,name=operation_type,json=operationType,enum=openstorage.api.SdkStoragePool_ResizeOperationType" json:"operation_type,omitempty"` // SkipWaitForCleanVolumes would skip the wait for all volumes on the pool to be clean before doing a resize - SkipWaitForCleanVolumes bool `protobuf:"varint,4,opt,name=skip_wait_for_clean_volumes,json=skipWaitForCleanVolumes,proto3" json:"skip_wait_for_clean_volumes,omitempty"` + SkipWaitForCleanVolumes bool `protobuf:"varint,4,opt,name=skip_wait_for_clean_volumes,json=skipWaitForCleanVolumes" json:"skip_wait_for_clean_volumes,omitempty"` + // ForceAddDrive would force pool expand with add drive for the storage pool + ForceAddDrive bool `protobuf:"varint,5,opt,name=force_add_drive,json=forceAddDrive" json:"force_add_drive,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkStoragePoolResizeRequest) Reset() { - *x = SdkStoragePoolResizeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[229] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkStoragePoolResizeRequest) Reset() { *m = SdkStoragePoolResizeRequest{} } +func (m *SdkStoragePoolResizeRequest) String() string { return proto.CompactTextString(m) } +func (*SdkStoragePoolResizeRequest) ProtoMessage() {} +func (*SdkStoragePoolResizeRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{224} } - -func (x *SdkStoragePoolResizeRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkStoragePoolResizeRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkStoragePoolResizeRequest.Unmarshal(m, b) +} +func (m *SdkStoragePoolResizeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkStoragePoolResizeRequest.Marshal(b, m, deterministic) +} +func (dst *SdkStoragePoolResizeRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkStoragePoolResizeRequest.Merge(dst, src) +} +func (m *SdkStoragePoolResizeRequest) XXX_Size() int { + return xxx_messageInfo_SdkStoragePoolResizeRequest.Size(m) +} +func (m *SdkStoragePoolResizeRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkStoragePoolResizeRequest.DiscardUnknown(m) } -func (*SdkStoragePoolResizeRequest) ProtoMessage() {} +var xxx_messageInfo_SdkStoragePoolResizeRequest proto.InternalMessageInfo -func (x *SdkStoragePoolResizeRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[229] - 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) +type isSdkStoragePoolResizeRequest_ResizeFactor interface { + isSdkStoragePoolResizeRequest_ResizeFactor() } -// Deprecated: Use SdkStoragePoolResizeRequest.ProtoReflect.Descriptor instead. -func (*SdkStoragePoolResizeRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{229} +type SdkStoragePoolResizeRequest_Size struct { + Size uint64 `protobuf:"varint,200,opt,name=size,oneof"` } - -func (x *SdkStoragePoolResizeRequest) GetUuid() string { - if x != nil { - return x.Uuid - } - return "" +type SdkStoragePoolResizeRequest_Percentage struct { + Percentage uint64 `protobuf:"varint,201,opt,name=percentage,oneof"` } +func (*SdkStoragePoolResizeRequest_Size) isSdkStoragePoolResizeRequest_ResizeFactor() {} +func (*SdkStoragePoolResizeRequest_Percentage) isSdkStoragePoolResizeRequest_ResizeFactor() {} + func (m *SdkStoragePoolResizeRequest) GetResizeFactor() isSdkStoragePoolResizeRequest_ResizeFactor { if m != nil { return m.ResizeFactor @@ -20605,136 +18972,183 @@ func (m *SdkStoragePoolResizeRequest) GetResizeFactor() isSdkStoragePoolResizeRe return nil } -func (x *SdkStoragePoolResizeRequest) GetSize() uint64 { - if x, ok := x.GetResizeFactor().(*SdkStoragePoolResizeRequest_Size); ok { +func (m *SdkStoragePoolResizeRequest) GetUuid() string { + if m != nil { + return m.Uuid + } + return "" +} + +func (m *SdkStoragePoolResizeRequest) GetSize() uint64 { + if x, ok := m.GetResizeFactor().(*SdkStoragePoolResizeRequest_Size); ok { return x.Size } return 0 } -func (x *SdkStoragePoolResizeRequest) GetPercentage() uint64 { - if x, ok := x.GetResizeFactor().(*SdkStoragePoolResizeRequest_Percentage); ok { +func (m *SdkStoragePoolResizeRequest) GetPercentage() uint64 { + if x, ok := m.GetResizeFactor().(*SdkStoragePoolResizeRequest_Percentage); ok { return x.Percentage } return 0 } -func (x *SdkStoragePoolResizeRequest) GetOperationType() SdkStoragePool_ResizeOperationType { - if x != nil { - return x.OperationType +func (m *SdkStoragePoolResizeRequest) GetOperationType() SdkStoragePool_ResizeOperationType { + if m != nil { + return m.OperationType } return SdkStoragePool_RESIZE_TYPE_AUTO } -func (x *SdkStoragePoolResizeRequest) GetSkipWaitForCleanVolumes() bool { - if x != nil { - return x.SkipWaitForCleanVolumes +func (m *SdkStoragePoolResizeRequest) GetSkipWaitForCleanVolumes() bool { + if m != nil { + return m.SkipWaitForCleanVolumes } return false } -type isSdkStoragePoolResizeRequest_ResizeFactor interface { - isSdkStoragePoolResizeRequest_ResizeFactor() +func (m *SdkStoragePoolResizeRequest) GetForceAddDrive() bool { + if m != nil { + return m.ForceAddDrive + } + return false } -type SdkStoragePoolResizeRequest_Size struct { - // Size is the new desired size of the storage pool - Size uint64 `protobuf:"varint,200,opt,name=size,proto3,oneof"` +// XXX_OneofFuncs is for the internal use of the proto package. +func (*SdkStoragePoolResizeRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _SdkStoragePoolResizeRequest_OneofMarshaler, _SdkStoragePoolResizeRequest_OneofUnmarshaler, _SdkStoragePoolResizeRequest_OneofSizer, []interface{}{ + (*SdkStoragePoolResizeRequest_Size)(nil), + (*SdkStoragePoolResizeRequest_Percentage)(nil), + } } -type SdkStoragePoolResizeRequest_Percentage struct { - // Size is the new desired size of the storage pool - Percentage uint64 `protobuf:"varint,201,opt,name=percentage,proto3,oneof"` +func _SdkStoragePoolResizeRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*SdkStoragePoolResizeRequest) + // resize_factor + switch x := m.ResizeFactor.(type) { + case *SdkStoragePoolResizeRequest_Size: + b.EncodeVarint(200<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.Size)) + case *SdkStoragePoolResizeRequest_Percentage: + b.EncodeVarint(201<<3 | proto.WireVarint) + b.EncodeVarint(uint64(x.Percentage)) + case nil: + default: + return fmt.Errorf("SdkStoragePoolResizeRequest.ResizeFactor has unexpected type %T", x) + } + return nil } -func (*SdkStoragePoolResizeRequest_Size) isSdkStoragePoolResizeRequest_ResizeFactor() {} +func _SdkStoragePoolResizeRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*SdkStoragePoolResizeRequest) + switch tag { + case 200: // resize_factor.size + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.ResizeFactor = &SdkStoragePoolResizeRequest_Size{x} + return true, err + case 201: // resize_factor.percentage + if wire != proto.WireVarint { + return true, proto.ErrInternalBadWireType + } + x, err := b.DecodeVarint() + m.ResizeFactor = &SdkStoragePoolResizeRequest_Percentage{x} + return true, err + default: + return false, nil + } +} -func (*SdkStoragePoolResizeRequest_Percentage) isSdkStoragePoolResizeRequest_ResizeFactor() {} +func _SdkStoragePoolResizeRequest_OneofSizer(msg proto.Message) (n int) { + m := msg.(*SdkStoragePoolResizeRequest) + // resize_factor + switch x := m.ResizeFactor.(type) { + case *SdkStoragePoolResizeRequest_Size: + n += 2 // tag and wire + n += proto.SizeVarint(uint64(x.Size)) + case *SdkStoragePoolResizeRequest_Percentage: + n += 2 // tag and wire + n += proto.SizeVarint(uint64(x.Percentage)) + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} type StorageRebalanceTriggerThreshold struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Type defines type of threshold - Type StorageRebalanceTriggerThreshold_Type `protobuf:"varint,1,opt,name=type,proto3,enum=openstorage.api.StorageRebalanceTriggerThreshold_Type" json:"type,omitempty"` + Type StorageRebalanceTriggerThreshold_Type `protobuf:"varint,1,opt,name=type,enum=openstorage.api.StorageRebalanceTriggerThreshold_Type" json:"type,omitempty"` // Metric defines metric for which this threshold applies to. - Metric StorageRebalanceTriggerThreshold_Metric `protobuf:"varint,2,opt,name=metric,proto3,enum=openstorage.api.StorageRebalanceTriggerThreshold_Metric" json:"metric,omitempty"` + Metric StorageRebalanceTriggerThreshold_Metric `protobuf:"varint,2,opt,name=metric,enum=openstorage.api.StorageRebalanceTriggerThreshold_Metric" json:"metric,omitempty"` // OverLoadTriggerThreshold will select entity which is over this // threshold. OverLoadTriggerThreshold threshold selects pools // which act as source for reduction of load defined by the metric. - OverLoadTriggerThreshold uint64 `protobuf:"varint,3,opt,name=over_load_trigger_threshold,json=overLoadTriggerThreshold,proto3" json:"over_load_trigger_threshold,omitempty"` + OverLoadTriggerThreshold uint64 `protobuf:"varint,3,opt,name=over_load_trigger_threshold,json=overLoadTriggerThreshold" json:"over_load_trigger_threshold,omitempty"` // UnderLoadTriggerThreshold will select entity which is under this // threshold. UnderLoadTriggerThreshold selects pools which act as // targets for increasing load defined by metric. - UnderLoadTriggerThreshold uint64 `protobuf:"varint,4,opt,name=under_load_trigger_threshold,json=underLoadTriggerThreshold,proto3" json:"under_load_trigger_threshold,omitempty"` + UnderLoadTriggerThreshold uint64 `protobuf:"varint,4,opt,name=under_load_trigger_threshold,json=underLoadTriggerThreshold" json:"under_load_trigger_threshold,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *StorageRebalanceTriggerThreshold) Reset() { - *x = StorageRebalanceTriggerThreshold{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[230] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *StorageRebalanceTriggerThreshold) Reset() { *m = StorageRebalanceTriggerThreshold{} } +func (m *StorageRebalanceTriggerThreshold) String() string { return proto.CompactTextString(m) } +func (*StorageRebalanceTriggerThreshold) ProtoMessage() {} +func (*StorageRebalanceTriggerThreshold) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{225} } - -func (x *StorageRebalanceTriggerThreshold) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *StorageRebalanceTriggerThreshold) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_StorageRebalanceTriggerThreshold.Unmarshal(m, b) } - -func (*StorageRebalanceTriggerThreshold) ProtoMessage() {} - -func (x *StorageRebalanceTriggerThreshold) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[230] - 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) +func (m *StorageRebalanceTriggerThreshold) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_StorageRebalanceTriggerThreshold.Marshal(b, m, deterministic) } - -// Deprecated: Use StorageRebalanceTriggerThreshold.ProtoReflect.Descriptor instead. -func (*StorageRebalanceTriggerThreshold) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{230} +func (dst *StorageRebalanceTriggerThreshold) XXX_Merge(src proto.Message) { + xxx_messageInfo_StorageRebalanceTriggerThreshold.Merge(dst, src) +} +func (m *StorageRebalanceTriggerThreshold) XXX_Size() int { + return xxx_messageInfo_StorageRebalanceTriggerThreshold.Size(m) +} +func (m *StorageRebalanceTriggerThreshold) XXX_DiscardUnknown() { + xxx_messageInfo_StorageRebalanceTriggerThreshold.DiscardUnknown(m) } -func (x *StorageRebalanceTriggerThreshold) GetType() StorageRebalanceTriggerThreshold_Type { - if x != nil { - return x.Type +var xxx_messageInfo_StorageRebalanceTriggerThreshold proto.InternalMessageInfo + +func (m *StorageRebalanceTriggerThreshold) GetType() StorageRebalanceTriggerThreshold_Type { + if m != nil { + return m.Type } return StorageRebalanceTriggerThreshold_ABSOLUTE_PERCENT } -func (x *StorageRebalanceTriggerThreshold) GetMetric() StorageRebalanceTriggerThreshold_Metric { - if x != nil { - return x.Metric +func (m *StorageRebalanceTriggerThreshold) GetMetric() StorageRebalanceTriggerThreshold_Metric { + if m != nil { + return m.Metric } return StorageRebalanceTriggerThreshold_PROVISION_SPACE } -func (x *StorageRebalanceTriggerThreshold) GetOverLoadTriggerThreshold() uint64 { - if x != nil { - return x.OverLoadTriggerThreshold +func (m *StorageRebalanceTriggerThreshold) GetOverLoadTriggerThreshold() uint64 { + if m != nil { + return m.OverLoadTriggerThreshold } return 0 } -func (x *StorageRebalanceTriggerThreshold) GetUnderLoadTriggerThreshold() uint64 { - if x != nil { - return x.UnderLoadTriggerThreshold +func (m *StorageRebalanceTriggerThreshold) GetUnderLoadTriggerThreshold() uint64 { + if m != nil { + return m.UnderLoadTriggerThreshold } return 0 } type SdkStorageRebalanceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // TriggerThresholds defines thresholds that would trigger rebalance. // For example, TriggerThreshold{ThresholdTypeAbsolutePercent, MetricTypeUsedSpace, 75, 10} // would trigger rebalance on pools where used space is more than 75% or less than 10%. Similarly, @@ -20742,1673 +19156,1232 @@ type SdkStorageRebalanceRequest struct { // trigger rebalance for pools where used space is more than 15% from the mean // percent for used space for the entire cluster or less than 25% from the mean // percent for used space for the entire cluster. - TriggerThresholds []*StorageRebalanceTriggerThreshold `protobuf:"bytes,1,rep,name=trigger_thresholds,json=triggerThresholds,proto3" json:"trigger_thresholds,omitempty"` + TriggerThresholds []*StorageRebalanceTriggerThreshold `protobuf:"bytes,1,rep,name=trigger_thresholds,json=triggerThresholds" json:"trigger_thresholds,omitempty"` // TrialRun if true the job only produces steps that would be taken without making any changes - TrialRun bool `protobuf:"varint,2,opt,name=trial_run,json=trialRun,proto3" json:"trial_run,omitempty"` + TrialRun bool `protobuf:"varint,2,opt,name=trial_run,json=trialRun" json:"trial_run,omitempty"` // SourcePoolSelector allows selecting pools to which trigger thresholds will apply as source - SourcePoolSelector []*LabelSelectorRequirement `protobuf:"bytes,3,rep,name=source_pool_selector,json=sourcePoolSelector,proto3" json:"source_pool_selector,omitempty"` + SourcePoolSelector []*LabelSelectorRequirement `protobuf:"bytes,3,rep,name=source_pool_selector,json=sourcePoolSelector" json:"source_pool_selector,omitempty"` // TargetPoolSelector allows selecting pools to which trigger thresholds will apply as target - TargetPoolSelector []*LabelSelectorRequirement `protobuf:"bytes,4,rep,name=target_pool_selector,json=targetPoolSelector,proto3" json:"target_pool_selector,omitempty"` + TargetPoolSelector []*LabelSelectorRequirement `protobuf:"bytes,4,rep,name=target_pool_selector,json=targetPoolSelector" json:"target_pool_selector,omitempty"` // MaxDurationMinutes defines how long operation should run when started at schedule. // 0 values means no limit on duration - MaxDurationMinutes uint64 `protobuf:"varint,5,opt,name=max_duration_minutes,json=maxDurationMinutes,proto3" json:"max_duration_minutes,omitempty"` + MaxDurationMinutes uint64 `protobuf:"varint,5,opt,name=max_duration_minutes,json=maxDurationMinutes" json:"max_duration_minutes,omitempty"` // RemoveRepl1Snapshots if true will instruct rebalance job to remove repl-1 snapshots - RemoveRepl_1Snapshots bool `protobuf:"varint,6,opt,name=remove_repl_1_snapshots,json=removeRepl1Snapshots,proto3" json:"remove_repl_1_snapshots,omitempty"` + RemoveRepl_1Snapshots bool `protobuf:"varint,6,opt,name=remove_repl_1_snapshots,json=removeRepl1Snapshots" json:"remove_repl_1_snapshots,omitempty"` // Mode specifies the mode of the volume reorg job - Mode SdkStorageRebalanceRequest_Mode `protobuf:"varint,7,opt,name=mode,proto3,enum=openstorage.api.SdkStorageRebalanceRequest_Mode" json:"mode,omitempty"` + Mode SdkStorageRebalanceRequest_Mode `protobuf:"varint,7,opt,name=mode,enum=openstorage.api.SdkStorageRebalanceRequest_Mode" json:"mode,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkStorageRebalanceRequest) Reset() { - *x = SdkStorageRebalanceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[231] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkStorageRebalanceRequest) Reset() { *m = SdkStorageRebalanceRequest{} } +func (m *SdkStorageRebalanceRequest) String() string { return proto.CompactTextString(m) } +func (*SdkStorageRebalanceRequest) ProtoMessage() {} +func (*SdkStorageRebalanceRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{226} } - -func (x *SdkStorageRebalanceRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkStorageRebalanceRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkStorageRebalanceRequest.Unmarshal(m, b) } - -func (*SdkStorageRebalanceRequest) ProtoMessage() {} - -func (x *SdkStorageRebalanceRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[231] - 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) +func (m *SdkStorageRebalanceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkStorageRebalanceRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkStorageRebalanceRequest.ProtoReflect.Descriptor instead. -func (*SdkStorageRebalanceRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{231} +func (dst *SdkStorageRebalanceRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkStorageRebalanceRequest.Merge(dst, src) +} +func (m *SdkStorageRebalanceRequest) XXX_Size() int { + return xxx_messageInfo_SdkStorageRebalanceRequest.Size(m) +} +func (m *SdkStorageRebalanceRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkStorageRebalanceRequest.DiscardUnknown(m) } -func (x *SdkStorageRebalanceRequest) GetTriggerThresholds() []*StorageRebalanceTriggerThreshold { - if x != nil { - return x.TriggerThresholds +var xxx_messageInfo_SdkStorageRebalanceRequest proto.InternalMessageInfo + +func (m *SdkStorageRebalanceRequest) GetTriggerThresholds() []*StorageRebalanceTriggerThreshold { + if m != nil { + return m.TriggerThresholds } return nil } -func (x *SdkStorageRebalanceRequest) GetTrialRun() bool { - if x != nil { - return x.TrialRun +func (m *SdkStorageRebalanceRequest) GetTrialRun() bool { + if m != nil { + return m.TrialRun } return false } -func (x *SdkStorageRebalanceRequest) GetSourcePoolSelector() []*LabelSelectorRequirement { - if x != nil { - return x.SourcePoolSelector +func (m *SdkStorageRebalanceRequest) GetSourcePoolSelector() []*LabelSelectorRequirement { + if m != nil { + return m.SourcePoolSelector } return nil } -func (x *SdkStorageRebalanceRequest) GetTargetPoolSelector() []*LabelSelectorRequirement { - if x != nil { - return x.TargetPoolSelector +func (m *SdkStorageRebalanceRequest) GetTargetPoolSelector() []*LabelSelectorRequirement { + if m != nil { + return m.TargetPoolSelector } return nil } -func (x *SdkStorageRebalanceRequest) GetMaxDurationMinutes() uint64 { - if x != nil { - return x.MaxDurationMinutes +func (m *SdkStorageRebalanceRequest) GetMaxDurationMinutes() uint64 { + if m != nil { + return m.MaxDurationMinutes } return 0 } -func (x *SdkStorageRebalanceRequest) GetRemoveRepl_1Snapshots() bool { - if x != nil { - return x.RemoveRepl_1Snapshots +func (m *SdkStorageRebalanceRequest) GetRemoveRepl_1Snapshots() bool { + if m != nil { + return m.RemoveRepl_1Snapshots } return false } -func (x *SdkStorageRebalanceRequest) GetMode() SdkStorageRebalanceRequest_Mode { - if x != nil { - return x.Mode +func (m *SdkStorageRebalanceRequest) GetMode() SdkStorageRebalanceRequest_Mode { + if m != nil { + return m.Mode } return SdkStorageRebalanceRequest_STORAGE_REBALANCE } // SdkStorageRebalanceResponse is the response to a storage rebalance request type SdkStorageRebalanceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Job for this rebalance - Job *StorageRebalanceJob `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"` + Job *StorageRebalanceJob `protobuf:"bytes,1,opt,name=job" json:"job,omitempty"` // Summary summarizes the rebalance job - Summary *StorageRebalanceSummary `protobuf:"bytes,2,opt,name=summary,proto3" json:"summary,omitempty"` + Summary *StorageRebalanceSummary `protobuf:"bytes,2,opt,name=summary" json:"summary,omitempty"` // Actions describe all the actions taken during this rebalance - Actions []*StorageRebalanceAudit `protobuf:"bytes,3,rep,name=actions,proto3" json:"actions,omitempty"` + Actions []*StorageRebalanceAudit `protobuf:"bytes,3,rep,name=actions" json:"actions,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkStorageRebalanceResponse) Reset() { - *x = SdkStorageRebalanceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[232] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkStorageRebalanceResponse) Reset() { *m = SdkStorageRebalanceResponse{} } +func (m *SdkStorageRebalanceResponse) String() string { return proto.CompactTextString(m) } +func (*SdkStorageRebalanceResponse) ProtoMessage() {} +func (*SdkStorageRebalanceResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{227} } - -func (x *SdkStorageRebalanceResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkStorageRebalanceResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkStorageRebalanceResponse.Unmarshal(m, b) } - -func (*SdkStorageRebalanceResponse) ProtoMessage() {} - -func (x *SdkStorageRebalanceResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[232] - 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) +func (m *SdkStorageRebalanceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkStorageRebalanceResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkStorageRebalanceResponse.ProtoReflect.Descriptor instead. -func (*SdkStorageRebalanceResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{232} +func (dst *SdkStorageRebalanceResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkStorageRebalanceResponse.Merge(dst, src) +} +func (m *SdkStorageRebalanceResponse) XXX_Size() int { + return xxx_messageInfo_SdkStorageRebalanceResponse.Size(m) +} +func (m *SdkStorageRebalanceResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkStorageRebalanceResponse.DiscardUnknown(m) } -func (x *SdkStorageRebalanceResponse) GetJob() *StorageRebalanceJob { - if x != nil { - return x.Job +var xxx_messageInfo_SdkStorageRebalanceResponse proto.InternalMessageInfo + +func (m *SdkStorageRebalanceResponse) GetJob() *StorageRebalanceJob { + if m != nil { + return m.Job } return nil } -func (x *SdkStorageRebalanceResponse) GetSummary() *StorageRebalanceSummary { - if x != nil { - return x.Summary +func (m *SdkStorageRebalanceResponse) GetSummary() *StorageRebalanceSummary { + if m != nil { + return m.Summary } return nil } -func (x *SdkStorageRebalanceResponse) GetActions() []*StorageRebalanceAudit { - if x != nil { - return x.Actions +func (m *SdkStorageRebalanceResponse) GetActions() []*StorageRebalanceAudit { + if m != nil { + return m.Actions } return nil } // StorageRebalanceJob describes job input and current status type StorageRebalanceJob struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // ID of the rebalance job - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` // Status describes status of pools after rebalance if rebalance did not finish successfully - Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + Status string `protobuf:"bytes,2,opt,name=status" json:"status,omitempty"` // State of the current job - State StorageRebalanceJobState `protobuf:"varint,3,opt,name=state,proto3,enum=openstorage.api.StorageRebalanceJobState" json:"state,omitempty"` + State StorageRebalanceJobState `protobuf:"varint,3,opt,name=state,enum=openstorage.api.StorageRebalanceJobState" json:"state,omitempty"` // Parameters is the original request params for this rebalance operation - Parameters *SdkStorageRebalanceRequest `protobuf:"bytes,4,opt,name=parameters,proto3" json:"parameters,omitempty"` + Parameters *SdkStorageRebalanceRequest `protobuf:"bytes,4,opt,name=parameters" json:"parameters,omitempty"` // CreateTime is the time the job was created - CreateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime" json:"create_time,omitempty"` // LastUpdateTime is the time the job was updated - LastUpdateTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=last_update_time,json=lastUpdateTime,proto3" json:"last_update_time,omitempty"` + LastUpdateTime *timestamp.Timestamp `protobuf:"bytes,6,opt,name=last_update_time,json=lastUpdateTime" json:"last_update_time,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *StorageRebalanceJob) Reset() { - *x = StorageRebalanceJob{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[233] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *StorageRebalanceJob) Reset() { *m = StorageRebalanceJob{} } +func (m *StorageRebalanceJob) String() string { return proto.CompactTextString(m) } +func (*StorageRebalanceJob) ProtoMessage() {} +func (*StorageRebalanceJob) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{228} } - -func (x *StorageRebalanceJob) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *StorageRebalanceJob) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_StorageRebalanceJob.Unmarshal(m, b) } - -func (*StorageRebalanceJob) ProtoMessage() {} - -func (x *StorageRebalanceJob) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[233] - 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) +func (m *StorageRebalanceJob) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_StorageRebalanceJob.Marshal(b, m, deterministic) } - -// Deprecated: Use StorageRebalanceJob.ProtoReflect.Descriptor instead. -func (*StorageRebalanceJob) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{233} +func (dst *StorageRebalanceJob) XXX_Merge(src proto.Message) { + xxx_messageInfo_StorageRebalanceJob.Merge(dst, src) +} +func (m *StorageRebalanceJob) XXX_Size() int { + return xxx_messageInfo_StorageRebalanceJob.Size(m) +} +func (m *StorageRebalanceJob) XXX_DiscardUnknown() { + xxx_messageInfo_StorageRebalanceJob.DiscardUnknown(m) } -func (x *StorageRebalanceJob) GetId() string { - if x != nil { - return x.Id +var xxx_messageInfo_StorageRebalanceJob proto.InternalMessageInfo + +func (m *StorageRebalanceJob) GetId() string { + if m != nil { + return m.Id } return "" } -func (x *StorageRebalanceJob) GetStatus() string { - if x != nil { - return x.Status +func (m *StorageRebalanceJob) GetStatus() string { + if m != nil { + return m.Status } return "" } -func (x *StorageRebalanceJob) GetState() StorageRebalanceJobState { - if x != nil { - return x.State +func (m *StorageRebalanceJob) GetState() StorageRebalanceJobState { + if m != nil { + return m.State } return StorageRebalanceJobState_PENDING } -func (x *StorageRebalanceJob) GetParameters() *SdkStorageRebalanceRequest { - if x != nil { - return x.Parameters +func (m *StorageRebalanceJob) GetParameters() *SdkStorageRebalanceRequest { + if m != nil { + return m.Parameters } return nil } -func (x *StorageRebalanceJob) GetCreateTime() *timestamppb.Timestamp { - if x != nil { - return x.CreateTime +func (m *StorageRebalanceJob) GetCreateTime() *timestamp.Timestamp { + if m != nil { + return m.CreateTime } return nil } -func (x *StorageRebalanceJob) GetLastUpdateTime() *timestamppb.Timestamp { - if x != nil { - return x.LastUpdateTime +func (m *StorageRebalanceJob) GetLastUpdateTime() *timestamp.Timestamp { + if m != nil { + return m.LastUpdateTime } return nil } // StorageRebalanceSummary describes summary for the job type StorageRebalanceSummary struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // TotalRunTimeSeconds is the total time rebalance is running - TotalRunTimeSeconds uint64 `protobuf:"varint,1,opt,name=total_run_time_seconds,json=totalRunTimeSeconds,proto3" json:"total_run_time_seconds,omitempty"` + TotalRunTimeSeconds uint64 `protobuf:"varint,1,opt,name=total_run_time_seconds,json=totalRunTimeSeconds" json:"total_run_time_seconds,omitempty"` // WorkSummary summarizes the work done - WorkSummary []*StorageRebalanceWorkSummary `protobuf:"bytes,2,rep,name=work_summary,json=workSummary,proto3" json:"work_summary,omitempty"` + WorkSummary []*StorageRebalanceWorkSummary `protobuf:"bytes,2,rep,name=work_summary,json=workSummary" json:"work_summary,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *StorageRebalanceSummary) Reset() { - *x = StorageRebalanceSummary{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[234] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *StorageRebalanceSummary) Reset() { *m = StorageRebalanceSummary{} } +func (m *StorageRebalanceSummary) String() string { return proto.CompactTextString(m) } +func (*StorageRebalanceSummary) ProtoMessage() {} +func (*StorageRebalanceSummary) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{229} } - -func (x *StorageRebalanceSummary) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *StorageRebalanceSummary) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_StorageRebalanceSummary.Unmarshal(m, b) } - -func (*StorageRebalanceSummary) ProtoMessage() {} - -func (x *StorageRebalanceSummary) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[234] - 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) +func (m *StorageRebalanceSummary) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_StorageRebalanceSummary.Marshal(b, m, deterministic) } - -// Deprecated: Use StorageRebalanceSummary.ProtoReflect.Descriptor instead. -func (*StorageRebalanceSummary) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{234} +func (dst *StorageRebalanceSummary) XXX_Merge(src proto.Message) { + xxx_messageInfo_StorageRebalanceSummary.Merge(dst, src) +} +func (m *StorageRebalanceSummary) XXX_Size() int { + return xxx_messageInfo_StorageRebalanceSummary.Size(m) } +func (m *StorageRebalanceSummary) XXX_DiscardUnknown() { + xxx_messageInfo_StorageRebalanceSummary.DiscardUnknown(m) +} + +var xxx_messageInfo_StorageRebalanceSummary proto.InternalMessageInfo -func (x *StorageRebalanceSummary) GetTotalRunTimeSeconds() uint64 { - if x != nil { - return x.TotalRunTimeSeconds +func (m *StorageRebalanceSummary) GetTotalRunTimeSeconds() uint64 { + if m != nil { + return m.TotalRunTimeSeconds } return 0 } -func (x *StorageRebalanceSummary) GetWorkSummary() []*StorageRebalanceWorkSummary { - if x != nil { - return x.WorkSummary +func (m *StorageRebalanceSummary) GetWorkSummary() []*StorageRebalanceWorkSummary { + if m != nil { + return m.WorkSummary } return nil } type StorageRebalanceWorkSummary struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Type describes the type of summary. - Type StorageRebalanceWorkSummary_Type `protobuf:"varint,1,opt,name=type,proto3,enum=openstorage.api.StorageRebalanceWorkSummary_Type" json:"type,omitempty"` + Type StorageRebalanceWorkSummary_Type `protobuf:"varint,1,opt,name=type,enum=openstorage.api.StorageRebalanceWorkSummary_Type" json:"type,omitempty"` // Done is the amount of bytes/work done - Done uint64 `protobuf:"varint,2,opt,name=done,proto3" json:"done,omitempty"` + Done uint64 `protobuf:"varint,2,opt,name=done" json:"done,omitempty"` // Pending is the amount of bytes/work pending. Done + Pending == Total - Pending uint64 `protobuf:"varint,3,opt,name=pending,proto3" json:"pending,omitempty"` + Pending uint64 `protobuf:"varint,3,opt,name=pending" json:"pending,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *StorageRebalanceWorkSummary) Reset() { - *x = StorageRebalanceWorkSummary{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[235] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *StorageRebalanceWorkSummary) Reset() { *m = StorageRebalanceWorkSummary{} } +func (m *StorageRebalanceWorkSummary) String() string { return proto.CompactTextString(m) } +func (*StorageRebalanceWorkSummary) ProtoMessage() {} +func (*StorageRebalanceWorkSummary) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{230} } - -func (x *StorageRebalanceWorkSummary) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *StorageRebalanceWorkSummary) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_StorageRebalanceWorkSummary.Unmarshal(m, b) } - -func (*StorageRebalanceWorkSummary) ProtoMessage() {} - -func (x *StorageRebalanceWorkSummary) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[235] - 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) +func (m *StorageRebalanceWorkSummary) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_StorageRebalanceWorkSummary.Marshal(b, m, deterministic) } - -// Deprecated: Use StorageRebalanceWorkSummary.ProtoReflect.Descriptor instead. -func (*StorageRebalanceWorkSummary) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{235} +func (dst *StorageRebalanceWorkSummary) XXX_Merge(src proto.Message) { + xxx_messageInfo_StorageRebalanceWorkSummary.Merge(dst, src) +} +func (m *StorageRebalanceWorkSummary) XXX_Size() int { + return xxx_messageInfo_StorageRebalanceWorkSummary.Size(m) +} +func (m *StorageRebalanceWorkSummary) XXX_DiscardUnknown() { + xxx_messageInfo_StorageRebalanceWorkSummary.DiscardUnknown(m) } -func (x *StorageRebalanceWorkSummary) GetType() StorageRebalanceWorkSummary_Type { - if x != nil { - return x.Type +var xxx_messageInfo_StorageRebalanceWorkSummary proto.InternalMessageInfo + +func (m *StorageRebalanceWorkSummary) GetType() StorageRebalanceWorkSummary_Type { + if m != nil { + return m.Type } return StorageRebalanceWorkSummary_UnbalancedPools } -func (x *StorageRebalanceWorkSummary) GetDone() uint64 { - if x != nil { - return x.Done +func (m *StorageRebalanceWorkSummary) GetDone() uint64 { + if m != nil { + return m.Done } return 0 } -func (x *StorageRebalanceWorkSummary) GetPending() uint64 { - if x != nil { - return x.Pending +func (m *StorageRebalanceWorkSummary) GetPending() uint64 { + if m != nil { + return m.Pending } return 0 } // StorageRebalanceAudit describes the action taken during rebalance type StorageRebalanceAudit struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // VolumeID is the id of the volume which was rebalanced - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // Name is the name of the volumes which was rebalanced - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` // Action is the action executed - Action StorageRebalanceAudit_StorageRebalanceAction `protobuf:"varint,3,opt,name=action,proto3,enum=openstorage.api.StorageRebalanceAudit_StorageRebalanceAction" json:"action,omitempty"` + Action StorageRebalanceAudit_StorageRebalanceAction `protobuf:"varint,3,opt,name=action,enum=openstorage.api.StorageRebalanceAudit_StorageRebalanceAction" json:"action,omitempty"` // Node on which this action happened - Node string `protobuf:"bytes,4,opt,name=node,proto3" json:"node,omitempty"` + Node string `protobuf:"bytes,4,opt,name=node" json:"node,omitempty"` // Pool on which this action happened - Pool string `protobuf:"bytes,5,opt,name=pool,proto3" json:"pool,omitempty"` + Pool string `protobuf:"bytes,5,opt,name=pool" json:"pool,omitempty"` // StartTime is the time at which action was started - StartTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + StartTime *timestamp.Timestamp `protobuf:"bytes,6,opt,name=start_time,json=startTime" json:"start_time,omitempty"` // EndTime is time time at which action ended - EndTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + EndTime *timestamp.Timestamp `protobuf:"bytes,7,opt,name=end_time,json=endTime" json:"end_time,omitempty"` // WorkSummary summarizes the work done - WorkSummary []*StorageRebalanceWorkSummary `protobuf:"bytes,8,rep,name=work_summary,json=workSummary,proto3" json:"work_summary,omitempty"` + WorkSummary []*StorageRebalanceWorkSummary `protobuf:"bytes,8,rep,name=work_summary,json=workSummary" json:"work_summary,omitempty"` // ReplicationSetId is the ID of the replication set - ReplicationSetId uint64 `protobuf:"varint,9,opt,name=replication_set_id,json=replicationSetId,proto3" json:"replication_set_id,omitempty"` + ReplicationSetId uint64 `protobuf:"varint,9,opt,name=replication_set_id,json=replicationSetId" json:"replication_set_id,omitempty"` // State is the current state of the rebalance action - State StorageRebalanceJobState `protobuf:"varint,10,opt,name=state,proto3,enum=openstorage.api.StorageRebalanceJobState" json:"state,omitempty"` + State StorageRebalanceJobState `protobuf:"varint,10,opt,name=state,enum=openstorage.api.StorageRebalanceJobState" json:"state,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *StorageRebalanceAudit) Reset() { - *x = StorageRebalanceAudit{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[236] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *StorageRebalanceAudit) Reset() { *m = StorageRebalanceAudit{} } +func (m *StorageRebalanceAudit) String() string { return proto.CompactTextString(m) } +func (*StorageRebalanceAudit) ProtoMessage() {} +func (*StorageRebalanceAudit) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{231} } - -func (x *StorageRebalanceAudit) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *StorageRebalanceAudit) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_StorageRebalanceAudit.Unmarshal(m, b) } - -func (*StorageRebalanceAudit) ProtoMessage() {} - -func (x *StorageRebalanceAudit) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[236] - 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) +func (m *StorageRebalanceAudit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_StorageRebalanceAudit.Marshal(b, m, deterministic) } - -// Deprecated: Use StorageRebalanceAudit.ProtoReflect.Descriptor instead. -func (*StorageRebalanceAudit) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{236} +func (dst *StorageRebalanceAudit) XXX_Merge(src proto.Message) { + xxx_messageInfo_StorageRebalanceAudit.Merge(dst, src) +} +func (m *StorageRebalanceAudit) XXX_Size() int { + return xxx_messageInfo_StorageRebalanceAudit.Size(m) } +func (m *StorageRebalanceAudit) XXX_DiscardUnknown() { + xxx_messageInfo_StorageRebalanceAudit.DiscardUnknown(m) +} + +var xxx_messageInfo_StorageRebalanceAudit proto.InternalMessageInfo -func (x *StorageRebalanceAudit) GetVolumeId() string { - if x != nil { - return x.VolumeId +func (m *StorageRebalanceAudit) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *StorageRebalanceAudit) GetName() string { - if x != nil { - return x.Name +func (m *StorageRebalanceAudit) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *StorageRebalanceAudit) GetAction() StorageRebalanceAudit_StorageRebalanceAction { - if x != nil { - return x.Action +func (m *StorageRebalanceAudit) GetAction() StorageRebalanceAudit_StorageRebalanceAction { + if m != nil { + return m.Action } return StorageRebalanceAudit_ADD_REPLICA } -func (x *StorageRebalanceAudit) GetNode() string { - if x != nil { - return x.Node +func (m *StorageRebalanceAudit) GetNode() string { + if m != nil { + return m.Node } return "" } -func (x *StorageRebalanceAudit) GetPool() string { - if x != nil { - return x.Pool +func (m *StorageRebalanceAudit) GetPool() string { + if m != nil { + return m.Pool } return "" } -func (x *StorageRebalanceAudit) GetStartTime() *timestamppb.Timestamp { - if x != nil { - return x.StartTime +func (m *StorageRebalanceAudit) GetStartTime() *timestamp.Timestamp { + if m != nil { + return m.StartTime } return nil } -func (x *StorageRebalanceAudit) GetEndTime() *timestamppb.Timestamp { - if x != nil { - return x.EndTime +func (m *StorageRebalanceAudit) GetEndTime() *timestamp.Timestamp { + if m != nil { + return m.EndTime } return nil } -func (x *StorageRebalanceAudit) GetWorkSummary() []*StorageRebalanceWorkSummary { - if x != nil { - return x.WorkSummary +func (m *StorageRebalanceAudit) GetWorkSummary() []*StorageRebalanceWorkSummary { + if m != nil { + return m.WorkSummary } return nil } -func (x *StorageRebalanceAudit) GetReplicationSetId() uint64 { - if x != nil { - return x.ReplicationSetId +func (m *StorageRebalanceAudit) GetReplicationSetId() uint64 { + if m != nil { + return m.ReplicationSetId } return 0 } -func (x *StorageRebalanceAudit) GetState() StorageRebalanceJobState { - if x != nil { - return x.State +func (m *StorageRebalanceAudit) GetState() StorageRebalanceJobState { + if m != nil { + return m.State } return StorageRebalanceJobState_PENDING } type SdkUpdateRebalanceJobRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // ID of the rebalance job - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` // State is the new task state to update the job to - State StorageRebalanceJobState `protobuf:"varint,2,opt,name=state,proto3,enum=openstorage.api.StorageRebalanceJobState" json:"state,omitempty"` + State StorageRebalanceJobState `protobuf:"varint,2,opt,name=state,enum=openstorage.api.StorageRebalanceJobState" json:"state,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkUpdateRebalanceJobRequest) Reset() { - *x = SdkUpdateRebalanceJobRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[237] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkUpdateRebalanceJobRequest) Reset() { *m = SdkUpdateRebalanceJobRequest{} } +func (m *SdkUpdateRebalanceJobRequest) String() string { return proto.CompactTextString(m) } +func (*SdkUpdateRebalanceJobRequest) ProtoMessage() {} +func (*SdkUpdateRebalanceJobRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{232} } - -func (x *SdkUpdateRebalanceJobRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkUpdateRebalanceJobRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkUpdateRebalanceJobRequest.Unmarshal(m, b) } - -func (*SdkUpdateRebalanceJobRequest) ProtoMessage() {} - -func (x *SdkUpdateRebalanceJobRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[237] - 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) +func (m *SdkUpdateRebalanceJobRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkUpdateRebalanceJobRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkUpdateRebalanceJobRequest.ProtoReflect.Descriptor instead. -func (*SdkUpdateRebalanceJobRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{237} +func (dst *SdkUpdateRebalanceJobRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkUpdateRebalanceJobRequest.Merge(dst, src) +} +func (m *SdkUpdateRebalanceJobRequest) XXX_Size() int { + return xxx_messageInfo_SdkUpdateRebalanceJobRequest.Size(m) +} +func (m *SdkUpdateRebalanceJobRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkUpdateRebalanceJobRequest.DiscardUnknown(m) } -func (x *SdkUpdateRebalanceJobRequest) GetId() string { - if x != nil { - return x.Id +var xxx_messageInfo_SdkUpdateRebalanceJobRequest proto.InternalMessageInfo + +func (m *SdkUpdateRebalanceJobRequest) GetId() string { + if m != nil { + return m.Id } return "" } -func (x *SdkUpdateRebalanceJobRequest) GetState() StorageRebalanceJobState { - if x != nil { - return x.State +func (m *SdkUpdateRebalanceJobRequest) GetState() StorageRebalanceJobState { + if m != nil { + return m.State } return StorageRebalanceJobState_PENDING } type SdkUpdateRebalanceJobResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkUpdateRebalanceJobResponse) Reset() { - *x = SdkUpdateRebalanceJobResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[238] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkUpdateRebalanceJobResponse) Reset() { *m = SdkUpdateRebalanceJobResponse{} } +func (m *SdkUpdateRebalanceJobResponse) String() string { return proto.CompactTextString(m) } +func (*SdkUpdateRebalanceJobResponse) ProtoMessage() {} +func (*SdkUpdateRebalanceJobResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{233} } - -func (x *SdkUpdateRebalanceJobResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkUpdateRebalanceJobResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkUpdateRebalanceJobResponse.Unmarshal(m, b) } - -func (*SdkUpdateRebalanceJobResponse) ProtoMessage() {} - -func (x *SdkUpdateRebalanceJobResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[238] - 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) +func (m *SdkUpdateRebalanceJobResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkUpdateRebalanceJobResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkUpdateRebalanceJobResponse.ProtoReflect.Descriptor instead. -func (*SdkUpdateRebalanceJobResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{238} +func (dst *SdkUpdateRebalanceJobResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkUpdateRebalanceJobResponse.Merge(dst, src) +} +func (m *SdkUpdateRebalanceJobResponse) XXX_Size() int { + return xxx_messageInfo_SdkUpdateRebalanceJobResponse.Size(m) +} +func (m *SdkUpdateRebalanceJobResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkUpdateRebalanceJobResponse.DiscardUnknown(m) } -type SdkGetRebalanceJobStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +var xxx_messageInfo_SdkUpdateRebalanceJobResponse proto.InternalMessageInfo +type SdkGetRebalanceJobStatusRequest struct { // ID of the rebalance job - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkGetRebalanceJobStatusRequest) Reset() { - *x = SdkGetRebalanceJobStatusRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[239] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkGetRebalanceJobStatusRequest) Reset() { *m = SdkGetRebalanceJobStatusRequest{} } +func (m *SdkGetRebalanceJobStatusRequest) String() string { return proto.CompactTextString(m) } +func (*SdkGetRebalanceJobStatusRequest) ProtoMessage() {} +func (*SdkGetRebalanceJobStatusRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{234} } - -func (x *SdkGetRebalanceJobStatusRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkGetRebalanceJobStatusRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkGetRebalanceJobStatusRequest.Unmarshal(m, b) } - -func (*SdkGetRebalanceJobStatusRequest) ProtoMessage() {} - -func (x *SdkGetRebalanceJobStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[239] - 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) +func (m *SdkGetRebalanceJobStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkGetRebalanceJobStatusRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkGetRebalanceJobStatusRequest.ProtoReflect.Descriptor instead. -func (*SdkGetRebalanceJobStatusRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{239} +func (dst *SdkGetRebalanceJobStatusRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkGetRebalanceJobStatusRequest.Merge(dst, src) +} +func (m *SdkGetRebalanceJobStatusRequest) XXX_Size() int { + return xxx_messageInfo_SdkGetRebalanceJobStatusRequest.Size(m) } +func (m *SdkGetRebalanceJobStatusRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkGetRebalanceJobStatusRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkGetRebalanceJobStatusRequest proto.InternalMessageInfo -func (x *SdkGetRebalanceJobStatusRequest) GetId() string { - if x != nil { - return x.Id +func (m *SdkGetRebalanceJobStatusRequest) GetId() string { + if m != nil { + return m.Id } return "" } type SdkGetRebalanceJobStatusResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Job for this rebalance - Job *StorageRebalanceJob `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"` + Job *StorageRebalanceJob `protobuf:"bytes,1,opt,name=job" json:"job,omitempty"` // Summary summarizes the rebalance job - Summary *StorageRebalanceSummary `protobuf:"bytes,2,opt,name=summary,proto3" json:"summary,omitempty"` + Summary *StorageRebalanceSummary `protobuf:"bytes,2,opt,name=summary" json:"summary,omitempty"` // Actions describe all the actions taken during this rebalance - Actions []*StorageRebalanceAudit `protobuf:"bytes,3,rep,name=actions,proto3" json:"actions,omitempty"` + Actions []*StorageRebalanceAudit `protobuf:"bytes,3,rep,name=actions" json:"actions,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkGetRebalanceJobStatusResponse) Reset() { - *x = SdkGetRebalanceJobStatusResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[240] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkGetRebalanceJobStatusResponse) Reset() { *m = SdkGetRebalanceJobStatusResponse{} } +func (m *SdkGetRebalanceJobStatusResponse) String() string { return proto.CompactTextString(m) } +func (*SdkGetRebalanceJobStatusResponse) ProtoMessage() {} +func (*SdkGetRebalanceJobStatusResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{235} } - -func (x *SdkGetRebalanceJobStatusResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkGetRebalanceJobStatusResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkGetRebalanceJobStatusResponse.Unmarshal(m, b) } - -func (*SdkGetRebalanceJobStatusResponse) ProtoMessage() {} - -func (x *SdkGetRebalanceJobStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[240] - 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) +func (m *SdkGetRebalanceJobStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkGetRebalanceJobStatusResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkGetRebalanceJobStatusResponse.ProtoReflect.Descriptor instead. -func (*SdkGetRebalanceJobStatusResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{240} +func (dst *SdkGetRebalanceJobStatusResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkGetRebalanceJobStatusResponse.Merge(dst, src) +} +func (m *SdkGetRebalanceJobStatusResponse) XXX_Size() int { + return xxx_messageInfo_SdkGetRebalanceJobStatusResponse.Size(m) } +func (m *SdkGetRebalanceJobStatusResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkGetRebalanceJobStatusResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkGetRebalanceJobStatusResponse proto.InternalMessageInfo -func (x *SdkGetRebalanceJobStatusResponse) GetJob() *StorageRebalanceJob { - if x != nil { - return x.Job +func (m *SdkGetRebalanceJobStatusResponse) GetJob() *StorageRebalanceJob { + if m != nil { + return m.Job } return nil } -func (x *SdkGetRebalanceJobStatusResponse) GetSummary() *StorageRebalanceSummary { - if x != nil { - return x.Summary +func (m *SdkGetRebalanceJobStatusResponse) GetSummary() *StorageRebalanceSummary { + if m != nil { + return m.Summary } return nil } -func (x *SdkGetRebalanceJobStatusResponse) GetActions() []*StorageRebalanceAudit { - if x != nil { - return x.Actions +func (m *SdkGetRebalanceJobStatusResponse) GetActions() []*StorageRebalanceAudit { + if m != nil { + return m.Actions } return nil } type SdkEnumerateRebalanceJobsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkEnumerateRebalanceJobsRequest) Reset() { - *x = SdkEnumerateRebalanceJobsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[241] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkEnumerateRebalanceJobsRequest) Reset() { *m = SdkEnumerateRebalanceJobsRequest{} } +func (m *SdkEnumerateRebalanceJobsRequest) String() string { return proto.CompactTextString(m) } +func (*SdkEnumerateRebalanceJobsRequest) ProtoMessage() {} +func (*SdkEnumerateRebalanceJobsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{236} } - -func (x *SdkEnumerateRebalanceJobsRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkEnumerateRebalanceJobsRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkEnumerateRebalanceJobsRequest.Unmarshal(m, b) } - -func (*SdkEnumerateRebalanceJobsRequest) ProtoMessage() {} - -func (x *SdkEnumerateRebalanceJobsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[241] - 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) +func (m *SdkEnumerateRebalanceJobsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkEnumerateRebalanceJobsRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkEnumerateRebalanceJobsRequest.ProtoReflect.Descriptor instead. -func (*SdkEnumerateRebalanceJobsRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{241} +func (dst *SdkEnumerateRebalanceJobsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkEnumerateRebalanceJobsRequest.Merge(dst, src) +} +func (m *SdkEnumerateRebalanceJobsRequest) XXX_Size() int { + return xxx_messageInfo_SdkEnumerateRebalanceJobsRequest.Size(m) +} +func (m *SdkEnumerateRebalanceJobsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkEnumerateRebalanceJobsRequest.DiscardUnknown(m) } -type SdkEnumerateRebalanceJobsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +var xxx_messageInfo_SdkEnumerateRebalanceJobsRequest proto.InternalMessageInfo +type SdkEnumerateRebalanceJobsResponse struct { // Jobs is the list of rebalance jobs in the response - Jobs []*StorageRebalanceJob `protobuf:"bytes,1,rep,name=jobs,proto3" json:"jobs,omitempty"` + Jobs []*StorageRebalanceJob `protobuf:"bytes,1,rep,name=jobs" json:"jobs,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkEnumerateRebalanceJobsResponse) Reset() { - *x = SdkEnumerateRebalanceJobsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[242] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkEnumerateRebalanceJobsResponse) Reset() { *m = SdkEnumerateRebalanceJobsResponse{} } +func (m *SdkEnumerateRebalanceJobsResponse) String() string { return proto.CompactTextString(m) } +func (*SdkEnumerateRebalanceJobsResponse) ProtoMessage() {} +func (*SdkEnumerateRebalanceJobsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{237} } - -func (x *SdkEnumerateRebalanceJobsResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkEnumerateRebalanceJobsResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkEnumerateRebalanceJobsResponse.Unmarshal(m, b) } - -func (*SdkEnumerateRebalanceJobsResponse) ProtoMessage() {} - -func (x *SdkEnumerateRebalanceJobsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[242] - 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) +func (m *SdkEnumerateRebalanceJobsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkEnumerateRebalanceJobsResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkEnumerateRebalanceJobsResponse.ProtoReflect.Descriptor instead. -func (*SdkEnumerateRebalanceJobsResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{242} +func (dst *SdkEnumerateRebalanceJobsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkEnumerateRebalanceJobsResponse.Merge(dst, src) +} +func (m *SdkEnumerateRebalanceJobsResponse) XXX_Size() int { + return xxx_messageInfo_SdkEnumerateRebalanceJobsResponse.Size(m) } +func (m *SdkEnumerateRebalanceJobsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkEnumerateRebalanceJobsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkEnumerateRebalanceJobsResponse proto.InternalMessageInfo -func (x *SdkEnumerateRebalanceJobsResponse) GetJobs() []*StorageRebalanceJob { - if x != nil { - return x.Jobs +func (m *SdkEnumerateRebalanceJobsResponse) GetJobs() []*StorageRebalanceJob { + if m != nil { + return m.Jobs } return nil } -type RebalanceScheduleInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Schedule string `protobuf:"bytes,1,opt,name=schedule,proto3" json:"schedule,omitempty"` - RebalanceRequests []*SdkStorageRebalanceRequest `protobuf:"bytes,2,rep,name=rebalance_requests,json=rebalanceRequests,proto3" json:"rebalance_requests,omitempty"` - CreateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` +type SdkStoragePool struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *RebalanceScheduleInfo) Reset() { - *x = RebalanceScheduleInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[243] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkStoragePool) Reset() { *m = SdkStoragePool{} } +func (m *SdkStoragePool) String() string { return proto.CompactTextString(m) } +func (*SdkStoragePool) ProtoMessage() {} +func (*SdkStoragePool) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{238} } - -func (x *RebalanceScheduleInfo) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkStoragePool) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkStoragePool.Unmarshal(m, b) } - -func (*RebalanceScheduleInfo) ProtoMessage() {} - -func (x *RebalanceScheduleInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[243] - 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) +func (m *SdkStoragePool) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkStoragePool.Marshal(b, m, deterministic) } - -// Deprecated: Use RebalanceScheduleInfo.ProtoReflect.Descriptor instead. -func (*RebalanceScheduleInfo) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{243} +func (dst *SdkStoragePool) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkStoragePool.Merge(dst, src) } - -func (x *RebalanceScheduleInfo) GetSchedule() string { - if x != nil { - return x.Schedule - } - return "" +func (m *SdkStoragePool) XXX_Size() int { + return xxx_messageInfo_SdkStoragePool.Size(m) } - -func (x *RebalanceScheduleInfo) GetRebalanceRequests() []*SdkStorageRebalanceRequest { - if x != nil { - return x.RebalanceRequests - } - return nil +func (m *SdkStoragePool) XXX_DiscardUnknown() { + xxx_messageInfo_SdkStoragePool.DiscardUnknown(m) } -func (x *RebalanceScheduleInfo) GetCreateTime() *timestamppb.Timestamp { - if x != nil { - return x.CreateTime - } - return nil +var xxx_messageInfo_SdkStoragePool proto.InternalMessageInfo + +// Defines a response when resizing a storage pool +type SdkStoragePoolResizeResponse struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -type SdkCreateRebalanceScheduleRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Schedule string `protobuf:"bytes,1,opt,name=schedule,proto3" json:"schedule,omitempty"` - RebalanceRequests []*SdkStorageRebalanceRequest `protobuf:"bytes,2,rep,name=rebalance_requests,json=rebalanceRequests,proto3" json:"rebalance_requests,omitempty"` -} - -func (x *SdkCreateRebalanceScheduleRequest) Reset() { - *x = SdkCreateRebalanceScheduleRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[244] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SdkCreateRebalanceScheduleRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkStoragePoolResizeResponse) Reset() { *m = SdkStoragePoolResizeResponse{} } +func (m *SdkStoragePoolResizeResponse) String() string { return proto.CompactTextString(m) } +func (*SdkStoragePoolResizeResponse) ProtoMessage() {} +func (*SdkStoragePoolResizeResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{239} } - -func (*SdkCreateRebalanceScheduleRequest) ProtoMessage() {} - -func (x *SdkCreateRebalanceScheduleRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[244] - 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) +func (m *SdkStoragePoolResizeResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkStoragePoolResizeResponse.Unmarshal(m, b) } - -// Deprecated: Use SdkCreateRebalanceScheduleRequest.ProtoReflect.Descriptor instead. -func (*SdkCreateRebalanceScheduleRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{244} +func (m *SdkStoragePoolResizeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkStoragePoolResizeResponse.Marshal(b, m, deterministic) } - -func (x *SdkCreateRebalanceScheduleRequest) GetSchedule() string { - if x != nil { - return x.Schedule - } - return "" +func (dst *SdkStoragePoolResizeResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkStoragePoolResizeResponse.Merge(dst, src) } - -func (x *SdkCreateRebalanceScheduleRequest) GetRebalanceRequests() []*SdkStorageRebalanceRequest { - if x != nil { - return x.RebalanceRequests - } - return nil +func (m *SdkStoragePoolResizeResponse) XXX_Size() int { + return xxx_messageInfo_SdkStoragePoolResizeResponse.Size(m) } - -type SdkCreateRebalanceScheduleResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ScheduleInfo *RebalanceScheduleInfo `protobuf:"bytes,1,opt,name=scheduleInfo,proto3" json:"scheduleInfo,omitempty"` +func (m *SdkStoragePoolResizeResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkStoragePoolResizeResponse.DiscardUnknown(m) } -func (x *SdkCreateRebalanceScheduleResponse) Reset() { - *x = SdkCreateRebalanceScheduleResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[245] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} +var xxx_messageInfo_SdkStoragePoolResizeResponse proto.InternalMessageInfo -func (x *SdkCreateRebalanceScheduleResponse) String() string { - return protoimpl.X.MessageStringOf(x) +// Defines a response when inspecting a node +type SdkNodeInspectResponse struct { + // Node information + Node *StorageNode `protobuf:"bytes,1,opt,name=node" json:"node,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (*SdkCreateRebalanceScheduleResponse) ProtoMessage() {} - -func (x *SdkCreateRebalanceScheduleResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[245] - 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) +func (m *SdkNodeInspectResponse) Reset() { *m = SdkNodeInspectResponse{} } +func (m *SdkNodeInspectResponse) String() string { return proto.CompactTextString(m) } +func (*SdkNodeInspectResponse) ProtoMessage() {} +func (*SdkNodeInspectResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{240} } - -// Deprecated: Use SdkCreateRebalanceScheduleResponse.ProtoReflect.Descriptor instead. -func (*SdkCreateRebalanceScheduleResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{245} +func (m *SdkNodeInspectResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkNodeInspectResponse.Unmarshal(m, b) } - -func (x *SdkCreateRebalanceScheduleResponse) GetScheduleInfo() *RebalanceScheduleInfo { - if x != nil { - return x.ScheduleInfo - } - return nil +func (m *SdkNodeInspectResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkNodeInspectResponse.Marshal(b, m, deterministic) } - -type SdkGetRebalanceScheduleRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (dst *SdkNodeInspectResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkNodeInspectResponse.Merge(dst, src) } - -func (x *SdkGetRebalanceScheduleRequest) Reset() { - *x = SdkGetRebalanceScheduleRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[246] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkNodeInspectResponse) XXX_Size() int { + return xxx_messageInfo_SdkNodeInspectResponse.Size(m) } - -func (x *SdkGetRebalanceScheduleRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkNodeInspectResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkNodeInspectResponse.DiscardUnknown(m) } -func (*SdkGetRebalanceScheduleRequest) ProtoMessage() {} +var xxx_messageInfo_SdkNodeInspectResponse proto.InternalMessageInfo -func (x *SdkGetRebalanceScheduleRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[246] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (m *SdkNodeInspectResponse) GetNode() *StorageNode { + if m != nil { + return m.Node } - return mi.MessageOf(x) + return nil } -// Deprecated: Use SdkGetRebalanceScheduleRequest.ProtoReflect.Descriptor instead. -func (*SdkGetRebalanceScheduleRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{246} +// Empty request +type SdkNodeInspectCurrentRequest struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -type SdkGetRebalanceScheduleResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ScheduleInfo *RebalanceScheduleInfo `protobuf:"bytes,1,opt,name=scheduleInfo,proto3" json:"scheduleInfo,omitempty"` +func (m *SdkNodeInspectCurrentRequest) Reset() { *m = SdkNodeInspectCurrentRequest{} } +func (m *SdkNodeInspectCurrentRequest) String() string { return proto.CompactTextString(m) } +func (*SdkNodeInspectCurrentRequest) ProtoMessage() {} +func (*SdkNodeInspectCurrentRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{241} } - -func (x *SdkGetRebalanceScheduleResponse) Reset() { - *x = SdkGetRebalanceScheduleResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[247] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkNodeInspectCurrentRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkNodeInspectCurrentRequest.Unmarshal(m, b) } - -func (x *SdkGetRebalanceScheduleResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkNodeInspectCurrentRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkNodeInspectCurrentRequest.Marshal(b, m, deterministic) } - -func (*SdkGetRebalanceScheduleResponse) ProtoMessage() {} - -func (x *SdkGetRebalanceScheduleResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[247] - 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) +func (dst *SdkNodeInspectCurrentRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkNodeInspectCurrentRequest.Merge(dst, src) } - -// Deprecated: Use SdkGetRebalanceScheduleResponse.ProtoReflect.Descriptor instead. -func (*SdkGetRebalanceScheduleResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{247} +func (m *SdkNodeInspectCurrentRequest) XXX_Size() int { + return xxx_messageInfo_SdkNodeInspectCurrentRequest.Size(m) } - -func (x *SdkGetRebalanceScheduleResponse) GetScheduleInfo() *RebalanceScheduleInfo { - if x != nil { - return x.ScheduleInfo - } - return nil +func (m *SdkNodeInspectCurrentRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkNodeInspectCurrentRequest.DiscardUnknown(m) } -type SdkDeleteRebalanceScheduleRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} +var xxx_messageInfo_SdkNodeInspectCurrentRequest proto.InternalMessageInfo -func (x *SdkDeleteRebalanceScheduleRequest) Reset() { - *x = SdkDeleteRebalanceScheduleRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[248] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +// Defines a response when inspecting a node +type SdkNodeInspectCurrentResponse struct { + // Node information + Node *StorageNode `protobuf:"bytes,1,opt,name=node" json:"node,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkDeleteRebalanceScheduleRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkNodeInspectCurrentResponse) Reset() { *m = SdkNodeInspectCurrentResponse{} } +func (m *SdkNodeInspectCurrentResponse) String() string { return proto.CompactTextString(m) } +func (*SdkNodeInspectCurrentResponse) ProtoMessage() {} +func (*SdkNodeInspectCurrentResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{242} } - -func (*SdkDeleteRebalanceScheduleRequest) ProtoMessage() {} - -func (x *SdkDeleteRebalanceScheduleRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[248] - 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) +func (m *SdkNodeInspectCurrentResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkNodeInspectCurrentResponse.Unmarshal(m, b) } - -// Deprecated: Use SdkDeleteRebalanceScheduleRequest.ProtoReflect.Descriptor instead. -func (*SdkDeleteRebalanceScheduleRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{248} +func (m *SdkNodeInspectCurrentResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkNodeInspectCurrentResponse.Marshal(b, m, deterministic) } - -type SdkDeleteRebalanceScheduleResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (dst *SdkNodeInspectCurrentResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkNodeInspectCurrentResponse.Merge(dst, src) } - -func (x *SdkDeleteRebalanceScheduleResponse) Reset() { - *x = SdkDeleteRebalanceScheduleResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[249] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkNodeInspectCurrentResponse) XXX_Size() int { + return xxx_messageInfo_SdkNodeInspectCurrentResponse.Size(m) } - -func (x *SdkDeleteRebalanceScheduleResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkNodeInspectCurrentResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkNodeInspectCurrentResponse.DiscardUnknown(m) } -func (*SdkDeleteRebalanceScheduleResponse) ProtoMessage() {} +var xxx_messageInfo_SdkNodeInspectCurrentResponse proto.InternalMessageInfo -func (x *SdkDeleteRebalanceScheduleResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[249] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (m *SdkNodeInspectCurrentResponse) GetNode() *StorageNode { + if m != nil { + return m.Node } - return mi.MessageOf(x) + return nil } -// Deprecated: Use SdkDeleteRebalanceScheduleResponse.ProtoReflect.Descriptor instead. -func (*SdkDeleteRebalanceScheduleResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{249} +// Empty request +type SdkNodeEnumerateRequest struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -type SdkStoragePool struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (m *SdkNodeEnumerateRequest) Reset() { *m = SdkNodeEnumerateRequest{} } +func (m *SdkNodeEnumerateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkNodeEnumerateRequest) ProtoMessage() {} +func (*SdkNodeEnumerateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{243} } - -func (x *SdkStoragePool) Reset() { - *x = SdkStoragePool{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[250] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkNodeEnumerateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkNodeEnumerateRequest.Unmarshal(m, b) } - -func (x *SdkStoragePool) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkNodeEnumerateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkNodeEnumerateRequest.Marshal(b, m, deterministic) } - -func (*SdkStoragePool) ProtoMessage() {} - -func (x *SdkStoragePool) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[250] - 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) +func (dst *SdkNodeEnumerateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkNodeEnumerateRequest.Merge(dst, src) } - -// Deprecated: Use SdkStoragePool.ProtoReflect.Descriptor instead. -func (*SdkStoragePool) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{250} +func (m *SdkNodeEnumerateRequest) XXX_Size() int { + return xxx_messageInfo_SdkNodeEnumerateRequest.Size(m) } - -// Defines a response when resizing a storage pool -type SdkStoragePoolResizeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (m *SdkNodeEnumerateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkNodeEnumerateRequest.DiscardUnknown(m) } -func (x *SdkStoragePoolResizeResponse) Reset() { - *x = SdkStoragePoolResizeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[251] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} +var xxx_messageInfo_SdkNodeEnumerateRequest proto.InternalMessageInfo -func (x *SdkStoragePoolResizeResponse) String() string { - return protoimpl.X.MessageStringOf(x) +// Defines a response with a list of node ids +type SdkNodeEnumerateResponse struct { + // List of all the node ids in the cluster + NodeIds []string `protobuf:"bytes,1,rep,name=node_ids,json=nodeIds" json:"node_ids,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (*SdkStoragePoolResizeResponse) ProtoMessage() {} - -func (x *SdkStoragePoolResizeResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[251] - 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) +func (m *SdkNodeEnumerateResponse) Reset() { *m = SdkNodeEnumerateResponse{} } +func (m *SdkNodeEnumerateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkNodeEnumerateResponse) ProtoMessage() {} +func (*SdkNodeEnumerateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{244} } - -// Deprecated: Use SdkStoragePoolResizeResponse.ProtoReflect.Descriptor instead. -func (*SdkStoragePoolResizeResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{251} +func (m *SdkNodeEnumerateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkNodeEnumerateResponse.Unmarshal(m, b) } - -// Defines a response when inspecting a node -type SdkNodeInspectResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Node information - Node *StorageNode `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` +func (m *SdkNodeEnumerateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkNodeEnumerateResponse.Marshal(b, m, deterministic) } - -func (x *SdkNodeInspectResponse) Reset() { - *x = SdkNodeInspectResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[252] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (dst *SdkNodeEnumerateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkNodeEnumerateResponse.Merge(dst, src) } - -func (x *SdkNodeInspectResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkNodeEnumerateResponse) XXX_Size() int { + return xxx_messageInfo_SdkNodeEnumerateResponse.Size(m) } - -func (*SdkNodeInspectResponse) ProtoMessage() {} - -func (x *SdkNodeInspectResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[252] - 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) +func (m *SdkNodeEnumerateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkNodeEnumerateResponse.DiscardUnknown(m) } -// Deprecated: Use SdkNodeInspectResponse.ProtoReflect.Descriptor instead. -func (*SdkNodeInspectResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{252} -} +var xxx_messageInfo_SdkNodeEnumerateResponse proto.InternalMessageInfo -func (x *SdkNodeInspectResponse) GetNode() *StorageNode { - if x != nil { - return x.Node +func (m *SdkNodeEnumerateResponse) GetNodeIds() []string { + if m != nil { + return m.NodeIds } return nil } -// Empty request -type SdkNodeInspectCurrentRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *SdkNodeInspectCurrentRequest) Reset() { - *x = SdkNodeInspectCurrentRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[253] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +// Defines a request to list nodes with given filter. Currently there are +// no filters and all the nodes will be returned. +type SdkNodeEnumerateWithFiltersRequest struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkNodeInspectCurrentRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkNodeEnumerateWithFiltersRequest) Reset() { *m = SdkNodeEnumerateWithFiltersRequest{} } +func (m *SdkNodeEnumerateWithFiltersRequest) String() string { return proto.CompactTextString(m) } +func (*SdkNodeEnumerateWithFiltersRequest) ProtoMessage() {} +func (*SdkNodeEnumerateWithFiltersRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{245} } - -func (*SdkNodeInspectCurrentRequest) ProtoMessage() {} - -func (x *SdkNodeInspectCurrentRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[253] - 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) +func (m *SdkNodeEnumerateWithFiltersRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkNodeEnumerateWithFiltersRequest.Unmarshal(m, b) } - -// Deprecated: Use SdkNodeInspectCurrentRequest.ProtoReflect.Descriptor instead. -func (*SdkNodeInspectCurrentRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{253} +func (m *SdkNodeEnumerateWithFiltersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkNodeEnumerateWithFiltersRequest.Marshal(b, m, deterministic) } - -// Defines a response when inspecting a node -type SdkNodeInspectCurrentResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Node information - Node *StorageNode `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` +func (dst *SdkNodeEnumerateWithFiltersRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkNodeEnumerateWithFiltersRequest.Merge(dst, src) } - -func (x *SdkNodeInspectCurrentResponse) Reset() { - *x = SdkNodeInspectCurrentResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[254] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkNodeEnumerateWithFiltersRequest) XXX_Size() int { + return xxx_messageInfo_SdkNodeEnumerateWithFiltersRequest.Size(m) } - -func (x *SdkNodeInspectCurrentResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkNodeEnumerateWithFiltersRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkNodeEnumerateWithFiltersRequest.DiscardUnknown(m) } -func (*SdkNodeInspectCurrentResponse) ProtoMessage() {} +var xxx_messageInfo_SdkNodeEnumerateWithFiltersRequest proto.InternalMessageInfo -func (x *SdkNodeInspectCurrentResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[254] - 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) +// Defines a response with a list of nodes +type SdkNodeEnumerateWithFiltersResponse struct { + // List of all the nodes in the cluster + Nodes []*StorageNode `protobuf:"bytes,1,rep,name=nodes" json:"nodes,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -// Deprecated: Use SdkNodeInspectCurrentResponse.ProtoReflect.Descriptor instead. -func (*SdkNodeInspectCurrentResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{254} +func (m *SdkNodeEnumerateWithFiltersResponse) Reset() { *m = SdkNodeEnumerateWithFiltersResponse{} } +func (m *SdkNodeEnumerateWithFiltersResponse) String() string { return proto.CompactTextString(m) } +func (*SdkNodeEnumerateWithFiltersResponse) ProtoMessage() {} +func (*SdkNodeEnumerateWithFiltersResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{246} } - -func (x *SdkNodeInspectCurrentResponse) GetNode() *StorageNode { - if x != nil { - return x.Node - } - return nil +func (m *SdkNodeEnumerateWithFiltersResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkNodeEnumerateWithFiltersResponse.Unmarshal(m, b) } - -// Empty request -type SdkNodeEnumerateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (m *SdkNodeEnumerateWithFiltersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkNodeEnumerateWithFiltersResponse.Marshal(b, m, deterministic) } - -func (x *SdkNodeEnumerateRequest) Reset() { - *x = SdkNodeEnumerateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[255] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (dst *SdkNodeEnumerateWithFiltersResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkNodeEnumerateWithFiltersResponse.Merge(dst, src) } - -func (x *SdkNodeEnumerateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkNodeEnumerateWithFiltersResponse) XXX_Size() int { + return xxx_messageInfo_SdkNodeEnumerateWithFiltersResponse.Size(m) +} +func (m *SdkNodeEnumerateWithFiltersResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkNodeEnumerateWithFiltersResponse.DiscardUnknown(m) } -func (*SdkNodeEnumerateRequest) ProtoMessage() {} +var xxx_messageInfo_SdkNodeEnumerateWithFiltersResponse proto.InternalMessageInfo -func (x *SdkNodeEnumerateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[255] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (m *SdkNodeEnumerateWithFiltersResponse) GetNodes() []*StorageNode { + if m != nil { + return m.Nodes } - return mi.MessageOf(x) + return nil } -// Deprecated: Use SdkNodeEnumerateRequest.ProtoReflect.Descriptor instead. -func (*SdkNodeEnumerateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{255} +// Defines a request to filter nodes from the input list, such that the filtered nodes can +// don't have overlapping volume replicas. This can be used to upgrade nodes in parallel. +type SdkFilterNonOverlappingNodesRequest struct { + // List of nodes IDs from which we need to filter the non-overlapping nodes. + InputNodes []string `protobuf:"bytes,1,rep,name=input_nodes,json=inputNodes" json:"input_nodes,omitempty"` + // List of IDs of nodes that are down or the caller deems to be down. + DownNodes []string `protobuf:"bytes,2,rep,name=down_nodes,json=downNodes" json:"down_nodes,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -// Defines a response with a list of node ids -type SdkNodeEnumerateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // List of all the node ids in the cluster - NodeIds []string `protobuf:"bytes,1,rep,name=node_ids,json=nodeIds,proto3" json:"node_ids,omitempty"` +func (m *SdkFilterNonOverlappingNodesRequest) Reset() { *m = SdkFilterNonOverlappingNodesRequest{} } +func (m *SdkFilterNonOverlappingNodesRequest) String() string { return proto.CompactTextString(m) } +func (*SdkFilterNonOverlappingNodesRequest) ProtoMessage() {} +func (*SdkFilterNonOverlappingNodesRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{247} } - -func (x *SdkNodeEnumerateResponse) Reset() { - *x = SdkNodeEnumerateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[256] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkFilterNonOverlappingNodesRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkFilterNonOverlappingNodesRequest.Unmarshal(m, b) } - -func (x *SdkNodeEnumerateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkFilterNonOverlappingNodesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkFilterNonOverlappingNodesRequest.Marshal(b, m, deterministic) } - -func (*SdkNodeEnumerateResponse) ProtoMessage() {} - -func (x *SdkNodeEnumerateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[256] - 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) +func (dst *SdkFilterNonOverlappingNodesRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkFilterNonOverlappingNodesRequest.Merge(dst, src) } - -// Deprecated: Use SdkNodeEnumerateResponse.ProtoReflect.Descriptor instead. -func (*SdkNodeEnumerateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{256} +func (m *SdkFilterNonOverlappingNodesRequest) XXX_Size() int { + return xxx_messageInfo_SdkFilterNonOverlappingNodesRequest.Size(m) } +func (m *SdkFilterNonOverlappingNodesRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkFilterNonOverlappingNodesRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkFilterNonOverlappingNodesRequest proto.InternalMessageInfo -func (x *SdkNodeEnumerateResponse) GetNodeIds() []string { - if x != nil { - return x.NodeIds +func (m *SdkFilterNonOverlappingNodesRequest) GetInputNodes() []string { + if m != nil { + return m.InputNodes } return nil } -// Defines a request to list nodes with given filter. Currently there are -// no filters and all the nodes will be returned. -type SdkNodeEnumerateWithFiltersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *SdkNodeEnumerateWithFiltersRequest) Reset() { - *x = SdkNodeEnumerateWithFiltersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[257] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (m *SdkFilterNonOverlappingNodesRequest) GetDownNodes() []string { + if m != nil { + return m.DownNodes } + return nil } -func (x *SdkNodeEnumerateWithFiltersRequest) String() string { - return protoimpl.X.MessageStringOf(x) +// Defines a response with a list of non overlapping nodes from the given input list of nodes. +type SdkFilterNonOverlappingNodesResponse struct { + // Filtered list of all the non overlapping nodes from the given input list. + NodeIds []string `protobuf:"bytes,1,rep,name=node_ids,json=nodeIds" json:"node_ids,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (*SdkNodeEnumerateWithFiltersRequest) ProtoMessage() {} - -func (x *SdkNodeEnumerateWithFiltersRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[257] - 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) +func (m *SdkFilterNonOverlappingNodesResponse) Reset() { *m = SdkFilterNonOverlappingNodesResponse{} } +func (m *SdkFilterNonOverlappingNodesResponse) String() string { return proto.CompactTextString(m) } +func (*SdkFilterNonOverlappingNodesResponse) ProtoMessage() {} +func (*SdkFilterNonOverlappingNodesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{248} } - -// Deprecated: Use SdkNodeEnumerateWithFiltersRequest.ProtoReflect.Descriptor instead. -func (*SdkNodeEnumerateWithFiltersRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{257} +func (m *SdkFilterNonOverlappingNodesResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkFilterNonOverlappingNodesResponse.Unmarshal(m, b) } - -// Defines a response with a list of nodes -type SdkNodeEnumerateWithFiltersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // List of all the nodes in the cluster - Nodes []*StorageNode `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"` +func (m *SdkFilterNonOverlappingNodesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkFilterNonOverlappingNodesResponse.Marshal(b, m, deterministic) } - -func (x *SdkNodeEnumerateWithFiltersResponse) Reset() { - *x = SdkNodeEnumerateWithFiltersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[258] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (dst *SdkFilterNonOverlappingNodesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkFilterNonOverlappingNodesResponse.Merge(dst, src) } - -func (x *SdkNodeEnumerateWithFiltersResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkFilterNonOverlappingNodesResponse) XXX_Size() int { + return xxx_messageInfo_SdkFilterNonOverlappingNodesResponse.Size(m) } - -func (*SdkNodeEnumerateWithFiltersResponse) ProtoMessage() {} - -func (x *SdkNodeEnumerateWithFiltersResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[258] - 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) +func (m *SdkFilterNonOverlappingNodesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkFilterNonOverlappingNodesResponse.DiscardUnknown(m) } -// Deprecated: Use SdkNodeEnumerateWithFiltersResponse.ProtoReflect.Descriptor instead. -func (*SdkNodeEnumerateWithFiltersResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{258} -} +var xxx_messageInfo_SdkFilterNonOverlappingNodesResponse proto.InternalMessageInfo -func (x *SdkNodeEnumerateWithFiltersResponse) GetNodes() []*StorageNode { - if x != nil { - return x.Nodes +func (m *SdkFilterNonOverlappingNodesResponse) GetNodeIds() []string { + if m != nil { + return m.NodeIds } return nil } // Defines a request to get information about an object store endpoint type SdkObjectstoreInspectRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of the object store - ObjectstoreId string `protobuf:"bytes,1,opt,name=objectstore_id,json=objectstoreId,proto3" json:"objectstore_id,omitempty"` + ObjectstoreId string `protobuf:"bytes,1,opt,name=objectstore_id,json=objectstoreId" json:"objectstore_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkObjectstoreInspectRequest) Reset() { - *x = SdkObjectstoreInspectRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[259] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkObjectstoreInspectRequest) Reset() { *m = SdkObjectstoreInspectRequest{} } +func (m *SdkObjectstoreInspectRequest) String() string { return proto.CompactTextString(m) } +func (*SdkObjectstoreInspectRequest) ProtoMessage() {} +func (*SdkObjectstoreInspectRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{249} } - -func (x *SdkObjectstoreInspectRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkObjectstoreInspectRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkObjectstoreInspectRequest.Unmarshal(m, b) } - -func (*SdkObjectstoreInspectRequest) ProtoMessage() {} - -func (x *SdkObjectstoreInspectRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[259] - 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) +func (m *SdkObjectstoreInspectRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkObjectstoreInspectRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkObjectstoreInspectRequest.ProtoReflect.Descriptor instead. -func (*SdkObjectstoreInspectRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{259} +func (dst *SdkObjectstoreInspectRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkObjectstoreInspectRequest.Merge(dst, src) +} +func (m *SdkObjectstoreInspectRequest) XXX_Size() int { + return xxx_messageInfo_SdkObjectstoreInspectRequest.Size(m) +} +func (m *SdkObjectstoreInspectRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkObjectstoreInspectRequest.DiscardUnknown(m) } -func (x *SdkObjectstoreInspectRequest) GetObjectstoreId() string { - if x != nil { - return x.ObjectstoreId +var xxx_messageInfo_SdkObjectstoreInspectRequest proto.InternalMessageInfo + +func (m *SdkObjectstoreInspectRequest) GetObjectstoreId() string { + if m != nil { + return m.ObjectstoreId } return "" } // Defines a response when inspecting an object store endpoint type SdkObjectstoreInspectResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Contains information about the object store requested - ObjectstoreStatus *ObjectstoreInfo `protobuf:"bytes,1,opt,name=objectstore_status,json=objectstoreStatus,proto3" json:"objectstore_status,omitempty"` + ObjectstoreStatus *ObjectstoreInfo `protobuf:"bytes,1,opt,name=objectstore_status,json=objectstoreStatus" json:"objectstore_status,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkObjectstoreInspectResponse) Reset() { - *x = SdkObjectstoreInspectResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[260] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkObjectstoreInspectResponse) Reset() { *m = SdkObjectstoreInspectResponse{} } +func (m *SdkObjectstoreInspectResponse) String() string { return proto.CompactTextString(m) } +func (*SdkObjectstoreInspectResponse) ProtoMessage() {} +func (*SdkObjectstoreInspectResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{250} } - -func (x *SdkObjectstoreInspectResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkObjectstoreInspectResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkObjectstoreInspectResponse.Unmarshal(m, b) } - -func (*SdkObjectstoreInspectResponse) ProtoMessage() {} - -func (x *SdkObjectstoreInspectResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[260] - 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) +func (m *SdkObjectstoreInspectResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkObjectstoreInspectResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkObjectstoreInspectResponse.ProtoReflect.Descriptor instead. -func (*SdkObjectstoreInspectResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{260} +func (dst *SdkObjectstoreInspectResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkObjectstoreInspectResponse.Merge(dst, src) +} +func (m *SdkObjectstoreInspectResponse) XXX_Size() int { + return xxx_messageInfo_SdkObjectstoreInspectResponse.Size(m) +} +func (m *SdkObjectstoreInspectResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkObjectstoreInspectResponse.DiscardUnknown(m) } -func (x *SdkObjectstoreInspectResponse) GetObjectstoreStatus() *ObjectstoreInfo { - if x != nil { - return x.ObjectstoreStatus +var xxx_messageInfo_SdkObjectstoreInspectResponse proto.InternalMessageInfo + +func (m *SdkObjectstoreInspectResponse) GetObjectstoreStatus() *ObjectstoreInfo { + if m != nil { + return m.ObjectstoreStatus } return nil } // Defines a request to create an object store type SdkObjectstoreCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Volume on which objectstore will be running - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkObjectstoreCreateRequest) Reset() { - *x = SdkObjectstoreCreateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[261] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkObjectstoreCreateRequest) Reset() { *m = SdkObjectstoreCreateRequest{} } +func (m *SdkObjectstoreCreateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkObjectstoreCreateRequest) ProtoMessage() {} +func (*SdkObjectstoreCreateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{251} } - -func (x *SdkObjectstoreCreateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkObjectstoreCreateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkObjectstoreCreateRequest.Unmarshal(m, b) } - -func (*SdkObjectstoreCreateRequest) ProtoMessage() {} - -func (x *SdkObjectstoreCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[261] - 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) +func (m *SdkObjectstoreCreateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkObjectstoreCreateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkObjectstoreCreateRequest.ProtoReflect.Descriptor instead. -func (*SdkObjectstoreCreateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{261} +func (dst *SdkObjectstoreCreateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkObjectstoreCreateRequest.Merge(dst, src) +} +func (m *SdkObjectstoreCreateRequest) XXX_Size() int { + return xxx_messageInfo_SdkObjectstoreCreateRequest.Size(m) +} +func (m *SdkObjectstoreCreateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkObjectstoreCreateRequest.DiscardUnknown(m) } -func (x *SdkObjectstoreCreateRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +var xxx_messageInfo_SdkObjectstoreCreateRequest proto.InternalMessageInfo + +func (m *SdkObjectstoreCreateRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } @@ -22416,557 +20389,478 @@ func (x *SdkObjectstoreCreateRequest) GetVolumeId() string { // Defines a response when an object store has been created for a // specified volume type SdkObjectstoreCreateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Created objecstore status - ObjectstoreStatus *ObjectstoreInfo `protobuf:"bytes,1,opt,name=objectstore_status,json=objectstoreStatus,proto3" json:"objectstore_status,omitempty"` + ObjectstoreStatus *ObjectstoreInfo `protobuf:"bytes,1,opt,name=objectstore_status,json=objectstoreStatus" json:"objectstore_status,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkObjectstoreCreateResponse) Reset() { - *x = SdkObjectstoreCreateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[262] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkObjectstoreCreateResponse) Reset() { *m = SdkObjectstoreCreateResponse{} } +func (m *SdkObjectstoreCreateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkObjectstoreCreateResponse) ProtoMessage() {} +func (*SdkObjectstoreCreateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{252} } - -func (x *SdkObjectstoreCreateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkObjectstoreCreateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkObjectstoreCreateResponse.Unmarshal(m, b) +} +func (m *SdkObjectstoreCreateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkObjectstoreCreateResponse.Marshal(b, m, deterministic) +} +func (dst *SdkObjectstoreCreateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkObjectstoreCreateResponse.Merge(dst, src) +} +func (m *SdkObjectstoreCreateResponse) XXX_Size() int { + return xxx_messageInfo_SdkObjectstoreCreateResponse.Size(m) +} +func (m *SdkObjectstoreCreateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkObjectstoreCreateResponse.DiscardUnknown(m) } -func (*SdkObjectstoreCreateResponse) ProtoMessage() {} +var xxx_messageInfo_SdkObjectstoreCreateResponse proto.InternalMessageInfo -func (x *SdkObjectstoreCreateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[262] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (m *SdkObjectstoreCreateResponse) GetObjectstoreStatus() *ObjectstoreInfo { + if m != nil { + return m.ObjectstoreStatus } - return mi.MessageOf(x) -} - -// Deprecated: Use SdkObjectstoreCreateResponse.ProtoReflect.Descriptor instead. -func (*SdkObjectstoreCreateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{262} -} - -func (x *SdkObjectstoreCreateResponse) GetObjectstoreStatus() *ObjectstoreInfo { - if x != nil { - return x.ObjectstoreStatus - } - return nil + return nil } // Defines a request to delete an object store service from a volume type SdkObjectstoreDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of the object store to delete - ObjectstoreId string `protobuf:"bytes,1,opt,name=objectstore_id,json=objectstoreId,proto3" json:"objectstore_id,omitempty"` + ObjectstoreId string `protobuf:"bytes,1,opt,name=objectstore_id,json=objectstoreId" json:"objectstore_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkObjectstoreDeleteRequest) Reset() { - *x = SdkObjectstoreDeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[263] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkObjectstoreDeleteRequest) Reset() { *m = SdkObjectstoreDeleteRequest{} } +func (m *SdkObjectstoreDeleteRequest) String() string { return proto.CompactTextString(m) } +func (*SdkObjectstoreDeleteRequest) ProtoMessage() {} +func (*SdkObjectstoreDeleteRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{253} } - -func (x *SdkObjectstoreDeleteRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkObjectstoreDeleteRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkObjectstoreDeleteRequest.Unmarshal(m, b) } - -func (*SdkObjectstoreDeleteRequest) ProtoMessage() {} - -func (x *SdkObjectstoreDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[263] - 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) +func (m *SdkObjectstoreDeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkObjectstoreDeleteRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkObjectstoreDeleteRequest.ProtoReflect.Descriptor instead. -func (*SdkObjectstoreDeleteRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{263} +func (dst *SdkObjectstoreDeleteRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkObjectstoreDeleteRequest.Merge(dst, src) +} +func (m *SdkObjectstoreDeleteRequest) XXX_Size() int { + return xxx_messageInfo_SdkObjectstoreDeleteRequest.Size(m) +} +func (m *SdkObjectstoreDeleteRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkObjectstoreDeleteRequest.DiscardUnknown(m) } -func (x *SdkObjectstoreDeleteRequest) GetObjectstoreId() string { - if x != nil { - return x.ObjectstoreId +var xxx_messageInfo_SdkObjectstoreDeleteRequest proto.InternalMessageInfo + +func (m *SdkObjectstoreDeleteRequest) GetObjectstoreId() string { + if m != nil { + return m.ObjectstoreId } return "" } // Empty response type SdkObjectstoreDeleteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkObjectstoreDeleteResponse) Reset() { - *x = SdkObjectstoreDeleteResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[264] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkObjectstoreDeleteResponse) Reset() { *m = SdkObjectstoreDeleteResponse{} } +func (m *SdkObjectstoreDeleteResponse) String() string { return proto.CompactTextString(m) } +func (*SdkObjectstoreDeleteResponse) ProtoMessage() {} +func (*SdkObjectstoreDeleteResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{254} } - -func (x *SdkObjectstoreDeleteResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkObjectstoreDeleteResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkObjectstoreDeleteResponse.Unmarshal(m, b) } - -func (*SdkObjectstoreDeleteResponse) ProtoMessage() {} - -func (x *SdkObjectstoreDeleteResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[264] - 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) +func (m *SdkObjectstoreDeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkObjectstoreDeleteResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkObjectstoreDeleteResponse.ProtoReflect.Descriptor instead. -func (*SdkObjectstoreDeleteResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{264} +func (dst *SdkObjectstoreDeleteResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkObjectstoreDeleteResponse.Merge(dst, src) +} +func (m *SdkObjectstoreDeleteResponse) XXX_Size() int { + return xxx_messageInfo_SdkObjectstoreDeleteResponse.Size(m) } +func (m *SdkObjectstoreDeleteResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkObjectstoreDeleteResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkObjectstoreDeleteResponse proto.InternalMessageInfo // Defines a request to update an object store type SdkObjectstoreUpdateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Objectstore Id to update - ObjectstoreId string `protobuf:"bytes,1,opt,name=objectstore_id,json=objectstoreId,proto3" json:"objectstore_id,omitempty"` + ObjectstoreId string `protobuf:"bytes,1,opt,name=objectstore_id,json=objectstoreId" json:"objectstore_id,omitempty"` // enable/disable objectstore - Enable bool `protobuf:"varint,2,opt,name=enable,proto3" json:"enable,omitempty"` + Enable bool `protobuf:"varint,2,opt,name=enable" json:"enable,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkObjectstoreUpdateRequest) Reset() { - *x = SdkObjectstoreUpdateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[265] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkObjectstoreUpdateRequest) Reset() { *m = SdkObjectstoreUpdateRequest{} } +func (m *SdkObjectstoreUpdateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkObjectstoreUpdateRequest) ProtoMessage() {} +func (*SdkObjectstoreUpdateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{255} } - -func (x *SdkObjectstoreUpdateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkObjectstoreUpdateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkObjectstoreUpdateRequest.Unmarshal(m, b) } - -func (*SdkObjectstoreUpdateRequest) ProtoMessage() {} - -func (x *SdkObjectstoreUpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[265] - 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) +func (m *SdkObjectstoreUpdateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkObjectstoreUpdateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkObjectstoreUpdateRequest.ProtoReflect.Descriptor instead. -func (*SdkObjectstoreUpdateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{265} +func (dst *SdkObjectstoreUpdateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkObjectstoreUpdateRequest.Merge(dst, src) +} +func (m *SdkObjectstoreUpdateRequest) XXX_Size() int { + return xxx_messageInfo_SdkObjectstoreUpdateRequest.Size(m) +} +func (m *SdkObjectstoreUpdateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkObjectstoreUpdateRequest.DiscardUnknown(m) } -func (x *SdkObjectstoreUpdateRequest) GetObjectstoreId() string { - if x != nil { - return x.ObjectstoreId +var xxx_messageInfo_SdkObjectstoreUpdateRequest proto.InternalMessageInfo + +func (m *SdkObjectstoreUpdateRequest) GetObjectstoreId() string { + if m != nil { + return m.ObjectstoreId } return "" } -func (x *SdkObjectstoreUpdateRequest) GetEnable() bool { - if x != nil { - return x.Enable +func (m *SdkObjectstoreUpdateRequest) GetEnable() bool { + if m != nil { + return m.Enable } return false } // Empty response type SdkObjectstoreUpdateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkObjectstoreUpdateResponse) Reset() { - *x = SdkObjectstoreUpdateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[266] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkObjectstoreUpdateResponse) Reset() { *m = SdkObjectstoreUpdateResponse{} } +func (m *SdkObjectstoreUpdateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkObjectstoreUpdateResponse) ProtoMessage() {} +func (*SdkObjectstoreUpdateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{256} } - -func (x *SdkObjectstoreUpdateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkObjectstoreUpdateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkObjectstoreUpdateResponse.Unmarshal(m, b) } - -func (*SdkObjectstoreUpdateResponse) ProtoMessage() {} - -func (x *SdkObjectstoreUpdateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[266] - 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) +func (m *SdkObjectstoreUpdateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkObjectstoreUpdateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkObjectstoreUpdateResponse.ProtoReflect.Descriptor instead. -func (*SdkObjectstoreUpdateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{266} +func (dst *SdkObjectstoreUpdateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkObjectstoreUpdateResponse.Merge(dst, src) +} +func (m *SdkObjectstoreUpdateResponse) XXX_Size() int { + return xxx_messageInfo_SdkObjectstoreUpdateResponse.Size(m) +} +func (m *SdkObjectstoreUpdateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkObjectstoreUpdateResponse.DiscardUnknown(m) } +var xxx_messageInfo_SdkObjectstoreUpdateResponse proto.InternalMessageInfo + // Defines a request to create a backup of a volume to the cloud type SdkCloudBackupCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // VolumeID of the volume for which cloudbackup is requested - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // Credential id refers to the cloud credentials needed to backup - CredentialId string `protobuf:"bytes,2,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` + CredentialId string `protobuf:"bytes,2,opt,name=credential_id,json=credentialId" json:"credential_id,omitempty"` // Full indicates if full backup is desired even though incremental is possible - Full bool `protobuf:"varint,3,opt,name=full,proto3" json:"full,omitempty"` + Full bool `protobuf:"varint,3,opt,name=full" json:"full,omitempty"` // TaskId of the task performing this backup. This value can be used for // idempotency. - TaskId string `protobuf:"bytes,4,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` + TaskId string `protobuf:"bytes,4,opt,name=task_id,json=taskId" json:"task_id,omitempty"` // Labels are list of key value pairs to tag the cloud backup. These labels // are stored in the metadata associated with the backup. - Labels map[string]string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // FullBackupFrequency indicates number of incremental backup after which + Labels map[string]string `protobuf:"bytes,5,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // FullBackupFrequency indicates number of incremental backup after whcih // a fullbackup must be created. This is to override the default value for // manual/user triggerred backups and not applicable for scheduled backups // Value of 0 retains the default behavior. - FullBackupFrequency uint32 `protobuf:"varint,6,opt,name=full_backup_frequency,json=fullBackupFrequency,proto3" json:"full_backup_frequency,omitempty"` + FullBackupFrequency uint32 `protobuf:"varint,6,opt,name=full_backup_frequency,json=fullBackupFrequency" json:"full_backup_frequency,omitempty"` // DeleteLocal indicates if local snap created for backup must be deleted after // the backup is complete - DeleteLocal bool `protobuf:"varint,7,opt,name=delete_local,json=deleteLocal,proto3" json:"delete_local,omitempty"` + DeleteLocal bool `protobuf:"varint,7,opt,name=delete_local,json=deleteLocal" json:"delete_local,omitempty"` // Indicates if this is a near sync migrate - NearSyncMigrate bool `protobuf:"varint,8,opt,name=near_sync_migrate,json=nearSyncMigrate,proto3" json:"near_sync_migrate,omitempty"` + NearSyncMigrate bool `protobuf:"varint,8,opt,name=near_sync_migrate,json=nearSyncMigrate" json:"near_sync_migrate,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupCreateRequest) Reset() { - *x = SdkCloudBackupCreateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[267] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupCreateRequest) Reset() { *m = SdkCloudBackupCreateRequest{} } +func (m *SdkCloudBackupCreateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupCreateRequest) ProtoMessage() {} +func (*SdkCloudBackupCreateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{257} } - -func (x *SdkCloudBackupCreateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupCreateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupCreateRequest.Unmarshal(m, b) } - -func (*SdkCloudBackupCreateRequest) ProtoMessage() {} - -func (x *SdkCloudBackupCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[267] - 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) +func (m *SdkCloudBackupCreateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupCreateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupCreateRequest.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupCreateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{267} +func (dst *SdkCloudBackupCreateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupCreateRequest.Merge(dst, src) +} +func (m *SdkCloudBackupCreateRequest) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupCreateRequest.Size(m) } +func (m *SdkCloudBackupCreateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupCreateRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCloudBackupCreateRequest proto.InternalMessageInfo -func (x *SdkCloudBackupCreateRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +func (m *SdkCloudBackupCreateRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *SdkCloudBackupCreateRequest) GetCredentialId() string { - if x != nil { - return x.CredentialId +func (m *SdkCloudBackupCreateRequest) GetCredentialId() string { + if m != nil { + return m.CredentialId } return "" } -func (x *SdkCloudBackupCreateRequest) GetFull() bool { - if x != nil { - return x.Full +func (m *SdkCloudBackupCreateRequest) GetFull() bool { + if m != nil { + return m.Full } return false } -func (x *SdkCloudBackupCreateRequest) GetTaskId() string { - if x != nil { - return x.TaskId +func (m *SdkCloudBackupCreateRequest) GetTaskId() string { + if m != nil { + return m.TaskId } return "" } -func (x *SdkCloudBackupCreateRequest) GetLabels() map[string]string { - if x != nil { - return x.Labels +func (m *SdkCloudBackupCreateRequest) GetLabels() map[string]string { + if m != nil { + return m.Labels } return nil } -func (x *SdkCloudBackupCreateRequest) GetFullBackupFrequency() uint32 { - if x != nil { - return x.FullBackupFrequency +func (m *SdkCloudBackupCreateRequest) GetFullBackupFrequency() uint32 { + if m != nil { + return m.FullBackupFrequency } return 0 } -func (x *SdkCloudBackupCreateRequest) GetDeleteLocal() bool { - if x != nil { - return x.DeleteLocal +func (m *SdkCloudBackupCreateRequest) GetDeleteLocal() bool { + if m != nil { + return m.DeleteLocal } return false } -func (x *SdkCloudBackupCreateRequest) GetNearSyncMigrate() bool { - if x != nil { - return x.NearSyncMigrate +func (m *SdkCloudBackupCreateRequest) GetNearSyncMigrate() bool { + if m != nil { + return m.NearSyncMigrate } return false } // Empty response type SdkCloudBackupCreateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // TaskId of the task performing the backup - TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` + TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId" json:"task_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupCreateResponse) Reset() { - *x = SdkCloudBackupCreateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[268] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupCreateResponse) Reset() { *m = SdkCloudBackupCreateResponse{} } +func (m *SdkCloudBackupCreateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupCreateResponse) ProtoMessage() {} +func (*SdkCloudBackupCreateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{258} } - -func (x *SdkCloudBackupCreateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupCreateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupCreateResponse.Unmarshal(m, b) } - -func (*SdkCloudBackupCreateResponse) ProtoMessage() {} - -func (x *SdkCloudBackupCreateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[268] - 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) +func (m *SdkCloudBackupCreateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupCreateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupCreateResponse.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupCreateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{268} +func (dst *SdkCloudBackupCreateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupCreateResponse.Merge(dst, src) +} +func (m *SdkCloudBackupCreateResponse) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupCreateResponse.Size(m) +} +func (m *SdkCloudBackupCreateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupCreateResponse.DiscardUnknown(m) } -func (x *SdkCloudBackupCreateResponse) GetTaskId() string { - if x != nil { - return x.TaskId +var xxx_messageInfo_SdkCloudBackupCreateResponse proto.InternalMessageInfo + +func (m *SdkCloudBackupCreateResponse) GetTaskId() string { + if m != nil { + return m.TaskId } return "" } // Defines a request to create a group backup of a group to the cloud type SdkCloudBackupGroupCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // GroupID of the volume for which cloudbackup is requested - GroupId string `protobuf:"bytes,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` + GroupId string `protobuf:"bytes,1,opt,name=group_id,json=groupId" json:"group_id,omitempty"` // VolumeIds are a list of volume IDs to use for the backup request. // If multiple of GroupID, Labels or VolumeIDs are specified, volumes matching // all of them are backed uup - VolumeIds []string `protobuf:"bytes,2,rep,name=volume_ids,json=volumeIds,proto3" json:"volume_ids,omitempty"` + VolumeIds []string `protobuf:"bytes,2,rep,name=volume_ids,json=volumeIds" json:"volume_ids,omitempty"` // Credential id refers to the cloud credentials needed to backup - CredentialId string `protobuf:"bytes,3,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` + CredentialId string `protobuf:"bytes,3,opt,name=credential_id,json=credentialId" json:"credential_id,omitempty"` // Full indicates if full backup is desired even though incremental is possible - Full bool `protobuf:"varint,4,opt,name=full,proto3" json:"full,omitempty"` + Full bool `protobuf:"varint,4,opt,name=full" json:"full,omitempty"` // Labels are list of key value pairs to tag the cloud backup. These labels // are stored in the metadata associated with the backup. - Labels map[string]string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Labels map[string]string `protobuf:"bytes,5,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // DeleteLocal indicates if local snap created for backup must be deleted after // the backup is complete - DeleteLocal bool `protobuf:"varint,6,opt,name=delete_local,json=deleteLocal,proto3" json:"delete_local,omitempty"` + DeleteLocal bool `protobuf:"varint,6,opt,name=delete_local,json=deleteLocal" json:"delete_local,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupGroupCreateRequest) Reset() { - *x = SdkCloudBackupGroupCreateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[269] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupGroupCreateRequest) Reset() { *m = SdkCloudBackupGroupCreateRequest{} } +func (m *SdkCloudBackupGroupCreateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupGroupCreateRequest) ProtoMessage() {} +func (*SdkCloudBackupGroupCreateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{259} } - -func (x *SdkCloudBackupGroupCreateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupGroupCreateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupGroupCreateRequest.Unmarshal(m, b) } - -func (*SdkCloudBackupGroupCreateRequest) ProtoMessage() {} - -func (x *SdkCloudBackupGroupCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[269] - 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) +func (m *SdkCloudBackupGroupCreateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupGroupCreateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupGroupCreateRequest.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupGroupCreateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{269} +func (dst *SdkCloudBackupGroupCreateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupGroupCreateRequest.Merge(dst, src) +} +func (m *SdkCloudBackupGroupCreateRequest) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupGroupCreateRequest.Size(m) +} +func (m *SdkCloudBackupGroupCreateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupGroupCreateRequest.DiscardUnknown(m) } -func (x *SdkCloudBackupGroupCreateRequest) GetGroupId() string { - if x != nil { - return x.GroupId +var xxx_messageInfo_SdkCloudBackupGroupCreateRequest proto.InternalMessageInfo + +func (m *SdkCloudBackupGroupCreateRequest) GetGroupId() string { + if m != nil { + return m.GroupId } return "" } -func (x *SdkCloudBackupGroupCreateRequest) GetVolumeIds() []string { - if x != nil { - return x.VolumeIds +func (m *SdkCloudBackupGroupCreateRequest) GetVolumeIds() []string { + if m != nil { + return m.VolumeIds } return nil } -func (x *SdkCloudBackupGroupCreateRequest) GetCredentialId() string { - if x != nil { - return x.CredentialId +func (m *SdkCloudBackupGroupCreateRequest) GetCredentialId() string { + if m != nil { + return m.CredentialId } return "" } -func (x *SdkCloudBackupGroupCreateRequest) GetFull() bool { - if x != nil { - return x.Full +func (m *SdkCloudBackupGroupCreateRequest) GetFull() bool { + if m != nil { + return m.Full } return false } -func (x *SdkCloudBackupGroupCreateRequest) GetLabels() map[string]string { - if x != nil { - return x.Labels +func (m *SdkCloudBackupGroupCreateRequest) GetLabels() map[string]string { + if m != nil { + return m.Labels } return nil } -func (x *SdkCloudBackupGroupCreateRequest) GetDeleteLocal() bool { - if x != nil { - return x.DeleteLocal +func (m *SdkCloudBackupGroupCreateRequest) GetDeleteLocal() bool { + if m != nil { + return m.DeleteLocal } return false } // Empty response type SdkCloudBackupGroupCreateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // ID for this group of backups - GroupCloudBackupId string `protobuf:"bytes,1,opt,name=group_cloud_backup_id,json=groupCloudBackupId,proto3" json:"group_cloud_backup_id,omitempty"` + GroupCloudBackupId string `protobuf:"bytes,1,opt,name=group_cloud_backup_id,json=groupCloudBackupId" json:"group_cloud_backup_id,omitempty"` // TaskIds of the tasks performing the group backup - TaskIds []string `protobuf:"bytes,2,rep,name=task_ids,json=taskIds,proto3" json:"task_ids,omitempty"` + TaskIds []string `protobuf:"bytes,2,rep,name=task_ids,json=taskIds" json:"task_ids,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupGroupCreateResponse) Reset() { - *x = SdkCloudBackupGroupCreateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[270] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupGroupCreateResponse) Reset() { *m = SdkCloudBackupGroupCreateResponse{} } +func (m *SdkCloudBackupGroupCreateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupGroupCreateResponse) ProtoMessage() {} +func (*SdkCloudBackupGroupCreateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{260} } - -func (x *SdkCloudBackupGroupCreateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupGroupCreateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupGroupCreateResponse.Unmarshal(m, b) } - -func (*SdkCloudBackupGroupCreateResponse) ProtoMessage() {} - -func (x *SdkCloudBackupGroupCreateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[270] - 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) +func (m *SdkCloudBackupGroupCreateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupGroupCreateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupGroupCreateResponse.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupGroupCreateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{270} +func (dst *SdkCloudBackupGroupCreateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupGroupCreateResponse.Merge(dst, src) +} +func (m *SdkCloudBackupGroupCreateResponse) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupGroupCreateResponse.Size(m) } +func (m *SdkCloudBackupGroupCreateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupGroupCreateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCloudBackupGroupCreateResponse proto.InternalMessageInfo -func (x *SdkCloudBackupGroupCreateResponse) GetGroupCloudBackupId() string { - if x != nil { - return x.GroupCloudBackupId +func (m *SdkCloudBackupGroupCreateResponse) GetGroupCloudBackupId() string { + if m != nil { + return m.GroupCloudBackupId } return "" } -func (x *SdkCloudBackupGroupCreateResponse) GetTaskIds() []string { - if x != nil { - return x.TaskIds +func (m *SdkCloudBackupGroupCreateResponse) GetTaskIds() []string { + if m != nil { + return m.TaskIds } return nil } @@ -22974,105 +20868,96 @@ func (x *SdkCloudBackupGroupCreateResponse) GetTaskIds() []string { // Defines a request to restore a volume from an existing backup stored by // a cloud provider type SdkCloudBackupRestoreRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Backup ID being restored - BackupId string `protobuf:"bytes,1,opt,name=backup_id,json=backupId,proto3" json:"backup_id,omitempty"` + BackupId string `protobuf:"bytes,1,opt,name=backup_id,json=backupId" json:"backup_id,omitempty"` // Optional volume Name of the new volume to be created // in the cluster for restoring the cloudbackup - RestoreVolumeName string `protobuf:"bytes,2,opt,name=restore_volume_name,json=restoreVolumeName,proto3" json:"restore_volume_name,omitempty"` + RestoreVolumeName string `protobuf:"bytes,2,opt,name=restore_volume_name,json=restoreVolumeName" json:"restore_volume_name,omitempty"` // The credential to be used for restore operation - CredentialId string `protobuf:"bytes,3,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` + CredentialId string `protobuf:"bytes,3,opt,name=credential_id,json=credentialId" json:"credential_id,omitempty"` // Optional for provisioning restore // volume (ResoreVolumeName should not be specified) - NodeId string `protobuf:"bytes,4,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` + NodeId string `protobuf:"bytes,4,opt,name=node_id,json=nodeId" json:"node_id,omitempty"` // TaskId of the task performing this restore - TaskId string `protobuf:"bytes,5,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` + TaskId string `protobuf:"bytes,5,opt,name=task_id,json=taskId" json:"task_id,omitempty"` // Modifiable Restore volume spec - Spec *RestoreVolumeSpec `protobuf:"bytes,6,opt,name=spec,proto3" json:"spec,omitempty"` + Spec *RestoreVolumeSpec `protobuf:"bytes,6,opt,name=spec" json:"spec,omitempty"` // RestoreVolume locator - Locator *VolumeLocator `protobuf:"bytes,7,opt,name=locator,proto3" json:"locator,omitempty"` + Locator *VolumeLocator `protobuf:"bytes,7,opt,name=locator" json:"locator,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupRestoreRequest) Reset() { - *x = SdkCloudBackupRestoreRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[271] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupRestoreRequest) Reset() { *m = SdkCloudBackupRestoreRequest{} } +func (m *SdkCloudBackupRestoreRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupRestoreRequest) ProtoMessage() {} +func (*SdkCloudBackupRestoreRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{261} } - -func (x *SdkCloudBackupRestoreRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupRestoreRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupRestoreRequest.Unmarshal(m, b) } - -func (*SdkCloudBackupRestoreRequest) ProtoMessage() {} - -func (x *SdkCloudBackupRestoreRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[271] - 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) +func (m *SdkCloudBackupRestoreRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupRestoreRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupRestoreRequest.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupRestoreRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{271} +func (dst *SdkCloudBackupRestoreRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupRestoreRequest.Merge(dst, src) +} +func (m *SdkCloudBackupRestoreRequest) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupRestoreRequest.Size(m) +} +func (m *SdkCloudBackupRestoreRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupRestoreRequest.DiscardUnknown(m) } -func (x *SdkCloudBackupRestoreRequest) GetBackupId() string { - if x != nil { - return x.BackupId +var xxx_messageInfo_SdkCloudBackupRestoreRequest proto.InternalMessageInfo + +func (m *SdkCloudBackupRestoreRequest) GetBackupId() string { + if m != nil { + return m.BackupId } return "" } -func (x *SdkCloudBackupRestoreRequest) GetRestoreVolumeName() string { - if x != nil { - return x.RestoreVolumeName +func (m *SdkCloudBackupRestoreRequest) GetRestoreVolumeName() string { + if m != nil { + return m.RestoreVolumeName } return "" } -func (x *SdkCloudBackupRestoreRequest) GetCredentialId() string { - if x != nil { - return x.CredentialId +func (m *SdkCloudBackupRestoreRequest) GetCredentialId() string { + if m != nil { + return m.CredentialId } return "" } -func (x *SdkCloudBackupRestoreRequest) GetNodeId() string { - if x != nil { - return x.NodeId +func (m *SdkCloudBackupRestoreRequest) GetNodeId() string { + if m != nil { + return m.NodeId } return "" } -func (x *SdkCloudBackupRestoreRequest) GetTaskId() string { - if x != nil { - return x.TaskId +func (m *SdkCloudBackupRestoreRequest) GetTaskId() string { + if m != nil { + return m.TaskId } return "" } -func (x *SdkCloudBackupRestoreRequest) GetSpec() *RestoreVolumeSpec { - if x != nil { - return x.Spec +func (m *SdkCloudBackupRestoreRequest) GetSpec() *RestoreVolumeSpec { + if m != nil { + return m.Spec } return nil } -func (x *SdkCloudBackupRestoreRequest) GetLocator() *VolumeLocator { - if x != nil { - return x.Locator +func (m *SdkCloudBackupRestoreRequest) GetLocator() *VolumeLocator { + if m != nil { + return m.Locator } return nil } @@ -23080,277 +20965,234 @@ func (x *SdkCloudBackupRestoreRequest) GetLocator() *VolumeLocator { // Defines a response when restoring a volume from a backup stored by // a cloud provider type SdkCloudBackupRestoreResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // VolumeID to which the backup is being restored - RestoreVolumeId string `protobuf:"bytes,1,opt,name=restore_volume_id,json=restoreVolumeId,proto3" json:"restore_volume_id,omitempty"` + RestoreVolumeId string `protobuf:"bytes,1,opt,name=restore_volume_id,json=restoreVolumeId" json:"restore_volume_id,omitempty"` // TaskId of the task performing the restore - TaskId string `protobuf:"bytes,2,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` + TaskId string `protobuf:"bytes,2,opt,name=task_id,json=taskId" json:"task_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupRestoreResponse) Reset() { - *x = SdkCloudBackupRestoreResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[272] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupRestoreResponse) Reset() { *m = SdkCloudBackupRestoreResponse{} } +func (m *SdkCloudBackupRestoreResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupRestoreResponse) ProtoMessage() {} +func (*SdkCloudBackupRestoreResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{262} } - -func (x *SdkCloudBackupRestoreResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupRestoreResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupRestoreResponse.Unmarshal(m, b) } - -func (*SdkCloudBackupRestoreResponse) ProtoMessage() {} - -func (x *SdkCloudBackupRestoreResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[272] - 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) +func (m *SdkCloudBackupRestoreResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupRestoreResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupRestoreResponse.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupRestoreResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{272} +func (dst *SdkCloudBackupRestoreResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupRestoreResponse.Merge(dst, src) +} +func (m *SdkCloudBackupRestoreResponse) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupRestoreResponse.Size(m) +} +func (m *SdkCloudBackupRestoreResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupRestoreResponse.DiscardUnknown(m) } -func (x *SdkCloudBackupRestoreResponse) GetRestoreVolumeId() string { - if x != nil { - return x.RestoreVolumeId +var xxx_messageInfo_SdkCloudBackupRestoreResponse proto.InternalMessageInfo + +func (m *SdkCloudBackupRestoreResponse) GetRestoreVolumeId() string { + if m != nil { + return m.RestoreVolumeId } return "" } -func (x *SdkCloudBackupRestoreResponse) GetTaskId() string { - if x != nil { - return x.TaskId +func (m *SdkCloudBackupRestoreResponse) GetTaskId() string { + if m != nil { + return m.TaskId } return "" } // Defines a request to delete a single backup stored by a cloud provider type SdkCloudBackupDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // ID is the ID of the cloud backup - BackupId string `protobuf:"bytes,1,opt,name=backup_id,json=backupId,proto3" json:"backup_id,omitempty"` + BackupId string `protobuf:"bytes,1,opt,name=backup_id,json=backupId" json:"backup_id,omitempty"` // Credential id is the credential for cloud to be used for the request - CredentialId string `protobuf:"bytes,2,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` + CredentialId string `protobuf:"bytes,2,opt,name=credential_id,json=credentialId" json:"credential_id,omitempty"` // Force Delete cloudbackup even if there are dependencies. This may be // needed if the backup is an incremental backup and subsequent backups // depend on this backup specified by `backup_id`. - Force bool `protobuf:"varint,3,opt,name=force,proto3" json:"force,omitempty"` + Force bool `protobuf:"varint,3,opt,name=force" json:"force,omitempty"` // Bucket name to which cloud backup belongs to - Bucket string `protobuf:"bytes,4,opt,name=bucket,proto3" json:"bucket,omitempty"` + Bucket string `protobuf:"bytes,4,opt,name=bucket" json:"bucket,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupDeleteRequest) Reset() { - *x = SdkCloudBackupDeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[273] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupDeleteRequest) Reset() { *m = SdkCloudBackupDeleteRequest{} } +func (m *SdkCloudBackupDeleteRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupDeleteRequest) ProtoMessage() {} +func (*SdkCloudBackupDeleteRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{263} } - -func (x *SdkCloudBackupDeleteRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupDeleteRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupDeleteRequest.Unmarshal(m, b) } - -func (*SdkCloudBackupDeleteRequest) ProtoMessage() {} - -func (x *SdkCloudBackupDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[273] - 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) +func (m *SdkCloudBackupDeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupDeleteRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupDeleteRequest.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupDeleteRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{273} +func (dst *SdkCloudBackupDeleteRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupDeleteRequest.Merge(dst, src) +} +func (m *SdkCloudBackupDeleteRequest) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupDeleteRequest.Size(m) } +func (m *SdkCloudBackupDeleteRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupDeleteRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCloudBackupDeleteRequest proto.InternalMessageInfo -func (x *SdkCloudBackupDeleteRequest) GetBackupId() string { - if x != nil { - return x.BackupId +func (m *SdkCloudBackupDeleteRequest) GetBackupId() string { + if m != nil { + return m.BackupId } return "" } -func (x *SdkCloudBackupDeleteRequest) GetCredentialId() string { - if x != nil { - return x.CredentialId +func (m *SdkCloudBackupDeleteRequest) GetCredentialId() string { + if m != nil { + return m.CredentialId } return "" } -func (x *SdkCloudBackupDeleteRequest) GetForce() bool { - if x != nil { - return x.Force +func (m *SdkCloudBackupDeleteRequest) GetForce() bool { + if m != nil { + return m.Force } return false } -func (x *SdkCloudBackupDeleteRequest) GetBucket() string { - if x != nil { - return x.Bucket +func (m *SdkCloudBackupDeleteRequest) GetBucket() string { + if m != nil { + return m.Bucket } return "" } // Empty response type SdkCloudBackupDeleteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupDeleteResponse) Reset() { - *x = SdkCloudBackupDeleteResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[274] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupDeleteResponse) Reset() { *m = SdkCloudBackupDeleteResponse{} } +func (m *SdkCloudBackupDeleteResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupDeleteResponse) ProtoMessage() {} +func (*SdkCloudBackupDeleteResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{264} } - -func (x *SdkCloudBackupDeleteResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupDeleteResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupDeleteResponse.Unmarshal(m, b) } - -func (*SdkCloudBackupDeleteResponse) ProtoMessage() {} - -func (x *SdkCloudBackupDeleteResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[274] - 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) +func (m *SdkCloudBackupDeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupDeleteResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupDeleteResponse.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupDeleteResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{274} +func (dst *SdkCloudBackupDeleteResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupDeleteResponse.Merge(dst, src) +} +func (m *SdkCloudBackupDeleteResponse) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupDeleteResponse.Size(m) } +func (m *SdkCloudBackupDeleteResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupDeleteResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCloudBackupDeleteResponse proto.InternalMessageInfo // Defines a request to delete all the backups stored by a cloud provider // for a specified volume type SdkCloudBackupDeleteAllRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // id of the volume for the request - SrcVolumeId string `protobuf:"bytes,1,opt,name=src_volume_id,json=srcVolumeId,proto3" json:"src_volume_id,omitempty"` + SrcVolumeId string `protobuf:"bytes,1,opt,name=src_volume_id,json=srcVolumeId" json:"src_volume_id,omitempty"` // Credential id is the credential for cloud to be used for the request - CredentialId string `protobuf:"bytes,2,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` + CredentialId string `protobuf:"bytes,2,opt,name=credential_id,json=credentialId" json:"credential_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupDeleteAllRequest) Reset() { - *x = SdkCloudBackupDeleteAllRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[275] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupDeleteAllRequest) Reset() { *m = SdkCloudBackupDeleteAllRequest{} } +func (m *SdkCloudBackupDeleteAllRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupDeleteAllRequest) ProtoMessage() {} +func (*SdkCloudBackupDeleteAllRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{265} } - -func (x *SdkCloudBackupDeleteAllRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupDeleteAllRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupDeleteAllRequest.Unmarshal(m, b) } - -func (*SdkCloudBackupDeleteAllRequest) ProtoMessage() {} - -func (x *SdkCloudBackupDeleteAllRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[275] - 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) +func (m *SdkCloudBackupDeleteAllRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupDeleteAllRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupDeleteAllRequest.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupDeleteAllRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{275} +func (dst *SdkCloudBackupDeleteAllRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupDeleteAllRequest.Merge(dst, src) +} +func (m *SdkCloudBackupDeleteAllRequest) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupDeleteAllRequest.Size(m) +} +func (m *SdkCloudBackupDeleteAllRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupDeleteAllRequest.DiscardUnknown(m) } -func (x *SdkCloudBackupDeleteAllRequest) GetSrcVolumeId() string { - if x != nil { - return x.SrcVolumeId +var xxx_messageInfo_SdkCloudBackupDeleteAllRequest proto.InternalMessageInfo + +func (m *SdkCloudBackupDeleteAllRequest) GetSrcVolumeId() string { + if m != nil { + return m.SrcVolumeId } return "" } -func (x *SdkCloudBackupDeleteAllRequest) GetCredentialId() string { - if x != nil { - return x.CredentialId +func (m *SdkCloudBackupDeleteAllRequest) GetCredentialId() string { + if m != nil { + return m.CredentialId } return "" } // Empty response type SdkCloudBackupDeleteAllResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupDeleteAllResponse) Reset() { - *x = SdkCloudBackupDeleteAllResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[276] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupDeleteAllResponse) Reset() { *m = SdkCloudBackupDeleteAllResponse{} } +func (m *SdkCloudBackupDeleteAllResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupDeleteAllResponse) ProtoMessage() {} +func (*SdkCloudBackupDeleteAllResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{266} } - -func (x *SdkCloudBackupDeleteAllResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupDeleteAllResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupDeleteAllResponse.Unmarshal(m, b) } - -func (*SdkCloudBackupDeleteAllResponse) ProtoMessage() {} - -func (x *SdkCloudBackupDeleteAllResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[276] - 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) +func (m *SdkCloudBackupDeleteAllResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupDeleteAllResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupDeleteAllResponse.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupDeleteAllResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{276} +func (dst *SdkCloudBackupDeleteAllResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupDeleteAllResponse.Merge(dst, src) +} +func (m *SdkCloudBackupDeleteAllResponse) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupDeleteAllResponse.Size(m) +} +func (m *SdkCloudBackupDeleteAllResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupDeleteAllResponse.DiscardUnknown(m) } +var xxx_messageInfo_SdkCloudBackupDeleteAllResponse proto.InternalMessageInfo + // Defines a request to list the backups stored by a cloud provider. // The following combinations can be used to get cloud backup information: // @@ -23365,701 +21207,666 @@ func (*SdkCloudBackupDeleteAllResponse) Descriptor() ([]byte, []int) { // and do not provide `volume_id` and `all`. // * For all volumes in all clusters: Set `all` to true do not provide `volume_id` and `cluster_id`. type SdkCloudBackupEnumerateWithFiltersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // (optional) Source id of the volume for the request. - SrcVolumeId string `protobuf:"bytes,1,opt,name=src_volume_id,json=srcVolumeId,proto3" json:"src_volume_id,omitempty"` + SrcVolumeId string `protobuf:"bytes,1,opt,name=src_volume_id,json=srcVolumeId" json:"src_volume_id,omitempty"` // (optional) Cluster id specifies the cluster for the request - ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` // Credential id is the credential for cloud to be used for the request - CredentialId string `protobuf:"bytes,3,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` + CredentialId string `protobuf:"bytes,3,opt,name=credential_id,json=credentialId" json:"credential_id,omitempty"` // (optional) All indicates if the request should show cloud backups for all clusters or the current cluster. - All bool `protobuf:"varint,4,opt,name=all,proto3" json:"all,omitempty"` + All bool `protobuf:"varint,4,opt,name=all" json:"all,omitempty"` // (optional) enumerates backups that have status specified by this type - StatusFilter SdkCloudBackupStatusType `protobuf:"varint,5,opt,name=status_filter,json=statusFilter,proto3,enum=openstorage.api.SdkCloudBackupStatusType" json:"status_filter,omitempty"` + StatusFilter SdkCloudBackupStatusType `protobuf:"varint,5,opt,name=status_filter,json=statusFilter,enum=openstorage.api.SdkCloudBackupStatusType" json:"status_filter,omitempty"` // (optional) Enumerates backups that have tags of this type - MetadataFilter map[string]string `protobuf:"bytes,6,rep,name=metadata_filter,json=metadataFilter,proto3" json:"metadata_filter,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + MetadataFilter map[string]string `protobuf:"bytes,6,rep,name=metadata_filter,json=metadataFilter" json:"metadata_filter,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // (optional) if caller wished to limit number of backups returned by enumerate - MaxBackups uint64 `protobuf:"varint,7,opt,name=max_backups,json=maxBackups,proto3" json:"max_backups,omitempty"` + MaxBackups uint64 `protobuf:"varint,7,opt,name=max_backups,json=maxBackups" json:"max_backups,omitempty"` // Returned in the enumerate response if not all of the backups could be returned in the // response. - ContinuationToken string `protobuf:"bytes,8,opt,name=continuation_token,json=continuationToken,proto3" json:"continuation_token,omitempty"` + ContinuationToken string `protobuf:"bytes,8,opt,name=continuation_token,json=continuationToken" json:"continuation_token,omitempty"` // If one wants to enumerate known backup, set this field to the backup ID // naming format :clusteruuidORbicketname/srcVolId-snapId(-incr) - CloudBackupId string `protobuf:"bytes,9,opt,name=cloud_backup_id,json=cloudBackupId,proto3" json:"cloud_backup_id,omitempty"` + CloudBackupId string `protobuf:"bytes,9,opt,name=cloud_backup_id,json=cloudBackupId" json:"cloud_backup_id,omitempty"` // To enumerate cloudbackups for which source volumes do not exist in this // cluster - MissingSrcVolumes bool `protobuf:"varint,10,opt,name=missing_src_volumes,json=missingSrcVolumes,proto3" json:"missing_src_volumes,omitempty"` + MissingSrcVolumes bool `protobuf:"varint,10,opt,name=missing_src_volumes,json=missingSrcVolumes" json:"missing_src_volumes,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupEnumerateWithFiltersRequest) Reset() { - *x = SdkCloudBackupEnumerateWithFiltersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[277] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupEnumerateWithFiltersRequest) Reset() { + *m = SdkCloudBackupEnumerateWithFiltersRequest{} } - -func (x *SdkCloudBackupEnumerateWithFiltersRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupEnumerateWithFiltersRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupEnumerateWithFiltersRequest) ProtoMessage() {} +func (*SdkCloudBackupEnumerateWithFiltersRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{267} } - -func (*SdkCloudBackupEnumerateWithFiltersRequest) ProtoMessage() {} - -func (x *SdkCloudBackupEnumerateWithFiltersRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[277] - 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) +func (m *SdkCloudBackupEnumerateWithFiltersRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupEnumerateWithFiltersRequest.Unmarshal(m, b) } - -// Deprecated: Use SdkCloudBackupEnumerateWithFiltersRequest.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupEnumerateWithFiltersRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{277} +func (m *SdkCloudBackupEnumerateWithFiltersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupEnumerateWithFiltersRequest.Marshal(b, m, deterministic) +} +func (dst *SdkCloudBackupEnumerateWithFiltersRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupEnumerateWithFiltersRequest.Merge(dst, src) +} +func (m *SdkCloudBackupEnumerateWithFiltersRequest) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupEnumerateWithFiltersRequest.Size(m) +} +func (m *SdkCloudBackupEnumerateWithFiltersRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupEnumerateWithFiltersRequest.DiscardUnknown(m) } -func (x *SdkCloudBackupEnumerateWithFiltersRequest) GetSrcVolumeId() string { - if x != nil { - return x.SrcVolumeId +var xxx_messageInfo_SdkCloudBackupEnumerateWithFiltersRequest proto.InternalMessageInfo + +func (m *SdkCloudBackupEnumerateWithFiltersRequest) GetSrcVolumeId() string { + if m != nil { + return m.SrcVolumeId } return "" } -func (x *SdkCloudBackupEnumerateWithFiltersRequest) GetClusterId() string { - if x != nil { - return x.ClusterId +func (m *SdkCloudBackupEnumerateWithFiltersRequest) GetClusterId() string { + if m != nil { + return m.ClusterId } return "" } -func (x *SdkCloudBackupEnumerateWithFiltersRequest) GetCredentialId() string { - if x != nil { - return x.CredentialId +func (m *SdkCloudBackupEnumerateWithFiltersRequest) GetCredentialId() string { + if m != nil { + return m.CredentialId } return "" } -func (x *SdkCloudBackupEnumerateWithFiltersRequest) GetAll() bool { - if x != nil { - return x.All +func (m *SdkCloudBackupEnumerateWithFiltersRequest) GetAll() bool { + if m != nil { + return m.All } return false } -func (x *SdkCloudBackupEnumerateWithFiltersRequest) GetStatusFilter() SdkCloudBackupStatusType { - if x != nil { - return x.StatusFilter +func (m *SdkCloudBackupEnumerateWithFiltersRequest) GetStatusFilter() SdkCloudBackupStatusType { + if m != nil { + return m.StatusFilter } return SdkCloudBackupStatusType_SdkCloudBackupStatusTypeUnknown } -func (x *SdkCloudBackupEnumerateWithFiltersRequest) GetMetadataFilter() map[string]string { - if x != nil { - return x.MetadataFilter +func (m *SdkCloudBackupEnumerateWithFiltersRequest) GetMetadataFilter() map[string]string { + if m != nil { + return m.MetadataFilter } return nil } -func (x *SdkCloudBackupEnumerateWithFiltersRequest) GetMaxBackups() uint64 { - if x != nil { - return x.MaxBackups +func (m *SdkCloudBackupEnumerateWithFiltersRequest) GetMaxBackups() uint64 { + if m != nil { + return m.MaxBackups } return 0 } -func (x *SdkCloudBackupEnumerateWithFiltersRequest) GetContinuationToken() string { - if x != nil { - return x.ContinuationToken +func (m *SdkCloudBackupEnumerateWithFiltersRequest) GetContinuationToken() string { + if m != nil { + return m.ContinuationToken } return "" } -func (x *SdkCloudBackupEnumerateWithFiltersRequest) GetCloudBackupId() string { - if x != nil { - return x.CloudBackupId +func (m *SdkCloudBackupEnumerateWithFiltersRequest) GetCloudBackupId() string { + if m != nil { + return m.CloudBackupId } return "" } -func (x *SdkCloudBackupEnumerateWithFiltersRequest) GetMissingSrcVolumes() bool { - if x != nil { - return x.MissingSrcVolumes +func (m *SdkCloudBackupEnumerateWithFiltersRequest) GetMissingSrcVolumes() bool { + if m != nil { + return m.MissingSrcVolumes } return false } // SdkCloudBackupInfo has information about a backup stored by a cloud provider type SdkCloudBackupInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // This is the id as represented by the cloud provider - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` // Source volumeID of the backup - SrcVolumeId string `protobuf:"bytes,2,opt,name=src_volume_id,json=srcVolumeId,proto3" json:"src_volume_id,omitempty"` + SrcVolumeId string `protobuf:"bytes,2,opt,name=src_volume_id,json=srcVolumeId" json:"src_volume_id,omitempty"` // Name of the sourceVolume of the backup - SrcVolumeName string `protobuf:"bytes,3,opt,name=src_volume_name,json=srcVolumeName,proto3" json:"src_volume_name,omitempty"` + SrcVolumeName string `protobuf:"bytes,3,opt,name=src_volume_name,json=srcVolumeName" json:"src_volume_name,omitempty"` // Timestamp is the timestamp at which the source volume // was backed up to cloud - Timestamp *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Timestamp *timestamp.Timestamp `protobuf:"bytes,4,opt,name=timestamp" json:"timestamp,omitempty"` // Metadata associated with the backup - Metadata map[string]string `protobuf:"bytes,5,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Metadata map[string]string `protobuf:"bytes,5,rep,name=metadata" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Status indicates the status of the backup - Status SdkCloudBackupStatusType `protobuf:"varint,6,opt,name=status,proto3,enum=openstorage.api.SdkCloudBackupStatusType" json:"status,omitempty"` - // cluster indicates if the cloudbackup belongs to current cluster, + Status SdkCloudBackupStatusType `protobuf:"varint,6,opt,name=status,enum=openstorage.api.SdkCloudBackupStatusType" json:"status,omitempty"` + // indicates if the cloudbackup belongs to current cluster, // with older cluster this value may be unknown - ClusterType SdkCloudBackupClusterType `protobuf:"varint,7,opt,name=cluster_type,json=clusterType,proto3,enum=openstorage.api.SdkCloudBackupClusterType" json:"cluster_type,omitempty"` + ClusterType SdkCloudBackupClusterType_Value `protobuf:"varint,7,opt,name=cluster_type,json=clusterType,enum=openstorage.api.SdkCloudBackupClusterType_Value" json:"cluster_type,omitempty"` // k8s namespace to which this backup belongs to - Namespace string `protobuf:"bytes,8,opt,name=namespace,proto3" json:"namespace,omitempty"` + Namespace string `protobuf:"bytes,8,opt,name=namespace" json:"namespace,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupInfo) Reset() { - *x = SdkCloudBackupInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[278] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupInfo) Reset() { *m = SdkCloudBackupInfo{} } +func (m *SdkCloudBackupInfo) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupInfo) ProtoMessage() {} +func (*SdkCloudBackupInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{268} } - -func (x *SdkCloudBackupInfo) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupInfo) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupInfo.Unmarshal(m, b) +} +func (m *SdkCloudBackupInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupInfo.Marshal(b, m, deterministic) +} +func (dst *SdkCloudBackupInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupInfo.Merge(dst, src) +} +func (m *SdkCloudBackupInfo) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupInfo.Size(m) +} +func (m *SdkCloudBackupInfo) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupInfo.DiscardUnknown(m) } -func (*SdkCloudBackupInfo) ProtoMessage() {} +var xxx_messageInfo_SdkCloudBackupInfo proto.InternalMessageInfo -func (x *SdkCloudBackupInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[278] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (m *SdkCloudBackupInfo) GetId() string { + if m != nil { + return m.Id } - return mi.MessageOf(x) + return "" } -// Deprecated: Use SdkCloudBackupInfo.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupInfo) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{278} -} - -func (x *SdkCloudBackupInfo) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *SdkCloudBackupInfo) GetSrcVolumeId() string { - if x != nil { - return x.SrcVolumeId +func (m *SdkCloudBackupInfo) GetSrcVolumeId() string { + if m != nil { + return m.SrcVolumeId } return "" } -func (x *SdkCloudBackupInfo) GetSrcVolumeName() string { - if x != nil { - return x.SrcVolumeName +func (m *SdkCloudBackupInfo) GetSrcVolumeName() string { + if m != nil { + return m.SrcVolumeName } return "" } -func (x *SdkCloudBackupInfo) GetTimestamp() *timestamppb.Timestamp { - if x != nil { - return x.Timestamp +func (m *SdkCloudBackupInfo) GetTimestamp() *timestamp.Timestamp { + if m != nil { + return m.Timestamp } return nil } -func (x *SdkCloudBackupInfo) GetMetadata() map[string]string { - if x != nil { - return x.Metadata +func (m *SdkCloudBackupInfo) GetMetadata() map[string]string { + if m != nil { + return m.Metadata } return nil } -func (x *SdkCloudBackupInfo) GetStatus() SdkCloudBackupStatusType { - if x != nil { - return x.Status +func (m *SdkCloudBackupInfo) GetStatus() SdkCloudBackupStatusType { + if m != nil { + return m.Status } return SdkCloudBackupStatusType_SdkCloudBackupStatusTypeUnknown } -func (x *SdkCloudBackupInfo) GetClusterType() SdkCloudBackupClusterType { - if x != nil { - return x.ClusterType +func (m *SdkCloudBackupInfo) GetClusterType() SdkCloudBackupClusterType_Value { + if m != nil { + return m.ClusterType } - return SdkCloudBackupClusterType_SdkCloudBackupClusterUnknown + return SdkCloudBackupClusterType_UNKNOWN } -func (x *SdkCloudBackupInfo) GetNamespace() string { - if x != nil { - return x.Namespace +func (m *SdkCloudBackupInfo) GetNamespace() string { + if m != nil { + return m.Namespace } return "" } +// CloudBackup owner cluster +type SdkCloudBackupClusterType struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SdkCloudBackupClusterType) Reset() { *m = SdkCloudBackupClusterType{} } +func (m *SdkCloudBackupClusterType) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupClusterType) ProtoMessage() {} +func (*SdkCloudBackupClusterType) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{269} +} +func (m *SdkCloudBackupClusterType) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupClusterType.Unmarshal(m, b) +} +func (m *SdkCloudBackupClusterType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupClusterType.Marshal(b, m, deterministic) +} +func (dst *SdkCloudBackupClusterType) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupClusterType.Merge(dst, src) +} +func (m *SdkCloudBackupClusterType) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupClusterType.Size(m) +} +func (m *SdkCloudBackupClusterType) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupClusterType.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCloudBackupClusterType proto.InternalMessageInfo + // Defines a response which lists all the backups stored by a cloud provider type SdkCloudBackupEnumerateWithFiltersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Backups []*SdkCloudBackupInfo `protobuf:"bytes,1,rep,name=backups,proto3" json:"backups,omitempty"` + Backups []*SdkCloudBackupInfo `protobuf:"bytes,1,rep,name=backups" json:"backups,omitempty"` // if this is not an empty string, callers must pass this to get next list of // backups - ContinuationToken string `protobuf:"bytes,2,opt,name=continuation_token,json=continuationToken,proto3" json:"continuation_token,omitempty"` + ContinuationToken string `protobuf:"bytes,2,opt,name=continuation_token,json=continuationToken" json:"continuation_token,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupEnumerateWithFiltersResponse) Reset() { - *x = SdkCloudBackupEnumerateWithFiltersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[279] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupEnumerateWithFiltersResponse) Reset() { + *m = SdkCloudBackupEnumerateWithFiltersResponse{} } - -func (x *SdkCloudBackupEnumerateWithFiltersResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupEnumerateWithFiltersResponse) String() string { + return proto.CompactTextString(m) } - func (*SdkCloudBackupEnumerateWithFiltersResponse) ProtoMessage() {} - -func (x *SdkCloudBackupEnumerateWithFiltersResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[279] - 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 SdkCloudBackupEnumerateWithFiltersResponse.ProtoReflect.Descriptor instead. func (*SdkCloudBackupEnumerateWithFiltersResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{279} + return fileDescriptor_api_bc0eb0e06839944e, []int{270} +} +func (m *SdkCloudBackupEnumerateWithFiltersResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupEnumerateWithFiltersResponse.Unmarshal(m, b) +} +func (m *SdkCloudBackupEnumerateWithFiltersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupEnumerateWithFiltersResponse.Marshal(b, m, deterministic) +} +func (dst *SdkCloudBackupEnumerateWithFiltersResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupEnumerateWithFiltersResponse.Merge(dst, src) +} +func (m *SdkCloudBackupEnumerateWithFiltersResponse) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupEnumerateWithFiltersResponse.Size(m) +} +func (m *SdkCloudBackupEnumerateWithFiltersResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupEnumerateWithFiltersResponse.DiscardUnknown(m) } -func (x *SdkCloudBackupEnumerateWithFiltersResponse) GetBackups() []*SdkCloudBackupInfo { - if x != nil { - return x.Backups +var xxx_messageInfo_SdkCloudBackupEnumerateWithFiltersResponse proto.InternalMessageInfo + +func (m *SdkCloudBackupEnumerateWithFiltersResponse) GetBackups() []*SdkCloudBackupInfo { + if m != nil { + return m.Backups } return nil } -func (x *SdkCloudBackupEnumerateWithFiltersResponse) GetContinuationToken() string { - if x != nil { - return x.ContinuationToken +func (m *SdkCloudBackupEnumerateWithFiltersResponse) GetContinuationToken() string { + if m != nil { + return m.ContinuationToken } return "" } // SdkCloudBackupStatus defines the status of a backup stored by a cloud provider type SdkCloudBackupStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // This is the id as represented by the cloud provider - BackupId string `protobuf:"bytes,1,opt,name=backup_id,json=backupId,proto3" json:"backup_id,omitempty"` + BackupId string `protobuf:"bytes,1,opt,name=backup_id,json=backupId" json:"backup_id,omitempty"` // OpType indicates if this is a backup or restore - Optype SdkCloudBackupOpType `protobuf:"varint,2,opt,name=optype,proto3,enum=openstorage.api.SdkCloudBackupOpType" json:"optype,omitempty"` + Optype SdkCloudBackupOpType `protobuf:"varint,2,opt,name=optype,enum=openstorage.api.SdkCloudBackupOpType" json:"optype,omitempty"` // State indicates if the op is currently active/done/failed - Status SdkCloudBackupStatusType `protobuf:"varint,3,opt,name=status,proto3,enum=openstorage.api.SdkCloudBackupStatusType" json:"status,omitempty"` + Status SdkCloudBackupStatusType `protobuf:"varint,3,opt,name=status,enum=openstorage.api.SdkCloudBackupStatusType" json:"status,omitempty"` // BytesDone indicates total Bytes uploaded/downloaded - BytesDone uint64 `protobuf:"varint,4,opt,name=bytes_done,json=bytesDone,proto3" json:"bytes_done,omitempty"` + BytesDone uint64 `protobuf:"varint,4,opt,name=bytes_done,json=bytesDone" json:"bytes_done,omitempty"` // StartTime indicates Op's start time - StartTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + StartTime *timestamp.Timestamp `protobuf:"bytes,5,opt,name=start_time,json=startTime" json:"start_time,omitempty"` // CompletedTime indicates Op's completed time - CompletedTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=completed_time,json=completedTime,proto3" json:"completed_time,omitempty"` + CompletedTime *timestamp.Timestamp `protobuf:"bytes,6,opt,name=completed_time,json=completedTime" json:"completed_time,omitempty"` // NodeID is the ID of the node where this Op is active - NodeId string `protobuf:"bytes,7,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` + NodeId string `protobuf:"bytes,7,opt,name=node_id,json=nodeId" json:"node_id,omitempty"` // SourceVolumeID is the the volume that is either being backed up to cloud // or target volume to which a backup is being restored - SrcVolumeId string `protobuf:"bytes,8,opt,name=src_volume_id,json=srcVolumeId,proto3" json:"src_volume_id,omitempty"` + SrcVolumeId string `protobuf:"bytes,8,opt,name=src_volume_id,json=srcVolumeId" json:"src_volume_id,omitempty"` // Info currently indicates the failure cause for failed backup/restore - Info []string `protobuf:"bytes,9,rep,name=info,proto3" json:"info,omitempty"` + Info []string `protobuf:"bytes,9,rep,name=info" json:"info,omitempty"` // CredentialId is the credential used for cloud with this backup/restore op - CredentialId string `protobuf:"bytes,10,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` + CredentialId string `protobuf:"bytes,10,opt,name=credential_id,json=credentialId" json:"credential_id,omitempty"` // BytesTotal is the total number of bytes being transferred - BytesTotal uint64 `protobuf:"varint,11,opt,name=bytes_total,json=bytesTotal,proto3" json:"bytes_total,omitempty"` + BytesTotal uint64 `protobuf:"varint,11,opt,name=bytes_total,json=bytesTotal" json:"bytes_total,omitempty"` // ETASeconds is the number of seconds for cloud backup completion - EtaSeconds int64 `protobuf:"varint,12,opt,name=eta_seconds,json=etaSeconds,proto3" json:"eta_seconds,omitempty"` + EtaSeconds int64 `protobuf:"varint,12,opt,name=eta_seconds,json=etaSeconds" json:"eta_seconds,omitempty"` // string group_id volume's group id if this was group cloud backup - GroupId string `protobuf:"bytes,13,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` + GroupId string `protobuf:"bytes,13,opt,name=group_id,json=groupId" json:"group_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupStatus) Reset() { - *x = SdkCloudBackupStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[280] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupStatus) Reset() { *m = SdkCloudBackupStatus{} } +func (m *SdkCloudBackupStatus) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupStatus) ProtoMessage() {} +func (*SdkCloudBackupStatus) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{271} } - -func (x *SdkCloudBackupStatus) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupStatus) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupStatus.Unmarshal(m, b) } - -func (*SdkCloudBackupStatus) ProtoMessage() {} - -func (x *SdkCloudBackupStatus) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[280] - 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) +func (m *SdkCloudBackupStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupStatus.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupStatus.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupStatus) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{280} +func (dst *SdkCloudBackupStatus) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupStatus.Merge(dst, src) +} +func (m *SdkCloudBackupStatus) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupStatus.Size(m) } +func (m *SdkCloudBackupStatus) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupStatus.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCloudBackupStatus proto.InternalMessageInfo -func (x *SdkCloudBackupStatus) GetBackupId() string { - if x != nil { - return x.BackupId +func (m *SdkCloudBackupStatus) GetBackupId() string { + if m != nil { + return m.BackupId } return "" } -func (x *SdkCloudBackupStatus) GetOptype() SdkCloudBackupOpType { - if x != nil { - return x.Optype +func (m *SdkCloudBackupStatus) GetOptype() SdkCloudBackupOpType { + if m != nil { + return m.Optype } return SdkCloudBackupOpType_SdkCloudBackupOpTypeUnknown } -func (x *SdkCloudBackupStatus) GetStatus() SdkCloudBackupStatusType { - if x != nil { - return x.Status +func (m *SdkCloudBackupStatus) GetStatus() SdkCloudBackupStatusType { + if m != nil { + return m.Status } return SdkCloudBackupStatusType_SdkCloudBackupStatusTypeUnknown } -func (x *SdkCloudBackupStatus) GetBytesDone() uint64 { - if x != nil { - return x.BytesDone +func (m *SdkCloudBackupStatus) GetBytesDone() uint64 { + if m != nil { + return m.BytesDone } return 0 } -func (x *SdkCloudBackupStatus) GetStartTime() *timestamppb.Timestamp { - if x != nil { - return x.StartTime +func (m *SdkCloudBackupStatus) GetStartTime() *timestamp.Timestamp { + if m != nil { + return m.StartTime } return nil } -func (x *SdkCloudBackupStatus) GetCompletedTime() *timestamppb.Timestamp { - if x != nil { - return x.CompletedTime +func (m *SdkCloudBackupStatus) GetCompletedTime() *timestamp.Timestamp { + if m != nil { + return m.CompletedTime } return nil } -func (x *SdkCloudBackupStatus) GetNodeId() string { - if x != nil { - return x.NodeId +func (m *SdkCloudBackupStatus) GetNodeId() string { + if m != nil { + return m.NodeId } return "" } -func (x *SdkCloudBackupStatus) GetSrcVolumeId() string { - if x != nil { - return x.SrcVolumeId +func (m *SdkCloudBackupStatus) GetSrcVolumeId() string { + if m != nil { + return m.SrcVolumeId } return "" } -func (x *SdkCloudBackupStatus) GetInfo() []string { - if x != nil { - return x.Info +func (m *SdkCloudBackupStatus) GetInfo() []string { + if m != nil { + return m.Info } return nil } -func (x *SdkCloudBackupStatus) GetCredentialId() string { - if x != nil { - return x.CredentialId +func (m *SdkCloudBackupStatus) GetCredentialId() string { + if m != nil { + return m.CredentialId } return "" } -func (x *SdkCloudBackupStatus) GetBytesTotal() uint64 { - if x != nil { - return x.BytesTotal +func (m *SdkCloudBackupStatus) GetBytesTotal() uint64 { + if m != nil { + return m.BytesTotal } return 0 } -func (x *SdkCloudBackupStatus) GetEtaSeconds() int64 { - if x != nil { - return x.EtaSeconds +func (m *SdkCloudBackupStatus) GetEtaSeconds() int64 { + if m != nil { + return m.EtaSeconds } return 0 } -func (x *SdkCloudBackupStatus) GetGroupId() string { - if x != nil { - return x.GroupId +func (m *SdkCloudBackupStatus) GetGroupId() string { + if m != nil { + return m.GroupId } return "" } -// Defines a request to retrieve the status of a backup or restore for a +// Defines a request to retreive the status of a backup or restore for a // specified volume type SdkCloudBackupStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // (optional) VolumeId is a value which is used to get information on the // status of a backup for the specified volume. If no volume id and task_id // is provided, then status for all volumes is returned. - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // Local indicates if only those backups/restores that are // active on current node must be returned - Local bool `protobuf:"varint,2,opt,name=local,proto3" json:"local,omitempty"` + Local bool `protobuf:"varint,2,opt,name=local" json:"local,omitempty"` // TaskId of the backup/restore task, if this is specified, // volume_id is ignored. - TaskId string `protobuf:"bytes,3,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` + TaskId string `protobuf:"bytes,3,opt,name=task_id,json=taskId" json:"task_id,omitempty"` // Indicates if this is for nearsync migration - NearSyncMigrate bool `protobuf:"varint,4,opt,name=near_sync_migrate,json=nearSyncMigrate,proto3" json:"near_sync_migrate,omitempty"` + NearSyncMigrate bool `protobuf:"varint,4,opt,name=near_sync_migrate,json=nearSyncMigrate" json:"near_sync_migrate,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupStatusRequest) Reset() { - *x = SdkCloudBackupStatusRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[281] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupStatusRequest) Reset() { *m = SdkCloudBackupStatusRequest{} } +func (m *SdkCloudBackupStatusRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupStatusRequest) ProtoMessage() {} +func (*SdkCloudBackupStatusRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{272} } - -func (x *SdkCloudBackupStatusRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupStatusRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupStatusRequest.Unmarshal(m, b) } - -func (*SdkCloudBackupStatusRequest) ProtoMessage() {} - -func (x *SdkCloudBackupStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[281] - 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) +func (m *SdkCloudBackupStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupStatusRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupStatusRequest.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupStatusRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{281} +func (dst *SdkCloudBackupStatusRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupStatusRequest.Merge(dst, src) +} +func (m *SdkCloudBackupStatusRequest) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupStatusRequest.Size(m) } +func (m *SdkCloudBackupStatusRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupStatusRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCloudBackupStatusRequest proto.InternalMessageInfo -func (x *SdkCloudBackupStatusRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +func (m *SdkCloudBackupStatusRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *SdkCloudBackupStatusRequest) GetLocal() bool { - if x != nil { - return x.Local +func (m *SdkCloudBackupStatusRequest) GetLocal() bool { + if m != nil { + return m.Local } return false } -func (x *SdkCloudBackupStatusRequest) GetTaskId() string { - if x != nil { - return x.TaskId +func (m *SdkCloudBackupStatusRequest) GetTaskId() string { + if m != nil { + return m.TaskId } return "" } -func (x *SdkCloudBackupStatusRequest) GetNearSyncMigrate() bool { - if x != nil { - return x.NearSyncMigrate +func (m *SdkCloudBackupStatusRequest) GetNearSyncMigrate() bool { + if m != nil { + return m.NearSyncMigrate } return false } // Defines a response containing the status of the backups for a specified volume type SdkCloudBackupStatusResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Statuses is list of currently active/failed/done backup/restores where // the key is the id of the task performing backup/restore. - Statuses map[string]*SdkCloudBackupStatus `protobuf:"bytes,1,rep,name=statuses,proto3" json:"statuses,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Statuses map[string]*SdkCloudBackupStatus `protobuf:"bytes,1,rep,name=statuses" json:"statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupStatusResponse) Reset() { - *x = SdkCloudBackupStatusResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[282] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupStatusResponse) Reset() { *m = SdkCloudBackupStatusResponse{} } +func (m *SdkCloudBackupStatusResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupStatusResponse) ProtoMessage() {} +func (*SdkCloudBackupStatusResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{273} } - -func (x *SdkCloudBackupStatusResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupStatusResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupStatusResponse.Unmarshal(m, b) } - -func (*SdkCloudBackupStatusResponse) ProtoMessage() {} - -func (x *SdkCloudBackupStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[282] - 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) +func (m *SdkCloudBackupStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupStatusResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupStatusResponse.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupStatusResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{282} +func (dst *SdkCloudBackupStatusResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupStatusResponse.Merge(dst, src) +} +func (m *SdkCloudBackupStatusResponse) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupStatusResponse.Size(m) +} +func (m *SdkCloudBackupStatusResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupStatusResponse.DiscardUnknown(m) } -func (x *SdkCloudBackupStatusResponse) GetStatuses() map[string]*SdkCloudBackupStatus { - if x != nil { - return x.Statuses +var xxx_messageInfo_SdkCloudBackupStatusResponse proto.InternalMessageInfo + +func (m *SdkCloudBackupStatusResponse) GetStatuses() map[string]*SdkCloudBackupStatus { + if m != nil { + return m.Statuses } return nil } // Defines a request to get catalog of a backup stored by a cloud provider type SdkCloudBackupCatalogRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of the backup - BackupId string `protobuf:"bytes,1,opt,name=backup_id,json=backupId,proto3" json:"backup_id,omitempty"` + BackupId string `protobuf:"bytes,1,opt,name=backup_id,json=backupId" json:"backup_id,omitempty"` // Credential id describe the credentials for the cloud - CredentialId string `protobuf:"bytes,2,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` + CredentialId string `protobuf:"bytes,2,opt,name=credential_id,json=credentialId" json:"credential_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupCatalogRequest) Reset() { - *x = SdkCloudBackupCatalogRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[283] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupCatalogRequest) Reset() { *m = SdkCloudBackupCatalogRequest{} } +func (m *SdkCloudBackupCatalogRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupCatalogRequest) ProtoMessage() {} +func (*SdkCloudBackupCatalogRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{274} } - -func (x *SdkCloudBackupCatalogRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupCatalogRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupCatalogRequest.Unmarshal(m, b) } - -func (*SdkCloudBackupCatalogRequest) ProtoMessage() {} - -func (x *SdkCloudBackupCatalogRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[283] - 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) +func (m *SdkCloudBackupCatalogRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupCatalogRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupCatalogRequest.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupCatalogRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{283} +func (dst *SdkCloudBackupCatalogRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupCatalogRequest.Merge(dst, src) +} +func (m *SdkCloudBackupCatalogRequest) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupCatalogRequest.Size(m) +} +func (m *SdkCloudBackupCatalogRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupCatalogRequest.DiscardUnknown(m) } -func (x *SdkCloudBackupCatalogRequest) GetBackupId() string { - if x != nil { - return x.BackupId +var xxx_messageInfo_SdkCloudBackupCatalogRequest proto.InternalMessageInfo + +func (m *SdkCloudBackupCatalogRequest) GetBackupId() string { + if m != nil { + return m.BackupId } return "" } -func (x *SdkCloudBackupCatalogRequest) GetCredentialId() string { - if x != nil { - return x.CredentialId +func (m *SdkCloudBackupCatalogRequest) GetCredentialId() string { + if m != nil { + return m.CredentialId } return "" } // Defines a response containing the contents of a backup stored by a cloud provider type SdkCloudBackupCatalogResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Contents is listing of backup contents - Contents []string `protobuf:"bytes,1,rep,name=contents,proto3" json:"contents,omitempty"` + Contents []string `protobuf:"bytes,1,rep,name=contents" json:"contents,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupCatalogResponse) Reset() { - *x = SdkCloudBackupCatalogResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[284] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupCatalogResponse) Reset() { *m = SdkCloudBackupCatalogResponse{} } +func (m *SdkCloudBackupCatalogResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupCatalogResponse) ProtoMessage() {} +func (*SdkCloudBackupCatalogResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{275} } - -func (x *SdkCloudBackupCatalogResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupCatalogResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupCatalogResponse.Unmarshal(m, b) } - -func (*SdkCloudBackupCatalogResponse) ProtoMessage() {} - -func (x *SdkCloudBackupCatalogResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[284] - 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) +func (m *SdkCloudBackupCatalogResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupCatalogResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupCatalogResponse.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupCatalogResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{284} +func (dst *SdkCloudBackupCatalogResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupCatalogResponse.Merge(dst, src) +} +func (m *SdkCloudBackupCatalogResponse) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupCatalogResponse.Size(m) } +func (m *SdkCloudBackupCatalogResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupCatalogResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCloudBackupCatalogResponse proto.InternalMessageInfo -func (x *SdkCloudBackupCatalogResponse) GetContents() []string { - if x != nil { - return x.Contents +func (m *SdkCloudBackupCatalogResponse) GetContents() []string { + if m != nil { + return m.Contents } return nil } @@ -24067,167 +21874,140 @@ func (x *SdkCloudBackupCatalogResponse) GetContents() []string { // SdkCloudBackupHistoryItem contains information about a backup for a // specific volume type SdkCloudBackupHistoryItem struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // SrcVolumeID is volume ID which was backedup - SrcVolumeId string `protobuf:"bytes,1,opt,name=src_volume_id,json=srcVolumeId,proto3" json:"src_volume_id,omitempty"` + SrcVolumeId string `protobuf:"bytes,1,opt,name=src_volume_id,json=srcVolumeId" json:"src_volume_id,omitempty"` // TimeStamp is the time at which either backup completed/failed - Timestamp *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Timestamp *timestamp.Timestamp `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"` // Status indicates whether backup was completed/failed - Status SdkCloudBackupStatusType `protobuf:"varint,3,opt,name=status,proto3,enum=openstorage.api.SdkCloudBackupStatusType" json:"status,omitempty"` + Status SdkCloudBackupStatusType `protobuf:"varint,3,opt,name=status,enum=openstorage.api.SdkCloudBackupStatusType" json:"status,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupHistoryItem) Reset() { - *x = SdkCloudBackupHistoryItem{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[285] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupHistoryItem) Reset() { *m = SdkCloudBackupHistoryItem{} } +func (m *SdkCloudBackupHistoryItem) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupHistoryItem) ProtoMessage() {} +func (*SdkCloudBackupHistoryItem) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{276} } - -func (x *SdkCloudBackupHistoryItem) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupHistoryItem) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupHistoryItem.Unmarshal(m, b) } - -func (*SdkCloudBackupHistoryItem) ProtoMessage() {} - -func (x *SdkCloudBackupHistoryItem) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[285] - 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) +func (m *SdkCloudBackupHistoryItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupHistoryItem.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupHistoryItem.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupHistoryItem) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{285} +func (dst *SdkCloudBackupHistoryItem) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupHistoryItem.Merge(dst, src) +} +func (m *SdkCloudBackupHistoryItem) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupHistoryItem.Size(m) } +func (m *SdkCloudBackupHistoryItem) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupHistoryItem.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCloudBackupHistoryItem proto.InternalMessageInfo -func (x *SdkCloudBackupHistoryItem) GetSrcVolumeId() string { - if x != nil { - return x.SrcVolumeId +func (m *SdkCloudBackupHistoryItem) GetSrcVolumeId() string { + if m != nil { + return m.SrcVolumeId } return "" } -func (x *SdkCloudBackupHistoryItem) GetTimestamp() *timestamppb.Timestamp { - if x != nil { - return x.Timestamp +func (m *SdkCloudBackupHistoryItem) GetTimestamp() *timestamp.Timestamp { + if m != nil { + return m.Timestamp } return nil } -func (x *SdkCloudBackupHistoryItem) GetStatus() SdkCloudBackupStatusType { - if x != nil { - return x.Status +func (m *SdkCloudBackupHistoryItem) GetStatus() SdkCloudBackupStatusType { + if m != nil { + return m.Status } return SdkCloudBackupStatusType_SdkCloudBackupStatusTypeUnknown } -// Defines a request to retrieve the history of the backups for +// Defines a request to retreive the history of the backups for // a specific volume to a cloud provider type SdkCloudBackupHistoryRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // This optional value defines which history of backups is being // requested. If not provided, it will return the history for all volumes. - SrcVolumeId string `protobuf:"bytes,1,opt,name=src_volume_id,json=srcVolumeId,proto3" json:"src_volume_id,omitempty"` + SrcVolumeId string `protobuf:"bytes,1,opt,name=src_volume_id,json=srcVolumeId" json:"src_volume_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupHistoryRequest) Reset() { - *x = SdkCloudBackupHistoryRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[286] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupHistoryRequest) Reset() { *m = SdkCloudBackupHistoryRequest{} } +func (m *SdkCloudBackupHistoryRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupHistoryRequest) ProtoMessage() {} +func (*SdkCloudBackupHistoryRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{277} } - -func (x *SdkCloudBackupHistoryRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupHistoryRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupHistoryRequest.Unmarshal(m, b) } - -func (*SdkCloudBackupHistoryRequest) ProtoMessage() {} - -func (x *SdkCloudBackupHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[286] - 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) +func (m *SdkCloudBackupHistoryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupHistoryRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupHistoryRequest.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupHistoryRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{286} +func (dst *SdkCloudBackupHistoryRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupHistoryRequest.Merge(dst, src) +} +func (m *SdkCloudBackupHistoryRequest) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupHistoryRequest.Size(m) } +func (m *SdkCloudBackupHistoryRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupHistoryRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCloudBackupHistoryRequest proto.InternalMessageInfo -func (x *SdkCloudBackupHistoryRequest) GetSrcVolumeId() string { - if x != nil { - return x.SrcVolumeId +func (m *SdkCloudBackupHistoryRequest) GetSrcVolumeId() string { + if m != nil { + return m.SrcVolumeId } return "" } // Defines a response containing a list of history of backups to a cloud provider type SdkCloudBackupHistoryResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // HistoryList is list of past backups on this volume - HistoryList []*SdkCloudBackupHistoryItem `protobuf:"bytes,1,rep,name=history_list,json=historyList,proto3" json:"history_list,omitempty"` + HistoryList []*SdkCloudBackupHistoryItem `protobuf:"bytes,1,rep,name=history_list,json=historyList" json:"history_list,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupHistoryResponse) Reset() { - *x = SdkCloudBackupHistoryResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[287] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupHistoryResponse) Reset() { *m = SdkCloudBackupHistoryResponse{} } +func (m *SdkCloudBackupHistoryResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupHistoryResponse) ProtoMessage() {} +func (*SdkCloudBackupHistoryResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{278} } - -func (x *SdkCloudBackupHistoryResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupHistoryResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupHistoryResponse.Unmarshal(m, b) } - -func (*SdkCloudBackupHistoryResponse) ProtoMessage() {} - -func (x *SdkCloudBackupHistoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[287] - 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) +func (m *SdkCloudBackupHistoryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupHistoryResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupHistoryResponse.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupHistoryResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{287} +func (dst *SdkCloudBackupHistoryResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupHistoryResponse.Merge(dst, src) +} +func (m *SdkCloudBackupHistoryResponse) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupHistoryResponse.Size(m) } +func (m *SdkCloudBackupHistoryResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupHistoryResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCloudBackupHistoryResponse proto.InternalMessageInfo -func (x *SdkCloudBackupHistoryResponse) GetHistoryList() []*SdkCloudBackupHistoryItem { - if x != nil { - return x.HistoryList +func (m *SdkCloudBackupHistoryResponse) GetHistoryList() []*SdkCloudBackupHistoryItem { + if m != nil { + return m.HistoryList } return nil } @@ -24235,214 +22015,188 @@ func (x *SdkCloudBackupHistoryResponse) GetHistoryList() []*SdkCloudBackupHistor // Defines a request to change the state of a backup or restore to or // from a cloud provider type SdkCloudBackupStateChangeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Describes the backup/restore task // state change is being requested - TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` + TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId" json:"task_id,omitempty"` // The desired state of the operation - RequestedState SdkCloudBackupRequestedState `protobuf:"varint,2,opt,name=requested_state,json=requestedState,proto3,enum=openstorage.api.SdkCloudBackupRequestedState" json:"requested_state,omitempty"` + RequestedState SdkCloudBackupRequestedState `protobuf:"varint,2,opt,name=requested_state,json=requestedState,enum=openstorage.api.SdkCloudBackupRequestedState" json:"requested_state,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupStateChangeRequest) Reset() { - *x = SdkCloudBackupStateChangeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[288] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupStateChangeRequest) Reset() { *m = SdkCloudBackupStateChangeRequest{} } +func (m *SdkCloudBackupStateChangeRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupStateChangeRequest) ProtoMessage() {} +func (*SdkCloudBackupStateChangeRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{279} } - -func (x *SdkCloudBackupStateChangeRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupStateChangeRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupStateChangeRequest.Unmarshal(m, b) } - -func (*SdkCloudBackupStateChangeRequest) ProtoMessage() {} - -func (x *SdkCloudBackupStateChangeRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[288] - 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) +func (m *SdkCloudBackupStateChangeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupStateChangeRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupStateChangeRequest.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupStateChangeRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{288} +func (dst *SdkCloudBackupStateChangeRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupStateChangeRequest.Merge(dst, src) +} +func (m *SdkCloudBackupStateChangeRequest) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupStateChangeRequest.Size(m) } +func (m *SdkCloudBackupStateChangeRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupStateChangeRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCloudBackupStateChangeRequest proto.InternalMessageInfo -func (x *SdkCloudBackupStateChangeRequest) GetTaskId() string { - if x != nil { - return x.TaskId +func (m *SdkCloudBackupStateChangeRequest) GetTaskId() string { + if m != nil { + return m.TaskId } return "" } -func (x *SdkCloudBackupStateChangeRequest) GetRequestedState() SdkCloudBackupRequestedState { - if x != nil { - return x.RequestedState +func (m *SdkCloudBackupStateChangeRequest) GetRequestedState() SdkCloudBackupRequestedState { + if m != nil { + return m.RequestedState } return SdkCloudBackupRequestedState_SdkCloudBackupRequestedStateUnknown } // Empty response type SdkCloudBackupStateChangeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupStateChangeResponse) Reset() { - *x = SdkCloudBackupStateChangeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[289] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupStateChangeResponse) Reset() { *m = SdkCloudBackupStateChangeResponse{} } +func (m *SdkCloudBackupStateChangeResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupStateChangeResponse) ProtoMessage() {} +func (*SdkCloudBackupStateChangeResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{280} } - -func (x *SdkCloudBackupStateChangeResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupStateChangeResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupStateChangeResponse.Unmarshal(m, b) } - -func (*SdkCloudBackupStateChangeResponse) ProtoMessage() {} - -func (x *SdkCloudBackupStateChangeResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[289] - 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) +func (m *SdkCloudBackupStateChangeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupStateChangeResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupStateChangeResponse.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupStateChangeResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{289} +func (dst *SdkCloudBackupStateChangeResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupStateChangeResponse.Merge(dst, src) +} +func (m *SdkCloudBackupStateChangeResponse) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupStateChangeResponse.Size(m) } +func (m *SdkCloudBackupStateChangeResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupStateChangeResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCloudBackupStateChangeResponse proto.InternalMessageInfo // SdkCloudBackupScheduleInfo describes a schedule for volume backups to // a cloud provider type SdkCloudBackupScheduleInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // The schedule's source volume - SrcVolumeId string `protobuf:"bytes,1,opt,name=src_volume_id,json=srcVolumeId,proto3" json:"src_volume_id,omitempty"` + SrcVolumeId string `protobuf:"bytes,1,opt,name=src_volume_id,json=srcVolumeId" json:"src_volume_id,omitempty"` // The cloud credential used with this schedule - CredentialId string `protobuf:"bytes,2,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` + CredentialId string `protobuf:"bytes,2,opt,name=credential_id,json=credentialId" json:"credential_id,omitempty"` // Schedules are the frequencies of the backup - Schedules []*SdkSchedulePolicyInterval `protobuf:"bytes,3,rep,name=schedules,proto3" json:"schedules,omitempty"` + Schedules []*SdkSchedulePolicyInterval `protobuf:"bytes,3,rep,name=schedules" json:"schedules,omitempty"` // MaxBackups indicates when to force full backup to cloud. If RetentionDays // is not specified or is 0 (older scheme), this is also the maximum number // of scheduled backups retained in the cloud. Older backups are deleted - MaxBackups uint64 `protobuf:"varint,4,opt,name=max_backups,json=maxBackups,proto3" json:"max_backups,omitempty"` + MaxBackups uint64 `protobuf:"varint,4,opt,name=max_backups,json=maxBackups" json:"max_backups,omitempty"` // Full indicates if scheduled backups should always be full and never incremental. - Full bool `protobuf:"varint,5,opt,name=full,proto3" json:"full,omitempty"` + Full bool `protobuf:"varint,5,opt,name=full" json:"full,omitempty"` // Number of days that Scheduled CloudBackups will be kept after which they // are deleted - RetentionDays uint32 `protobuf:"varint,6,opt,name=retention_days,json=retentionDays,proto3" json:"retention_days,omitempty"` + RetentionDays uint32 `protobuf:"varint,6,opt,name=retention_days,json=retentionDays" json:"retention_days,omitempty"` // GroupId indicates the group of volumes for which this schedule applies - GroupId string `protobuf:"bytes,7,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` + GroupId string `protobuf:"bytes,7,opt,name=group_id,json=groupId" json:"group_id,omitempty"` // labels indicates group of volumes with similar labels for which this schedule applies - Labels map[string]string `protobuf:"bytes,8,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Labels map[string]string `protobuf:"bytes,8,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupScheduleInfo) Reset() { - *x = SdkCloudBackupScheduleInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[290] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupScheduleInfo) Reset() { *m = SdkCloudBackupScheduleInfo{} } +func (m *SdkCloudBackupScheduleInfo) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupScheduleInfo) ProtoMessage() {} +func (*SdkCloudBackupScheduleInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{281} } - -func (x *SdkCloudBackupScheduleInfo) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupScheduleInfo) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupScheduleInfo.Unmarshal(m, b) } - -func (*SdkCloudBackupScheduleInfo) ProtoMessage() {} - -func (x *SdkCloudBackupScheduleInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[290] - 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) +func (m *SdkCloudBackupScheduleInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupScheduleInfo.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupScheduleInfo.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupScheduleInfo) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{290} +func (dst *SdkCloudBackupScheduleInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupScheduleInfo.Merge(dst, src) +} +func (m *SdkCloudBackupScheduleInfo) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupScheduleInfo.Size(m) +} +func (m *SdkCloudBackupScheduleInfo) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupScheduleInfo.DiscardUnknown(m) } -func (x *SdkCloudBackupScheduleInfo) GetSrcVolumeId() string { - if x != nil { - return x.SrcVolumeId +var xxx_messageInfo_SdkCloudBackupScheduleInfo proto.InternalMessageInfo + +func (m *SdkCloudBackupScheduleInfo) GetSrcVolumeId() string { + if m != nil { + return m.SrcVolumeId } return "" } -func (x *SdkCloudBackupScheduleInfo) GetCredentialId() string { - if x != nil { - return x.CredentialId +func (m *SdkCloudBackupScheduleInfo) GetCredentialId() string { + if m != nil { + return m.CredentialId } return "" } -func (x *SdkCloudBackupScheduleInfo) GetSchedules() []*SdkSchedulePolicyInterval { - if x != nil { - return x.Schedules +func (m *SdkCloudBackupScheduleInfo) GetSchedules() []*SdkSchedulePolicyInterval { + if m != nil { + return m.Schedules } return nil } -func (x *SdkCloudBackupScheduleInfo) GetMaxBackups() uint64 { - if x != nil { - return x.MaxBackups +func (m *SdkCloudBackupScheduleInfo) GetMaxBackups() uint64 { + if m != nil { + return m.MaxBackups } return 0 } -func (x *SdkCloudBackupScheduleInfo) GetFull() bool { - if x != nil { - return x.Full +func (m *SdkCloudBackupScheduleInfo) GetFull() bool { + if m != nil { + return m.Full } return false } -func (x *SdkCloudBackupScheduleInfo) GetRetentionDays() uint32 { - if x != nil { - return x.RetentionDays +func (m *SdkCloudBackupScheduleInfo) GetRetentionDays() uint32 { + if m != nil { + return m.RetentionDays } return 0 } -func (x *SdkCloudBackupScheduleInfo) GetGroupId() string { - if x != nil { - return x.GroupId +func (m *SdkCloudBackupScheduleInfo) GetGroupId() string { + if m != nil { + return m.GroupId } return "" } -func (x *SdkCloudBackupScheduleInfo) GetLabels() map[string]string { - if x != nil { - return x.Labels +func (m *SdkCloudBackupScheduleInfo) GetLabels() map[string]string { + if m != nil { + return m.Labels } return nil } @@ -24450,49 +22204,40 @@ func (x *SdkCloudBackupScheduleInfo) GetLabels() map[string]string { // Defines a request to create a schedule for volume backups to a // cloud provider type SdkCloudBackupSchedCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Cloud Backup Schedule info - CloudSchedInfo *SdkCloudBackupScheduleInfo `protobuf:"bytes,1,opt,name=cloud_sched_info,json=cloudSchedInfo,proto3" json:"cloud_sched_info,omitempty"` + CloudSchedInfo *SdkCloudBackupScheduleInfo `protobuf:"bytes,1,opt,name=cloud_sched_info,json=cloudSchedInfo" json:"cloud_sched_info,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupSchedCreateRequest) Reset() { - *x = SdkCloudBackupSchedCreateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[291] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupSchedCreateRequest) Reset() { *m = SdkCloudBackupSchedCreateRequest{} } +func (m *SdkCloudBackupSchedCreateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupSchedCreateRequest) ProtoMessage() {} +func (*SdkCloudBackupSchedCreateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{282} } - -func (x *SdkCloudBackupSchedCreateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupSchedCreateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupSchedCreateRequest.Unmarshal(m, b) } - -func (*SdkCloudBackupSchedCreateRequest) ProtoMessage() {} - -func (x *SdkCloudBackupSchedCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[291] - 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) +func (m *SdkCloudBackupSchedCreateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupSchedCreateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupSchedCreateRequest.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupSchedCreateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{291} +func (dst *SdkCloudBackupSchedCreateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupSchedCreateRequest.Merge(dst, src) +} +func (m *SdkCloudBackupSchedCreateRequest) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupSchedCreateRequest.Size(m) } +func (m *SdkCloudBackupSchedCreateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupSchedCreateRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCloudBackupSchedCreateRequest proto.InternalMessageInfo -func (x *SdkCloudBackupSchedCreateRequest) GetCloudSchedInfo() *SdkCloudBackupScheduleInfo { - if x != nil { - return x.CloudSchedInfo +func (m *SdkCloudBackupSchedCreateRequest) GetCloudSchedInfo() *SdkCloudBackupScheduleInfo { + if m != nil { + return m.CloudSchedInfo } return nil } @@ -24500,49 +22245,40 @@ func (x *SdkCloudBackupSchedCreateRequest) GetCloudSchedInfo() *SdkCloudBackupSc // Defines a response containing the id of a schedule for a volume backup // to a cloud provider type SdkCloudBackupSchedCreateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of newly created backup schedule - BackupScheduleId string `protobuf:"bytes,1,opt,name=backup_schedule_id,json=backupScheduleId,proto3" json:"backup_schedule_id,omitempty"` + BackupScheduleId string `protobuf:"bytes,1,opt,name=backup_schedule_id,json=backupScheduleId" json:"backup_schedule_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupSchedCreateResponse) Reset() { - *x = SdkCloudBackupSchedCreateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[292] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupSchedCreateResponse) Reset() { *m = SdkCloudBackupSchedCreateResponse{} } +func (m *SdkCloudBackupSchedCreateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupSchedCreateResponse) ProtoMessage() {} +func (*SdkCloudBackupSchedCreateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{283} } - -func (x *SdkCloudBackupSchedCreateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupSchedCreateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupSchedCreateResponse.Unmarshal(m, b) } - -func (*SdkCloudBackupSchedCreateResponse) ProtoMessage() {} - -func (x *SdkCloudBackupSchedCreateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[292] - 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) +func (m *SdkCloudBackupSchedCreateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupSchedCreateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupSchedCreateResponse.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupSchedCreateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{292} +func (dst *SdkCloudBackupSchedCreateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupSchedCreateResponse.Merge(dst, src) +} +func (m *SdkCloudBackupSchedCreateResponse) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupSchedCreateResponse.Size(m) } +func (m *SdkCloudBackupSchedCreateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupSchedCreateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCloudBackupSchedCreateResponse proto.InternalMessageInfo -func (x *SdkCloudBackupSchedCreateResponse) GetBackupScheduleId() string { - if x != nil { - return x.BackupScheduleId +func (m *SdkCloudBackupSchedCreateResponse) GetBackupScheduleId() string { + if m != nil { + return m.BackupScheduleId } return "" } @@ -24550,273 +22286,222 @@ func (x *SdkCloudBackupSchedCreateResponse) GetBackupScheduleId() string { // Defines a request to update a schedule for volume backups to a // cloud provider type SdkCloudBackupSchedUpdateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Cloud Backup Schedule info - CloudSchedInfo *SdkCloudBackupScheduleInfo `protobuf:"bytes,1,opt,name=cloud_sched_info,json=cloudSchedInfo,proto3" json:"cloud_sched_info,omitempty"` - SchedUuid string `protobuf:"bytes,2,opt,name=sched_uuid,json=schedUuid,proto3" json:"sched_uuid,omitempty"` + CloudSchedInfo *SdkCloudBackupScheduleInfo `protobuf:"bytes,1,opt,name=cloud_sched_info,json=cloudSchedInfo" json:"cloud_sched_info,omitempty"` + SchedUuid string `protobuf:"bytes,2,opt,name=sched_uuid,json=schedUuid" json:"sched_uuid,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupSchedUpdateRequest) Reset() { - *x = SdkCloudBackupSchedUpdateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[293] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupSchedUpdateRequest) Reset() { *m = SdkCloudBackupSchedUpdateRequest{} } +func (m *SdkCloudBackupSchedUpdateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupSchedUpdateRequest) ProtoMessage() {} +func (*SdkCloudBackupSchedUpdateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{284} } - -func (x *SdkCloudBackupSchedUpdateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupSchedUpdateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupSchedUpdateRequest.Unmarshal(m, b) +} +func (m *SdkCloudBackupSchedUpdateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupSchedUpdateRequest.Marshal(b, m, deterministic) +} +func (dst *SdkCloudBackupSchedUpdateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupSchedUpdateRequest.Merge(dst, src) +} +func (m *SdkCloudBackupSchedUpdateRequest) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupSchedUpdateRequest.Size(m) +} +func (m *SdkCloudBackupSchedUpdateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupSchedUpdateRequest.DiscardUnknown(m) } -func (*SdkCloudBackupSchedUpdateRequest) ProtoMessage() {} +var xxx_messageInfo_SdkCloudBackupSchedUpdateRequest proto.InternalMessageInfo -func (x *SdkCloudBackupSchedUpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[293] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (m *SdkCloudBackupSchedUpdateRequest) GetCloudSchedInfo() *SdkCloudBackupScheduleInfo { + if m != nil { + return m.CloudSchedInfo } - return mi.MessageOf(x) + return nil } -// Deprecated: Use SdkCloudBackupSchedUpdateRequest.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupSchedUpdateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{293} -} - -func (x *SdkCloudBackupSchedUpdateRequest) GetCloudSchedInfo() *SdkCloudBackupScheduleInfo { - if x != nil { - return x.CloudSchedInfo - } - return nil -} - -func (x *SdkCloudBackupSchedUpdateRequest) GetSchedUuid() string { - if x != nil { - return x.SchedUuid +func (m *SdkCloudBackupSchedUpdateRequest) GetSchedUuid() string { + if m != nil { + return m.SchedUuid } return "" } // Empty response type SdkCloudBackupSchedUpdateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupSchedUpdateResponse) Reset() { - *x = SdkCloudBackupSchedUpdateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[294] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupSchedUpdateResponse) Reset() { *m = SdkCloudBackupSchedUpdateResponse{} } +func (m *SdkCloudBackupSchedUpdateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupSchedUpdateResponse) ProtoMessage() {} +func (*SdkCloudBackupSchedUpdateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{285} } - -func (x *SdkCloudBackupSchedUpdateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupSchedUpdateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupSchedUpdateResponse.Unmarshal(m, b) } - -func (*SdkCloudBackupSchedUpdateResponse) ProtoMessage() {} - -func (x *SdkCloudBackupSchedUpdateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[294] - 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) +func (m *SdkCloudBackupSchedUpdateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupSchedUpdateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupSchedUpdateResponse.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupSchedUpdateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{294} +func (dst *SdkCloudBackupSchedUpdateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupSchedUpdateResponse.Merge(dst, src) +} +func (m *SdkCloudBackupSchedUpdateResponse) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupSchedUpdateResponse.Size(m) } +func (m *SdkCloudBackupSchedUpdateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupSchedUpdateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCloudBackupSchedUpdateResponse proto.InternalMessageInfo // Defines a request to delete a backup schedule type SdkCloudBackupSchedDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of cloud backup to delete - BackupScheduleId string `protobuf:"bytes,1,opt,name=backup_schedule_id,json=backupScheduleId,proto3" json:"backup_schedule_id,omitempty"` + BackupScheduleId string `protobuf:"bytes,1,opt,name=backup_schedule_id,json=backupScheduleId" json:"backup_schedule_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupSchedDeleteRequest) Reset() { - *x = SdkCloudBackupSchedDeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[295] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupSchedDeleteRequest) Reset() { *m = SdkCloudBackupSchedDeleteRequest{} } +func (m *SdkCloudBackupSchedDeleteRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupSchedDeleteRequest) ProtoMessage() {} +func (*SdkCloudBackupSchedDeleteRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{286} } - -func (x *SdkCloudBackupSchedDeleteRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupSchedDeleteRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupSchedDeleteRequest.Unmarshal(m, b) } - -func (*SdkCloudBackupSchedDeleteRequest) ProtoMessage() {} - -func (x *SdkCloudBackupSchedDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[295] - 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) +func (m *SdkCloudBackupSchedDeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupSchedDeleteRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupSchedDeleteRequest.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupSchedDeleteRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{295} +func (dst *SdkCloudBackupSchedDeleteRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupSchedDeleteRequest.Merge(dst, src) +} +func (m *SdkCloudBackupSchedDeleteRequest) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupSchedDeleteRequest.Size(m) +} +func (m *SdkCloudBackupSchedDeleteRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupSchedDeleteRequest.DiscardUnknown(m) } -func (x *SdkCloudBackupSchedDeleteRequest) GetBackupScheduleId() string { - if x != nil { - return x.BackupScheduleId +var xxx_messageInfo_SdkCloudBackupSchedDeleteRequest proto.InternalMessageInfo + +func (m *SdkCloudBackupSchedDeleteRequest) GetBackupScheduleId() string { + if m != nil { + return m.BackupScheduleId } return "" } // Empty response type SdkCloudBackupSchedDeleteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupSchedDeleteResponse) Reset() { - *x = SdkCloudBackupSchedDeleteResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[296] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupSchedDeleteResponse) Reset() { *m = SdkCloudBackupSchedDeleteResponse{} } +func (m *SdkCloudBackupSchedDeleteResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupSchedDeleteResponse) ProtoMessage() {} +func (*SdkCloudBackupSchedDeleteResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{287} } - -func (x *SdkCloudBackupSchedDeleteResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupSchedDeleteResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupSchedDeleteResponse.Unmarshal(m, b) } - -func (*SdkCloudBackupSchedDeleteResponse) ProtoMessage() {} - -func (x *SdkCloudBackupSchedDeleteResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[296] - 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) +func (m *SdkCloudBackupSchedDeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupSchedDeleteResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupSchedDeleteResponse.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupSchedDeleteResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{296} +func (dst *SdkCloudBackupSchedDeleteResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupSchedDeleteResponse.Merge(dst, src) +} +func (m *SdkCloudBackupSchedDeleteResponse) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupSchedDeleteResponse.Size(m) } +func (m *SdkCloudBackupSchedDeleteResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupSchedDeleteResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCloudBackupSchedDeleteResponse proto.InternalMessageInfo // Empty request type SdkCloudBackupSchedEnumerateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupSchedEnumerateRequest) Reset() { - *x = SdkCloudBackupSchedEnumerateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[297] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupSchedEnumerateRequest) Reset() { *m = SdkCloudBackupSchedEnumerateRequest{} } +func (m *SdkCloudBackupSchedEnumerateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupSchedEnumerateRequest) ProtoMessage() {} +func (*SdkCloudBackupSchedEnumerateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{288} } - -func (x *SdkCloudBackupSchedEnumerateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupSchedEnumerateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupSchedEnumerateRequest.Unmarshal(m, b) } - -func (*SdkCloudBackupSchedEnumerateRequest) ProtoMessage() {} - -func (x *SdkCloudBackupSchedEnumerateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[297] - 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) +func (m *SdkCloudBackupSchedEnumerateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupSchedEnumerateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupSchedEnumerateRequest.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupSchedEnumerateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{297} +func (dst *SdkCloudBackupSchedEnumerateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupSchedEnumerateRequest.Merge(dst, src) +} +func (m *SdkCloudBackupSchedEnumerateRequest) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupSchedEnumerateRequest.Size(m) } +func (m *SdkCloudBackupSchedEnumerateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupSchedEnumerateRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCloudBackupSchedEnumerateRequest proto.InternalMessageInfo // Defines a response containing a map listing the schedules for volume // backups to a cloud provider type SdkCloudBackupSchedEnumerateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Returns list of backup schedules - CloudSchedList map[string]*SdkCloudBackupScheduleInfo `protobuf:"bytes,1,rep,name=cloud_sched_list,json=cloudSchedList,proto3" json:"cloud_sched_list,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + CloudSchedList map[string]*SdkCloudBackupScheduleInfo `protobuf:"bytes,1,rep,name=cloud_sched_list,json=cloudSchedList" json:"cloud_sched_list,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupSchedEnumerateResponse) Reset() { - *x = SdkCloudBackupSchedEnumerateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[298] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupSchedEnumerateResponse) Reset() { *m = SdkCloudBackupSchedEnumerateResponse{} } +func (m *SdkCloudBackupSchedEnumerateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupSchedEnumerateResponse) ProtoMessage() {} +func (*SdkCloudBackupSchedEnumerateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{289} } - -func (x *SdkCloudBackupSchedEnumerateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupSchedEnumerateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupSchedEnumerateResponse.Unmarshal(m, b) } - -func (*SdkCloudBackupSchedEnumerateResponse) ProtoMessage() {} - -func (x *SdkCloudBackupSchedEnumerateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[298] - 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) +func (m *SdkCloudBackupSchedEnumerateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupSchedEnumerateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupSchedEnumerateResponse.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupSchedEnumerateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{298} +func (dst *SdkCloudBackupSchedEnumerateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupSchedEnumerateResponse.Merge(dst, src) +} +func (m *SdkCloudBackupSchedEnumerateResponse) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupSchedEnumerateResponse.Size(m) +} +func (m *SdkCloudBackupSchedEnumerateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupSchedEnumerateResponse.DiscardUnknown(m) } -func (x *SdkCloudBackupSchedEnumerateResponse) GetCloudSchedList() map[string]*SdkCloudBackupScheduleInfo { - if x != nil { - return x.CloudSchedList +var xxx_messageInfo_SdkCloudBackupSchedEnumerateResponse proto.InternalMessageInfo + +func (m *SdkCloudBackupSchedEnumerateResponse) GetCloudSchedList() map[string]*SdkCloudBackupScheduleInfo { + if m != nil { + return m.CloudSchedList } return nil } @@ -24824,135 +22509,117 @@ func (x *SdkCloudBackupSchedEnumerateResponse) GetCloudSchedList() map[string]*S // Defines a request to retrieve the size of the volume for the // specificed volume type SdkCloudBackupSizeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // BackupId is a value which is used to get information on the // size of the specified backup. - BackupId string `protobuf:"bytes,1,opt,name=backup_id,json=backupId,proto3" json:"backup_id,omitempty"` + BackupId string `protobuf:"bytes,1,opt,name=backup_id,json=backupId" json:"backup_id,omitempty"` // Credential id describe the credentials for the cloud - CredentialId string `protobuf:"bytes,2,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` + CredentialId string `protobuf:"bytes,2,opt,name=credential_id,json=credentialId" json:"credential_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupSizeRequest) Reset() { - *x = SdkCloudBackupSizeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[299] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupSizeRequest) Reset() { *m = SdkCloudBackupSizeRequest{} } +func (m *SdkCloudBackupSizeRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupSizeRequest) ProtoMessage() {} +func (*SdkCloudBackupSizeRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{290} } - -func (x *SdkCloudBackupSizeRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupSizeRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupSizeRequest.Unmarshal(m, b) } - -func (*SdkCloudBackupSizeRequest) ProtoMessage() {} - -func (x *SdkCloudBackupSizeRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[299] - 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) +func (m *SdkCloudBackupSizeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupSizeRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupSizeRequest.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupSizeRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{299} +func (dst *SdkCloudBackupSizeRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupSizeRequest.Merge(dst, src) +} +func (m *SdkCloudBackupSizeRequest) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupSizeRequest.Size(m) +} +func (m *SdkCloudBackupSizeRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupSizeRequest.DiscardUnknown(m) } -func (x *SdkCloudBackupSizeRequest) GetBackupId() string { - if x != nil { - return x.BackupId +var xxx_messageInfo_SdkCloudBackupSizeRequest proto.InternalMessageInfo + +func (m *SdkCloudBackupSizeRequest) GetBackupId() string { + if m != nil { + return m.BackupId } return "" } -func (x *SdkCloudBackupSizeRequest) GetCredentialId() string { - if x != nil { - return x.CredentialId +func (m *SdkCloudBackupSizeRequest) GetCredentialId() string { + if m != nil { + return m.CredentialId } return "" } // Defines a response containing the size of the volume type SdkCloudBackupSizeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Same value as total_download_bytes, will be deprecated - Size uint64 `protobuf:"varint,1,opt,name=size,proto3" json:"size,omitempty"` + Size uint64 `protobuf:"varint,1,opt,name=size" json:"size,omitempty"` // Total download size of all the backups (full & incremental) required for a restore - TotalDownloadBytes uint64 `protobuf:"varint,2,opt,name=total_download_bytes,json=totalDownloadBytes,proto3" json:"total_download_bytes,omitempty"` + TotalDownloadBytes uint64 `protobuf:"varint,2,opt,name=total_download_bytes,json=totalDownloadBytes" json:"total_download_bytes,omitempty"` // Size of the compressed individual backup in object-store or NFS - CompressedObjectBytes uint64 `protobuf:"varint,3,opt,name=compressed_object_bytes,json=compressedObjectBytes,proto3" json:"compressed_object_bytes,omitempty"` + CompressedObjectBytes uint64 `protobuf:"varint,3,opt,name=compressed_object_bytes,json=compressedObjectBytes" json:"compressed_object_bytes,omitempty"` // Used size of the volume to be restored (in bytes) - CapacityRequiredForRestore uint64 `protobuf:"varint,4,opt,name=capacity_required_for_restore,json=capacityRequiredForRestore,proto3" json:"capacity_required_for_restore,omitempty"` + CapacityRequiredForRestore uint64 `protobuf:"varint,4,opt,name=capacity_required_for_restore,json=capacityRequiredForRestore" json:"capacity_required_for_restore,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudBackupSizeResponse) Reset() { - *x = SdkCloudBackupSizeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[300] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudBackupSizeResponse) Reset() { *m = SdkCloudBackupSizeResponse{} } +func (m *SdkCloudBackupSizeResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCloudBackupSizeResponse) ProtoMessage() {} +func (*SdkCloudBackupSizeResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{291} } - -func (x *SdkCloudBackupSizeResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudBackupSizeResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudBackupSizeResponse.Unmarshal(m, b) } - -func (*SdkCloudBackupSizeResponse) ProtoMessage() {} - -func (x *SdkCloudBackupSizeResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[300] - 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) +func (m *SdkCloudBackupSizeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudBackupSizeResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudBackupSizeResponse.ProtoReflect.Descriptor instead. -func (*SdkCloudBackupSizeResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{300} +func (dst *SdkCloudBackupSizeResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudBackupSizeResponse.Merge(dst, src) +} +func (m *SdkCloudBackupSizeResponse) XXX_Size() int { + return xxx_messageInfo_SdkCloudBackupSizeResponse.Size(m) +} +func (m *SdkCloudBackupSizeResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudBackupSizeResponse.DiscardUnknown(m) } -func (x *SdkCloudBackupSizeResponse) GetSize() uint64 { - if x != nil { - return x.Size +var xxx_messageInfo_SdkCloudBackupSizeResponse proto.InternalMessageInfo + +func (m *SdkCloudBackupSizeResponse) GetSize() uint64 { + if m != nil { + return m.Size } return 0 } -func (x *SdkCloudBackupSizeResponse) GetTotalDownloadBytes() uint64 { - if x != nil { - return x.TotalDownloadBytes +func (m *SdkCloudBackupSizeResponse) GetTotalDownloadBytes() uint64 { + if m != nil { + return m.TotalDownloadBytes } return 0 } -func (x *SdkCloudBackupSizeResponse) GetCompressedObjectBytes() uint64 { - if x != nil { - return x.CompressedObjectBytes +func (m *SdkCloudBackupSizeResponse) GetCompressedObjectBytes() uint64 { + if m != nil { + return m.CompressedObjectBytes } return 0 } -func (x *SdkCloudBackupSizeResponse) GetCapacityRequiredForRestore() uint64 { - if x != nil { - return x.CapacityRequiredForRestore +func (m *SdkCloudBackupSizeResponse) GetCapacityRequiredForRestore() uint64 { + if m != nil { + return m.CapacityRequiredForRestore } return 0 } @@ -25008,678 +22675,555 @@ func (x *SdkCloudBackupSizeResponse) GetCapacityRequiredForRestore() uint64 { // ``` // type SdkRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // The gRPC service name in `OpenStorage` in lowercase - Services []string `protobuf:"bytes,1,rep,name=services,proto3" json:"services,omitempty"` + Services []string `protobuf:"bytes,1,rep,name=services" json:"services,omitempty"` // The API name in the service in lowercase - Apis []string `protobuf:"bytes,2,rep,name=apis,proto3" json:"apis,omitempty"` + Apis []string `protobuf:"bytes,2,rep,name=apis" json:"apis,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkRule) Reset() { - *x = SdkRule{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[301] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkRule) Reset() { *m = SdkRule{} } +func (m *SdkRule) String() string { return proto.CompactTextString(m) } +func (*SdkRule) ProtoMessage() {} +func (*SdkRule) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{292} } - -func (x *SdkRule) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkRule) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkRule.Unmarshal(m, b) } - -func (*SdkRule) ProtoMessage() {} - -func (x *SdkRule) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[301] - 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) +func (m *SdkRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkRule.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkRule.ProtoReflect.Descriptor instead. -func (*SdkRule) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{301} +func (dst *SdkRule) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkRule.Merge(dst, src) +} +func (m *SdkRule) XXX_Size() int { + return xxx_messageInfo_SdkRule.Size(m) } +func (m *SdkRule) XXX_DiscardUnknown() { + xxx_messageInfo_SdkRule.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkRule proto.InternalMessageInfo -func (x *SdkRule) GetServices() []string { - if x != nil { - return x.Services +func (m *SdkRule) GetServices() []string { + if m != nil { + return m.Services } return nil } -func (x *SdkRule) GetApis() []string { - if x != nil { - return x.Apis +func (m *SdkRule) GetApis() []string { + if m != nil { + return m.Apis } return nil } type SdkRole struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Rules []*SdkRule `protobuf:"bytes,2,rep,name=rules,proto3" json:"rules,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + Rules []*SdkRule `protobuf:"bytes,2,rep,name=rules" json:"rules,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkRole) Reset() { - *x = SdkRole{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[302] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkRole) Reset() { *m = SdkRole{} } +func (m *SdkRole) String() string { return proto.CompactTextString(m) } +func (*SdkRole) ProtoMessage() {} +func (*SdkRole) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{293} } - -func (x *SdkRole) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkRole) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkRole.Unmarshal(m, b) } - -func (*SdkRole) ProtoMessage() {} - -func (x *SdkRole) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[302] - 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) +func (m *SdkRole) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkRole.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkRole.ProtoReflect.Descriptor instead. -func (*SdkRole) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{302} +func (dst *SdkRole) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkRole.Merge(dst, src) +} +func (m *SdkRole) XXX_Size() int { + return xxx_messageInfo_SdkRole.Size(m) +} +func (m *SdkRole) XXX_DiscardUnknown() { + xxx_messageInfo_SdkRole.DiscardUnknown(m) } -func (x *SdkRole) GetName() string { - if x != nil { - return x.Name +var xxx_messageInfo_SdkRole proto.InternalMessageInfo + +func (m *SdkRole) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *SdkRole) GetRules() []*SdkRule { - if x != nil { - return x.Rules +func (m *SdkRole) GetRules() []*SdkRule { + if m != nil { + return m.Rules } return nil } // Defines a request for creating a role type SdkRoleCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Role - Role *SdkRole `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + Role *SdkRole `protobuf:"bytes,1,opt,name=role" json:"role,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkRoleCreateRequest) Reset() { - *x = SdkRoleCreateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[303] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkRoleCreateRequest) Reset() { *m = SdkRoleCreateRequest{} } +func (m *SdkRoleCreateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkRoleCreateRequest) ProtoMessage() {} +func (*SdkRoleCreateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{294} } - -func (x *SdkRoleCreateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkRoleCreateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkRoleCreateRequest.Unmarshal(m, b) } - -func (*SdkRoleCreateRequest) ProtoMessage() {} - -func (x *SdkRoleCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[303] - 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) +func (m *SdkRoleCreateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkRoleCreateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkRoleCreateRequest.ProtoReflect.Descriptor instead. -func (*SdkRoleCreateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{303} +func (dst *SdkRoleCreateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkRoleCreateRequest.Merge(dst, src) +} +func (m *SdkRoleCreateRequest) XXX_Size() int { + return xxx_messageInfo_SdkRoleCreateRequest.Size(m) } +func (m *SdkRoleCreateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkRoleCreateRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkRoleCreateRequest proto.InternalMessageInfo -func (x *SdkRoleCreateRequest) GetRole() *SdkRole { - if x != nil { - return x.Role +func (m *SdkRoleCreateRequest) GetRole() *SdkRole { + if m != nil { + return m.Role } return nil } // Response contains informaiton about the creation of the role type SdkRoleCreateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Role created - Role *SdkRole `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + Role *SdkRole `protobuf:"bytes,1,opt,name=role" json:"role,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkRoleCreateResponse) Reset() { - *x = SdkRoleCreateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[304] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkRoleCreateResponse) Reset() { *m = SdkRoleCreateResponse{} } +func (m *SdkRoleCreateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkRoleCreateResponse) ProtoMessage() {} +func (*SdkRoleCreateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{295} } - -func (x *SdkRoleCreateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkRoleCreateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkRoleCreateResponse.Unmarshal(m, b) } - -func (*SdkRoleCreateResponse) ProtoMessage() {} - -func (x *SdkRoleCreateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[304] - 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) +func (m *SdkRoleCreateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkRoleCreateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkRoleCreateResponse.ProtoReflect.Descriptor instead. -func (*SdkRoleCreateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{304} +func (dst *SdkRoleCreateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkRoleCreateResponse.Merge(dst, src) +} +func (m *SdkRoleCreateResponse) XXX_Size() int { + return xxx_messageInfo_SdkRoleCreateResponse.Size(m) } +func (m *SdkRoleCreateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkRoleCreateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkRoleCreateResponse proto.InternalMessageInfo -func (x *SdkRoleCreateResponse) GetRole() *SdkRole { - if x != nil { - return x.Role +func (m *SdkRoleCreateResponse) GetRole() *SdkRole { + if m != nil { + return m.Role } return nil } // Empty request type SdkRoleEnumerateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkRoleEnumerateRequest) Reset() { - *x = SdkRoleEnumerateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[305] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkRoleEnumerateRequest) Reset() { *m = SdkRoleEnumerateRequest{} } +func (m *SdkRoleEnumerateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkRoleEnumerateRequest) ProtoMessage() {} +func (*SdkRoleEnumerateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{296} } - -func (x *SdkRoleEnumerateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkRoleEnumerateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkRoleEnumerateRequest.Unmarshal(m, b) } - -func (*SdkRoleEnumerateRequest) ProtoMessage() {} - -func (x *SdkRoleEnumerateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[305] - 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) +func (m *SdkRoleEnumerateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkRoleEnumerateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkRoleEnumerateRequest.ProtoReflect.Descriptor instead. -func (*SdkRoleEnumerateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{305} +func (dst *SdkRoleEnumerateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkRoleEnumerateRequest.Merge(dst, src) +} +func (m *SdkRoleEnumerateRequest) XXX_Size() int { + return xxx_messageInfo_SdkRoleEnumerateRequest.Size(m) +} +func (m *SdkRoleEnumerateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkRoleEnumerateRequest.DiscardUnknown(m) } +var xxx_messageInfo_SdkRoleEnumerateRequest proto.InternalMessageInfo + // Respose to enumerate all roles type SdkRoleEnumerateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // List of role names - Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + Names []string `protobuf:"bytes,1,rep,name=names" json:"names,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkRoleEnumerateResponse) Reset() { - *x = SdkRoleEnumerateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[306] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkRoleEnumerateResponse) Reset() { *m = SdkRoleEnumerateResponse{} } +func (m *SdkRoleEnumerateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkRoleEnumerateResponse) ProtoMessage() {} +func (*SdkRoleEnumerateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{297} } - -func (x *SdkRoleEnumerateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkRoleEnumerateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkRoleEnumerateResponse.Unmarshal(m, b) } - -func (*SdkRoleEnumerateResponse) ProtoMessage() {} - -func (x *SdkRoleEnumerateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[306] - 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) +func (m *SdkRoleEnumerateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkRoleEnumerateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkRoleEnumerateResponse.ProtoReflect.Descriptor instead. -func (*SdkRoleEnumerateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{306} +func (dst *SdkRoleEnumerateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkRoleEnumerateResponse.Merge(dst, src) +} +func (m *SdkRoleEnumerateResponse) XXX_Size() int { + return xxx_messageInfo_SdkRoleEnumerateResponse.Size(m) } +func (m *SdkRoleEnumerateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkRoleEnumerateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkRoleEnumerateResponse proto.InternalMessageInfo -func (x *SdkRoleEnumerateResponse) GetNames() []string { - if x != nil { - return x.Names +func (m *SdkRoleEnumerateResponse) GetNames() []string { + if m != nil { + return m.Names } return nil } // Defines a request to inspect a role type SdkRoleInspectRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Name of role - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkRoleInspectRequest) Reset() { - *x = SdkRoleInspectRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[307] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkRoleInspectRequest) Reset() { *m = SdkRoleInspectRequest{} } +func (m *SdkRoleInspectRequest) String() string { return proto.CompactTextString(m) } +func (*SdkRoleInspectRequest) ProtoMessage() {} +func (*SdkRoleInspectRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{298} } - -func (x *SdkRoleInspectRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkRoleInspectRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkRoleInspectRequest.Unmarshal(m, b) } - -func (*SdkRoleInspectRequest) ProtoMessage() {} - -func (x *SdkRoleInspectRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[307] - 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) +func (m *SdkRoleInspectRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkRoleInspectRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkRoleInspectRequest.ProtoReflect.Descriptor instead. -func (*SdkRoleInspectRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{307} +func (dst *SdkRoleInspectRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkRoleInspectRequest.Merge(dst, src) +} +func (m *SdkRoleInspectRequest) XXX_Size() int { + return xxx_messageInfo_SdkRoleInspectRequest.Size(m) } +func (m *SdkRoleInspectRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkRoleInspectRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkRoleInspectRequest proto.InternalMessageInfo -func (x *SdkRoleInspectRequest) GetName() string { - if x != nil { - return x.Name +func (m *SdkRoleInspectRequest) GetName() string { + if m != nil { + return m.Name } return "" } // Response to inspection request type SdkRoleInspectResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Role requested - Role *SdkRole `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + Role *SdkRole `protobuf:"bytes,1,opt,name=role" json:"role,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkRoleInspectResponse) Reset() { - *x = SdkRoleInspectResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[308] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkRoleInspectResponse) Reset() { *m = SdkRoleInspectResponse{} } +func (m *SdkRoleInspectResponse) String() string { return proto.CompactTextString(m) } +func (*SdkRoleInspectResponse) ProtoMessage() {} +func (*SdkRoleInspectResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{299} } - -func (x *SdkRoleInspectResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkRoleInspectResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkRoleInspectResponse.Unmarshal(m, b) } - -func (*SdkRoleInspectResponse) ProtoMessage() {} - -func (x *SdkRoleInspectResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[308] - 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) +func (m *SdkRoleInspectResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkRoleInspectResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkRoleInspectResponse.ProtoReflect.Descriptor instead. -func (*SdkRoleInspectResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{308} +func (dst *SdkRoleInspectResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkRoleInspectResponse.Merge(dst, src) +} +func (m *SdkRoleInspectResponse) XXX_Size() int { + return xxx_messageInfo_SdkRoleInspectResponse.Size(m) } +func (m *SdkRoleInspectResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkRoleInspectResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkRoleInspectResponse proto.InternalMessageInfo -func (x *SdkRoleInspectResponse) GetRole() *SdkRole { - if x != nil { - return x.Role +func (m *SdkRoleInspectResponse) GetRole() *SdkRole { + if m != nil { + return m.Role } return nil } // Defines a request to delete a role type SdkRoleDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkRoleDeleteRequest) Reset() { - *x = SdkRoleDeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[309] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkRoleDeleteRequest) Reset() { *m = SdkRoleDeleteRequest{} } +func (m *SdkRoleDeleteRequest) String() string { return proto.CompactTextString(m) } +func (*SdkRoleDeleteRequest) ProtoMessage() {} +func (*SdkRoleDeleteRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{300} } - -func (x *SdkRoleDeleteRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkRoleDeleteRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkRoleDeleteRequest.Unmarshal(m, b) } - -func (*SdkRoleDeleteRequest) ProtoMessage() {} - -func (x *SdkRoleDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[309] - 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) +func (m *SdkRoleDeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkRoleDeleteRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkRoleDeleteRequest.ProtoReflect.Descriptor instead. -func (*SdkRoleDeleteRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{309} +func (dst *SdkRoleDeleteRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkRoleDeleteRequest.Merge(dst, src) +} +func (m *SdkRoleDeleteRequest) XXX_Size() int { + return xxx_messageInfo_SdkRoleDeleteRequest.Size(m) } +func (m *SdkRoleDeleteRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkRoleDeleteRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkRoleDeleteRequest proto.InternalMessageInfo -func (x *SdkRoleDeleteRequest) GetName() string { - if x != nil { - return x.Name +func (m *SdkRoleDeleteRequest) GetName() string { + if m != nil { + return m.Name } return "" } // Empty response type SdkRoleDeleteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkRoleDeleteResponse) Reset() { - *x = SdkRoleDeleteResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[310] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkRoleDeleteResponse) Reset() { *m = SdkRoleDeleteResponse{} } +func (m *SdkRoleDeleteResponse) String() string { return proto.CompactTextString(m) } +func (*SdkRoleDeleteResponse) ProtoMessage() {} +func (*SdkRoleDeleteResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{301} } - -func (x *SdkRoleDeleteResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkRoleDeleteResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkRoleDeleteResponse.Unmarshal(m, b) } - -func (*SdkRoleDeleteResponse) ProtoMessage() {} - -func (x *SdkRoleDeleteResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[310] - 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) +func (m *SdkRoleDeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkRoleDeleteResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkRoleDeleteResponse.ProtoReflect.Descriptor instead. -func (*SdkRoleDeleteResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{310} +func (dst *SdkRoleDeleteResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkRoleDeleteResponse.Merge(dst, src) +} +func (m *SdkRoleDeleteResponse) XXX_Size() int { + return xxx_messageInfo_SdkRoleDeleteResponse.Size(m) +} +func (m *SdkRoleDeleteResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkRoleDeleteResponse.DiscardUnknown(m) } +var xxx_messageInfo_SdkRoleDeleteResponse proto.InternalMessageInfo + // Defines a request to update an existing role type SdkRoleUpdateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // New role update - Role *SdkRole `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + Role *SdkRole `protobuf:"bytes,1,opt,name=role" json:"role,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkRoleUpdateRequest) Reset() { - *x = SdkRoleUpdateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[311] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkRoleUpdateRequest) Reset() { *m = SdkRoleUpdateRequest{} } +func (m *SdkRoleUpdateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkRoleUpdateRequest) ProtoMessage() {} +func (*SdkRoleUpdateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{302} } - -func (x *SdkRoleUpdateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkRoleUpdateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkRoleUpdateRequest.Unmarshal(m, b) +} +func (m *SdkRoleUpdateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkRoleUpdateRequest.Marshal(b, m, deterministic) +} +func (dst *SdkRoleUpdateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkRoleUpdateRequest.Merge(dst, src) +} +func (m *SdkRoleUpdateRequest) XXX_Size() int { + return xxx_messageInfo_SdkRoleUpdateRequest.Size(m) +} +func (m *SdkRoleUpdateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkRoleUpdateRequest.DiscardUnknown(m) } -func (*SdkRoleUpdateRequest) ProtoMessage() {} +var xxx_messageInfo_SdkRoleUpdateRequest proto.InternalMessageInfo -func (x *SdkRoleUpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[311] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (m *SdkRoleUpdateRequest) GetRole() *SdkRole { + if m != nil { + return m.Role } - return mi.MessageOf(x) -} - -// Deprecated: Use SdkRoleUpdateRequest.ProtoReflect.Descriptor instead. -func (*SdkRoleUpdateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{311} -} - -func (x *SdkRoleUpdateRequest) GetRole() *SdkRole { - if x != nil { - return x.Role - } - return nil + return nil } // Response contains information about the updated role type SdkRoleUpdateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Role updated - Role *SdkRole `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + Role *SdkRole `protobuf:"bytes,1,opt,name=role" json:"role,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkRoleUpdateResponse) Reset() { - *x = SdkRoleUpdateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[312] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkRoleUpdateResponse) Reset() { *m = SdkRoleUpdateResponse{} } +func (m *SdkRoleUpdateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkRoleUpdateResponse) ProtoMessage() {} +func (*SdkRoleUpdateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{303} } - -func (x *SdkRoleUpdateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkRoleUpdateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkRoleUpdateResponse.Unmarshal(m, b) } - -func (*SdkRoleUpdateResponse) ProtoMessage() {} - -func (x *SdkRoleUpdateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[312] - 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) +func (m *SdkRoleUpdateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkRoleUpdateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkRoleUpdateResponse.ProtoReflect.Descriptor instead. -func (*SdkRoleUpdateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{312} +func (dst *SdkRoleUpdateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkRoleUpdateResponse.Merge(dst, src) +} +func (m *SdkRoleUpdateResponse) XXX_Size() int { + return xxx_messageInfo_SdkRoleUpdateResponse.Size(m) } +func (m *SdkRoleUpdateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkRoleUpdateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkRoleUpdateResponse proto.InternalMessageInfo -func (x *SdkRoleUpdateResponse) GetRole() *SdkRole { - if x != nil { - return x.Role +func (m *SdkRoleUpdateResponse) GetRole() *SdkRole { + if m != nil { + return m.Role } return nil } type FilesystemTrim struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *FilesystemTrim) Reset() { - *x = FilesystemTrim{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[313] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *FilesystemTrim) Reset() { *m = FilesystemTrim{} } +func (m *FilesystemTrim) String() string { return proto.CompactTextString(m) } +func (*FilesystemTrim) ProtoMessage() {} +func (*FilesystemTrim) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{304} } - -func (x *FilesystemTrim) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *FilesystemTrim) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_FilesystemTrim.Unmarshal(m, b) } - -func (*FilesystemTrim) ProtoMessage() {} - -func (x *FilesystemTrim) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[313] - 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) +func (m *FilesystemTrim) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_FilesystemTrim.Marshal(b, m, deterministic) } - -// Deprecated: Use FilesystemTrim.ProtoReflect.Descriptor instead. -func (*FilesystemTrim) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{313} +func (dst *FilesystemTrim) XXX_Merge(src proto.Message) { + xxx_messageInfo_FilesystemTrim.Merge(dst, src) +} +func (m *FilesystemTrim) XXX_Size() int { + return xxx_messageInfo_FilesystemTrim.Size(m) +} +func (m *FilesystemTrim) XXX_DiscardUnknown() { + xxx_messageInfo_FilesystemTrim.DiscardUnknown(m) } +var xxx_messageInfo_FilesystemTrim proto.InternalMessageInfo + // SdkFilesystemTrimStartRequest defines a request to start a background filesystem trim operation type SdkFilesystemTrimStartRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of the volume - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // Path where the volume is mounted - MountPath string `protobuf:"bytes,2,opt,name=mount_path,json=mountPath,proto3" json:"mount_path,omitempty"` + MountPath string `protobuf:"bytes,2,opt,name=mount_path,json=mountPath" json:"mount_path,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkFilesystemTrimStartRequest) Reset() { - *x = SdkFilesystemTrimStartRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[314] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkFilesystemTrimStartRequest) Reset() { *m = SdkFilesystemTrimStartRequest{} } +func (m *SdkFilesystemTrimStartRequest) String() string { return proto.CompactTextString(m) } +func (*SdkFilesystemTrimStartRequest) ProtoMessage() {} +func (*SdkFilesystemTrimStartRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{305} } - -func (x *SdkFilesystemTrimStartRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkFilesystemTrimStartRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkFilesystemTrimStartRequest.Unmarshal(m, b) } - -func (*SdkFilesystemTrimStartRequest) ProtoMessage() {} - -func (x *SdkFilesystemTrimStartRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[314] - 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) +func (m *SdkFilesystemTrimStartRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkFilesystemTrimStartRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkFilesystemTrimStartRequest.ProtoReflect.Descriptor instead. -func (*SdkFilesystemTrimStartRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{314} +func (dst *SdkFilesystemTrimStartRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkFilesystemTrimStartRequest.Merge(dst, src) +} +func (m *SdkFilesystemTrimStartRequest) XXX_Size() int { + return xxx_messageInfo_SdkFilesystemTrimStartRequest.Size(m) } +func (m *SdkFilesystemTrimStartRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkFilesystemTrimStartRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkFilesystemTrimStartRequest proto.InternalMessageInfo -func (x *SdkFilesystemTrimStartRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +func (m *SdkFilesystemTrimStartRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *SdkFilesystemTrimStartRequest) GetMountPath() string { - if x != nil { - return x.MountPath +func (m *SdkFilesystemTrimStartRequest) GetMountPath() string { + if m != nil { + return m.MountPath } return "" } @@ -25687,58 +23231,49 @@ func (x *SdkFilesystemTrimStartRequest) GetMountPath() string { // SdkFilesystemTrimStartResponse defines the response for a // SdkFilesystemTrimStartRequest. type SdkFilesystemTrimStartResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Status code representing the state of the filesystem trim operation - Status FilesystemTrim_FilesystemTrimStatus `protobuf:"varint,1,opt,name=status,proto3,enum=openstorage.api.FilesystemTrim_FilesystemTrimStatus" json:"status,omitempty"` + Status FilesystemTrim_FilesystemTrimStatus `protobuf:"varint,1,opt,name=status,enum=openstorage.api.FilesystemTrim_FilesystemTrimStatus" json:"status,omitempty"` // Text blob containing ASCII text providing details of the operation - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkFilesystemTrimStartResponse) Reset() { - *x = SdkFilesystemTrimStartResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[315] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkFilesystemTrimStartResponse) Reset() { *m = SdkFilesystemTrimStartResponse{} } +func (m *SdkFilesystemTrimStartResponse) String() string { return proto.CompactTextString(m) } +func (*SdkFilesystemTrimStartResponse) ProtoMessage() {} +func (*SdkFilesystemTrimStartResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{306} } - -func (x *SdkFilesystemTrimStartResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkFilesystemTrimStartResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkFilesystemTrimStartResponse.Unmarshal(m, b) } - -func (*SdkFilesystemTrimStartResponse) ProtoMessage() {} - -func (x *SdkFilesystemTrimStartResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[315] - 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) +func (m *SdkFilesystemTrimStartResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkFilesystemTrimStartResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkFilesystemTrimStartResponse.ProtoReflect.Descriptor instead. -func (*SdkFilesystemTrimStartResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{315} +func (dst *SdkFilesystemTrimStartResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkFilesystemTrimStartResponse.Merge(dst, src) +} +func (m *SdkFilesystemTrimStartResponse) XXX_Size() int { + return xxx_messageInfo_SdkFilesystemTrimStartResponse.Size(m) +} +func (m *SdkFilesystemTrimStartResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkFilesystemTrimStartResponse.DiscardUnknown(m) } -func (x *SdkFilesystemTrimStartResponse) GetStatus() FilesystemTrim_FilesystemTrimStatus { - if x != nil { - return x.Status +var xxx_messageInfo_SdkFilesystemTrimStartResponse proto.InternalMessageInfo + +func (m *SdkFilesystemTrimStartResponse) GetStatus() FilesystemTrim_FilesystemTrimStatus { + if m != nil { + return m.Status } return FilesystemTrim_FS_TRIM_UNKNOWN } -func (x *SdkFilesystemTrimStartResponse) GetMessage() string { - if x != nil { - return x.Message +func (m *SdkFilesystemTrimStartResponse) GetMessage() string { + if m != nil { + return m.Message } return "" } @@ -25746,58 +23281,49 @@ func (x *SdkFilesystemTrimStartResponse) GetMessage() string { // SdkFilesystemTrimStatusRequest defines a request to get status of a // background filesystem trim operation type SdkFilesystemTrimStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of the volume - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // Path where the volume is mounted - MountPath string `protobuf:"bytes,2,opt,name=mount_path,json=mountPath,proto3" json:"mount_path,omitempty"` + MountPath string `protobuf:"bytes,2,opt,name=mount_path,json=mountPath" json:"mount_path,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkFilesystemTrimStatusRequest) Reset() { - *x = SdkFilesystemTrimStatusRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[316] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkFilesystemTrimStatusRequest) Reset() { *m = SdkFilesystemTrimStatusRequest{} } +func (m *SdkFilesystemTrimStatusRequest) String() string { return proto.CompactTextString(m) } +func (*SdkFilesystemTrimStatusRequest) ProtoMessage() {} +func (*SdkFilesystemTrimStatusRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{307} } - -func (x *SdkFilesystemTrimStatusRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkFilesystemTrimStatusRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkFilesystemTrimStatusRequest.Unmarshal(m, b) } - -func (*SdkFilesystemTrimStatusRequest) ProtoMessage() {} - -func (x *SdkFilesystemTrimStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[316] - 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) +func (m *SdkFilesystemTrimStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkFilesystemTrimStatusRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkFilesystemTrimStatusRequest.ProtoReflect.Descriptor instead. -func (*SdkFilesystemTrimStatusRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{316} +func (dst *SdkFilesystemTrimStatusRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkFilesystemTrimStatusRequest.Merge(dst, src) +} +func (m *SdkFilesystemTrimStatusRequest) XXX_Size() int { + return xxx_messageInfo_SdkFilesystemTrimStatusRequest.Size(m) } +func (m *SdkFilesystemTrimStatusRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkFilesystemTrimStatusRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkFilesystemTrimStatusRequest proto.InternalMessageInfo -func (x *SdkFilesystemTrimStatusRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +func (m *SdkFilesystemTrimStatusRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *SdkFilesystemTrimStatusRequest) GetMountPath() string { - if x != nil { - return x.MountPath +func (m *SdkFilesystemTrimStatusRequest) GetMountPath() string { + if m != nil { + return m.MountPath } return "" } @@ -25805,254 +23331,211 @@ func (x *SdkFilesystemTrimStatusRequest) GetMountPath() string { // SdkFilesystemTrimStatusResponse defines the response for a // SdkFilesystemTrimStatusRequest. type SdkFilesystemTrimStatusResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Status code representing the state of the filesystem trim operation - Status FilesystemTrim_FilesystemTrimStatus `protobuf:"varint,1,opt,name=status,proto3,enum=openstorage.api.FilesystemTrim_FilesystemTrimStatus" json:"status,omitempty"` + Status FilesystemTrim_FilesystemTrimStatus `protobuf:"varint,1,opt,name=status,enum=openstorage.api.FilesystemTrim_FilesystemTrimStatus" json:"status,omitempty"` // Text blob containing ASCII text providing details of the operation - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkFilesystemTrimStatusResponse) Reset() { - *x = SdkFilesystemTrimStatusResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[317] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkFilesystemTrimStatusResponse) Reset() { *m = SdkFilesystemTrimStatusResponse{} } +func (m *SdkFilesystemTrimStatusResponse) String() string { return proto.CompactTextString(m) } +func (*SdkFilesystemTrimStatusResponse) ProtoMessage() {} +func (*SdkFilesystemTrimStatusResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{308} } - -func (x *SdkFilesystemTrimStatusResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkFilesystemTrimStatusResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkFilesystemTrimStatusResponse.Unmarshal(m, b) } - -func (*SdkFilesystemTrimStatusResponse) ProtoMessage() {} - -func (x *SdkFilesystemTrimStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[317] - 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) +func (m *SdkFilesystemTrimStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkFilesystemTrimStatusResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkFilesystemTrimStatusResponse.ProtoReflect.Descriptor instead. -func (*SdkFilesystemTrimStatusResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{317} +func (dst *SdkFilesystemTrimStatusResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkFilesystemTrimStatusResponse.Merge(dst, src) +} +func (m *SdkFilesystemTrimStatusResponse) XXX_Size() int { + return xxx_messageInfo_SdkFilesystemTrimStatusResponse.Size(m) +} +func (m *SdkFilesystemTrimStatusResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkFilesystemTrimStatusResponse.DiscardUnknown(m) } -func (x *SdkFilesystemTrimStatusResponse) GetStatus() FilesystemTrim_FilesystemTrimStatus { - if x != nil { - return x.Status +var xxx_messageInfo_SdkFilesystemTrimStatusResponse proto.InternalMessageInfo + +func (m *SdkFilesystemTrimStatusResponse) GetStatus() FilesystemTrim_FilesystemTrimStatus { + if m != nil { + return m.Status } return FilesystemTrim_FS_TRIM_UNKNOWN } -func (x *SdkFilesystemTrimStatusResponse) GetMessage() string { - if x != nil { - return x.Message +func (m *SdkFilesystemTrimStatusResponse) GetMessage() string { + if m != nil { + return m.Message } return "" } // SdkAutoFSTrimStatusRequest defines a request to get status of autofs trim operation type SdkAutoFSTrimStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkAutoFSTrimStatusRequest) Reset() { - *x = SdkAutoFSTrimStatusRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[318] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkAutoFSTrimStatusRequest) Reset() { *m = SdkAutoFSTrimStatusRequest{} } +func (m *SdkAutoFSTrimStatusRequest) String() string { return proto.CompactTextString(m) } +func (*SdkAutoFSTrimStatusRequest) ProtoMessage() {} +func (*SdkAutoFSTrimStatusRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{309} } - -func (x *SdkAutoFSTrimStatusRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAutoFSTrimStatusRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAutoFSTrimStatusRequest.Unmarshal(m, b) } - -func (*SdkAutoFSTrimStatusRequest) ProtoMessage() {} - -func (x *SdkAutoFSTrimStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[318] - 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) +func (m *SdkAutoFSTrimStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAutoFSTrimStatusRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkAutoFSTrimStatusRequest.ProtoReflect.Descriptor instead. -func (*SdkAutoFSTrimStatusRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{318} +func (dst *SdkAutoFSTrimStatusRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAutoFSTrimStatusRequest.Merge(dst, src) +} +func (m *SdkAutoFSTrimStatusRequest) XXX_Size() int { + return xxx_messageInfo_SdkAutoFSTrimStatusRequest.Size(m) +} +func (m *SdkAutoFSTrimStatusRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAutoFSTrimStatusRequest.DiscardUnknown(m) } +var xxx_messageInfo_SdkAutoFSTrimStatusRequest proto.InternalMessageInfo + // SdkAutoFSTrimStatusResponse defines the response for a // SdkAutoFSTrimStatusRequest. type SdkAutoFSTrimStatusResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // map of volume id and the state of the filesystem trim operation - TrimStatus map[string]FilesystemTrim_FilesystemTrimStatus `protobuf:"bytes,1,rep,name=trim_status,json=trimStatus,proto3" json:"trim_status,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=openstorage.api.FilesystemTrim_FilesystemTrimStatus"` + TrimStatus map[string]FilesystemTrim_FilesystemTrimStatus `protobuf:"bytes,1,rep,name=trim_status,json=trimStatus" json:"trim_status,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=openstorage.api.FilesystemTrim_FilesystemTrimStatus"` // Text blob containing ASCII text providing details of the operation - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkAutoFSTrimStatusResponse) Reset() { - *x = SdkAutoFSTrimStatusResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[319] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkAutoFSTrimStatusResponse) Reset() { *m = SdkAutoFSTrimStatusResponse{} } +func (m *SdkAutoFSTrimStatusResponse) String() string { return proto.CompactTextString(m) } +func (*SdkAutoFSTrimStatusResponse) ProtoMessage() {} +func (*SdkAutoFSTrimStatusResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{310} } - -func (x *SdkAutoFSTrimStatusResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAutoFSTrimStatusResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAutoFSTrimStatusResponse.Unmarshal(m, b) } - -func (*SdkAutoFSTrimStatusResponse) ProtoMessage() {} - -func (x *SdkAutoFSTrimStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[319] - 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) +func (m *SdkAutoFSTrimStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAutoFSTrimStatusResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkAutoFSTrimStatusResponse.ProtoReflect.Descriptor instead. -func (*SdkAutoFSTrimStatusResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{319} +func (dst *SdkAutoFSTrimStatusResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAutoFSTrimStatusResponse.Merge(dst, src) +} +func (m *SdkAutoFSTrimStatusResponse) XXX_Size() int { + return xxx_messageInfo_SdkAutoFSTrimStatusResponse.Size(m) } +func (m *SdkAutoFSTrimStatusResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAutoFSTrimStatusResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkAutoFSTrimStatusResponse proto.InternalMessageInfo -func (x *SdkAutoFSTrimStatusResponse) GetTrimStatus() map[string]FilesystemTrim_FilesystemTrimStatus { - if x != nil { - return x.TrimStatus +func (m *SdkAutoFSTrimStatusResponse) GetTrimStatus() map[string]FilesystemTrim_FilesystemTrimStatus { + if m != nil { + return m.TrimStatus } return nil } -func (x *SdkAutoFSTrimStatusResponse) GetMessage() string { - if x != nil { - return x.Message +func (m *SdkAutoFSTrimStatusResponse) GetMessage() string { + if m != nil { + return m.Message } return "" } // SdkAutoFSTrimUsageRequest defines a request to get status of autofs trim operation type SdkAutoFSTrimUsageRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkAutoFSTrimUsageRequest) Reset() { - *x = SdkAutoFSTrimUsageRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[320] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkAutoFSTrimUsageRequest) Reset() { *m = SdkAutoFSTrimUsageRequest{} } +func (m *SdkAutoFSTrimUsageRequest) String() string { return proto.CompactTextString(m) } +func (*SdkAutoFSTrimUsageRequest) ProtoMessage() {} +func (*SdkAutoFSTrimUsageRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{311} } - -func (x *SdkAutoFSTrimUsageRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAutoFSTrimUsageRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAutoFSTrimUsageRequest.Unmarshal(m, b) } - -func (*SdkAutoFSTrimUsageRequest) ProtoMessage() {} - -func (x *SdkAutoFSTrimUsageRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[320] - 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) +func (m *SdkAutoFSTrimUsageRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAutoFSTrimUsageRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkAutoFSTrimUsageRequest.ProtoReflect.Descriptor instead. -func (*SdkAutoFSTrimUsageRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{320} +func (dst *SdkAutoFSTrimUsageRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAutoFSTrimUsageRequest.Merge(dst, src) +} +func (m *SdkAutoFSTrimUsageRequest) XXX_Size() int { + return xxx_messageInfo_SdkAutoFSTrimUsageRequest.Size(m) } +func (m *SdkAutoFSTrimUsageRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAutoFSTrimUsageRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkAutoFSTrimUsageRequest proto.InternalMessageInfo // SdkAutoFSTrimUsageResponse defines the response for a // SdkAutoFSTrimUsageRequest. type SdkAutoFSTrimUsageResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // map of fstrim disk usage and volume name - Usage map[string]*FstrimVolumeUsageInfo `protobuf:"bytes,1,rep,name=usage,proto3" json:"usage,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Usage map[string]*FstrimVolumeUsageInfo `protobuf:"bytes,1,rep,name=usage" json:"usage,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Text blob containing ASCII text providing details of the operation - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkAutoFSTrimUsageResponse) Reset() { - *x = SdkAutoFSTrimUsageResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[321] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkAutoFSTrimUsageResponse) Reset() { *m = SdkAutoFSTrimUsageResponse{} } +func (m *SdkAutoFSTrimUsageResponse) String() string { return proto.CompactTextString(m) } +func (*SdkAutoFSTrimUsageResponse) ProtoMessage() {} +func (*SdkAutoFSTrimUsageResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{312} } - -func (x *SdkAutoFSTrimUsageResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAutoFSTrimUsageResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAutoFSTrimUsageResponse.Unmarshal(m, b) } - -func (*SdkAutoFSTrimUsageResponse) ProtoMessage() {} - -func (x *SdkAutoFSTrimUsageResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[321] - 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) +func (m *SdkAutoFSTrimUsageResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAutoFSTrimUsageResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkAutoFSTrimUsageResponse.ProtoReflect.Descriptor instead. -func (*SdkAutoFSTrimUsageResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{321} +func (dst *SdkAutoFSTrimUsageResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAutoFSTrimUsageResponse.Merge(dst, src) +} +func (m *SdkAutoFSTrimUsageResponse) XXX_Size() int { + return xxx_messageInfo_SdkAutoFSTrimUsageResponse.Size(m) +} +func (m *SdkAutoFSTrimUsageResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAutoFSTrimUsageResponse.DiscardUnknown(m) } -func (x *SdkAutoFSTrimUsageResponse) GetUsage() map[string]*FstrimVolumeUsageInfo { - if x != nil { - return x.Usage +var xxx_messageInfo_SdkAutoFSTrimUsageResponse proto.InternalMessageInfo + +func (m *SdkAutoFSTrimUsageResponse) GetUsage() map[string]*FstrimVolumeUsageInfo { + if m != nil { + return m.Usage } return nil } -func (x *SdkAutoFSTrimUsageResponse) GetMessage() string { - if x != nil { - return x.Message +func (m *SdkAutoFSTrimUsageResponse) GetMessage() string { + if m != nil { + return m.Message } return "" } @@ -26060,620 +23543,414 @@ func (x *SdkAutoFSTrimUsageResponse) GetMessage() string { // SdkFilesystemTrimStopRequest defines a request to stop a background // filesystem trim operation type SdkFilesystemTrimStopRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of the volume - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // Path where the volume is mounted - MountPath string `protobuf:"bytes,2,opt,name=mount_path,json=mountPath,proto3" json:"mount_path,omitempty"` + MountPath string `protobuf:"bytes,2,opt,name=mount_path,json=mountPath" json:"mount_path,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkFilesystemTrimStopRequest) Reset() { - *x = SdkFilesystemTrimStopRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[322] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkFilesystemTrimStopRequest) Reset() { *m = SdkFilesystemTrimStopRequest{} } +func (m *SdkFilesystemTrimStopRequest) String() string { return proto.CompactTextString(m) } +func (*SdkFilesystemTrimStopRequest) ProtoMessage() {} +func (*SdkFilesystemTrimStopRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{313} } - -func (x *SdkFilesystemTrimStopRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkFilesystemTrimStopRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkFilesystemTrimStopRequest.Unmarshal(m, b) } - -func (*SdkFilesystemTrimStopRequest) ProtoMessage() {} - -func (x *SdkFilesystemTrimStopRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[322] - 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) +func (m *SdkFilesystemTrimStopRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkFilesystemTrimStopRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkFilesystemTrimStopRequest.ProtoReflect.Descriptor instead. -func (*SdkFilesystemTrimStopRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{322} +func (dst *SdkFilesystemTrimStopRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkFilesystemTrimStopRequest.Merge(dst, src) +} +func (m *SdkFilesystemTrimStopRequest) XXX_Size() int { + return xxx_messageInfo_SdkFilesystemTrimStopRequest.Size(m) } +func (m *SdkFilesystemTrimStopRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkFilesystemTrimStopRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkFilesystemTrimStopRequest proto.InternalMessageInfo -func (x *SdkFilesystemTrimStopRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +func (m *SdkFilesystemTrimStopRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *SdkFilesystemTrimStopRequest) GetMountPath() string { - if x != nil { - return x.MountPath +func (m *SdkFilesystemTrimStopRequest) GetMountPath() string { + if m != nil { + return m.MountPath } return "" } -// SdkVolumeBytesUsedResponse defines a response to fetch multiple volume util from a given node -type SdkVolumeBytesUsedResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Provides vol util of multiple requested volumes from a given node - VolUtilInfo *VolumeBytesUsedByNode `protobuf:"bytes,1,opt,name=vol_util_info,json=volUtilInfo,proto3" json:"vol_util_info,omitempty"` +// Empty response +type SdkFilesystemTrimStopResponse struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeBytesUsedResponse) Reset() { - *x = SdkVolumeBytesUsedResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[323] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkFilesystemTrimStopResponse) Reset() { *m = SdkFilesystemTrimStopResponse{} } +func (m *SdkFilesystemTrimStopResponse) String() string { return proto.CompactTextString(m) } +func (*SdkFilesystemTrimStopResponse) ProtoMessage() {} +func (*SdkFilesystemTrimStopResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{314} } - -func (x *SdkVolumeBytesUsedResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkFilesystemTrimStopResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkFilesystemTrimStopResponse.Unmarshal(m, b) } - -func (*SdkVolumeBytesUsedResponse) ProtoMessage() {} - -func (x *SdkVolumeBytesUsedResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[323] - 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) +func (m *SdkFilesystemTrimStopResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkFilesystemTrimStopResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeBytesUsedResponse.ProtoReflect.Descriptor instead. -func (*SdkVolumeBytesUsedResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{323} +func (dst *SdkFilesystemTrimStopResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkFilesystemTrimStopResponse.Merge(dst, src) } - -func (x *SdkVolumeBytesUsedResponse) GetVolUtilInfo() *VolumeBytesUsedByNode { - if x != nil { - return x.VolUtilInfo - } - return nil +func (m *SdkFilesystemTrimStopResponse) XXX_Size() int { + return xxx_messageInfo_SdkFilesystemTrimStopResponse.Size(m) +} +func (m *SdkFilesystemTrimStopResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkFilesystemTrimStopResponse.DiscardUnknown(m) } -// SdkVolumeBytesUsedRequest defines a request for fetching per volume utilization -// from multiple volume in a given node -type SdkVolumeBytesUsedRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +var xxx_messageInfo_SdkFilesystemTrimStopResponse proto.InternalMessageInfo - // machine uuid of targeted node - NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` - // volume ids to be found in usage response, can be empty - Ids []uint64 `protobuf:"varint,2,rep,packed,name=ids,proto3" json:"ids,omitempty"` +// SdkAutoFSTrimPushRequest defines the request to push a volume to autofstrim +// queue +type SdkAutoFSTrimPushRequest struct { + // Id of the volume + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVolumeBytesUsedRequest) Reset() { - *x = SdkVolumeBytesUsedRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[324] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkAutoFSTrimPushRequest) Reset() { *m = SdkAutoFSTrimPushRequest{} } +func (m *SdkAutoFSTrimPushRequest) String() string { return proto.CompactTextString(m) } +func (*SdkAutoFSTrimPushRequest) ProtoMessage() {} +func (*SdkAutoFSTrimPushRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{315} } - -func (x *SdkVolumeBytesUsedRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAutoFSTrimPushRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAutoFSTrimPushRequest.Unmarshal(m, b) } - -func (*SdkVolumeBytesUsedRequest) ProtoMessage() {} - -func (x *SdkVolumeBytesUsedRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[324] - 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) +func (m *SdkAutoFSTrimPushRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAutoFSTrimPushRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVolumeBytesUsedRequest.ProtoReflect.Descriptor instead. -func (*SdkVolumeBytesUsedRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{324} +func (dst *SdkAutoFSTrimPushRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAutoFSTrimPushRequest.Merge(dst, src) +} +func (m *SdkAutoFSTrimPushRequest) XXX_Size() int { + return xxx_messageInfo_SdkAutoFSTrimPushRequest.Size(m) } +func (m *SdkAutoFSTrimPushRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAutoFSTrimPushRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkAutoFSTrimPushRequest proto.InternalMessageInfo -func (x *SdkVolumeBytesUsedRequest) GetNodeId() string { - if x != nil { - return x.NodeId +func (m *SdkAutoFSTrimPushRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *SdkVolumeBytesUsedRequest) GetIds() []uint64 { - if x != nil { - return x.Ids - } - return nil +// SdkAutoFSTrimPushResponse defines the response to push a volume to autofstrim +// queue +type SdkAutoFSTrimPushResponse struct { + // Text blob containing ASCII text providing details of the operation + Message string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -// Empty response -type SdkFilesystemTrimStopResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (m *SdkAutoFSTrimPushResponse) Reset() { *m = SdkAutoFSTrimPushResponse{} } +func (m *SdkAutoFSTrimPushResponse) String() string { return proto.CompactTextString(m) } +func (*SdkAutoFSTrimPushResponse) ProtoMessage() {} +func (*SdkAutoFSTrimPushResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{316} } - -func (x *SdkFilesystemTrimStopResponse) Reset() { - *x = SdkFilesystemTrimStopResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[325] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkAutoFSTrimPushResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAutoFSTrimPushResponse.Unmarshal(m, b) } - -func (x *SdkFilesystemTrimStopResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAutoFSTrimPushResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAutoFSTrimPushResponse.Marshal(b, m, deterministic) +} +func (dst *SdkAutoFSTrimPushResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAutoFSTrimPushResponse.Merge(dst, src) +} +func (m *SdkAutoFSTrimPushResponse) XXX_Size() int { + return xxx_messageInfo_SdkAutoFSTrimPushResponse.Size(m) +} +func (m *SdkAutoFSTrimPushResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAutoFSTrimPushResponse.DiscardUnknown(m) } -func (*SdkFilesystemTrimStopResponse) ProtoMessage() {} +var xxx_messageInfo_SdkAutoFSTrimPushResponse proto.InternalMessageInfo -func (x *SdkFilesystemTrimStopResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[325] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (m *SdkAutoFSTrimPushResponse) GetMessage() string { + if m != nil { + return m.Message } - return mi.MessageOf(x) -} - -// Deprecated: Use SdkFilesystemTrimStopResponse.ProtoReflect.Descriptor instead. -func (*SdkFilesystemTrimStopResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{325} + return "" } -// SdkAutoFSTrimPushRequest defines the request to push a volume to autofstrim +// SdkAutoFSTrimPopRequest defines the request to pop a volume to autofstrim // queue -type SdkAutoFSTrimPushRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - +type SdkAutoFSTrimPopRequest struct { // Id of the volume - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkAutoFSTrimPushRequest) Reset() { - *x = SdkAutoFSTrimPushRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[326] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkAutoFSTrimPopRequest) Reset() { *m = SdkAutoFSTrimPopRequest{} } +func (m *SdkAutoFSTrimPopRequest) String() string { return proto.CompactTextString(m) } +func (*SdkAutoFSTrimPopRequest) ProtoMessage() {} +func (*SdkAutoFSTrimPopRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{317} } - -func (x *SdkAutoFSTrimPushRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAutoFSTrimPopRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAutoFSTrimPopRequest.Unmarshal(m, b) } - -func (*SdkAutoFSTrimPushRequest) ProtoMessage() {} - -func (x *SdkAutoFSTrimPushRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[326] - 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) +func (m *SdkAutoFSTrimPopRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAutoFSTrimPopRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkAutoFSTrimPushRequest.ProtoReflect.Descriptor instead. -func (*SdkAutoFSTrimPushRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{326} +func (dst *SdkAutoFSTrimPopRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAutoFSTrimPopRequest.Merge(dst, src) +} +func (m *SdkAutoFSTrimPopRequest) XXX_Size() int { + return xxx_messageInfo_SdkAutoFSTrimPopRequest.Size(m) +} +func (m *SdkAutoFSTrimPopRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAutoFSTrimPopRequest.DiscardUnknown(m) } -func (x *SdkAutoFSTrimPushRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +var xxx_messageInfo_SdkAutoFSTrimPopRequest proto.InternalMessageInfo + +func (m *SdkAutoFSTrimPopRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -// SdkAutoFSTrimPushResponse defines the response to push a volume to autofstrim +// SdkAutoFSTrimPopResponse defines the response to pop a volume to autofstrim // queue -type SdkAutoFSTrimPushResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - +type SdkAutoFSTrimPopResponse struct { // Text blob containing ASCII text providing details of the operation - Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` + Message string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkAutoFSTrimPushResponse) Reset() { - *x = SdkAutoFSTrimPushResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[327] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkAutoFSTrimPopResponse) Reset() { *m = SdkAutoFSTrimPopResponse{} } +func (m *SdkAutoFSTrimPopResponse) String() string { return proto.CompactTextString(m) } +func (*SdkAutoFSTrimPopResponse) ProtoMessage() {} +func (*SdkAutoFSTrimPopResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{318} } - -func (x *SdkAutoFSTrimPushResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkAutoFSTrimPopResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkAutoFSTrimPopResponse.Unmarshal(m, b) +} +func (m *SdkAutoFSTrimPopResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkAutoFSTrimPopResponse.Marshal(b, m, deterministic) +} +func (dst *SdkAutoFSTrimPopResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkAutoFSTrimPopResponse.Merge(dst, src) +} +func (m *SdkAutoFSTrimPopResponse) XXX_Size() int { + return xxx_messageInfo_SdkAutoFSTrimPopResponse.Size(m) +} +func (m *SdkAutoFSTrimPopResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkAutoFSTrimPopResponse.DiscardUnknown(m) } -func (*SdkAutoFSTrimPushResponse) ProtoMessage() {} +var xxx_messageInfo_SdkAutoFSTrimPopResponse proto.InternalMessageInfo -func (x *SdkAutoFSTrimPushResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[327] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (m *SdkAutoFSTrimPopResponse) GetMessage() string { + if m != nil { + return m.Message } - return mi.MessageOf(x) + return "" } -// Deprecated: Use SdkAutoFSTrimPushResponse.ProtoReflect.Descriptor instead. -func (*SdkAutoFSTrimPushResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{327} -} - -func (x *SdkAutoFSTrimPushResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -// SdkAutoFSTrimPopRequest defines the request to pop a volume to autofstrim -// queue -type SdkAutoFSTrimPopRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Id of the volume - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` -} - -func (x *SdkAutoFSTrimPopRequest) Reset() { - *x = SdkAutoFSTrimPopRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[328] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SdkAutoFSTrimPopRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SdkAutoFSTrimPopRequest) ProtoMessage() {} - -func (x *SdkAutoFSTrimPopRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[328] - 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) +// SdkVolumeBytesUsedResponse defines a response to fetch multiple volume util from a given node +type SdkVolumeBytesUsedResponse struct { + // Provides vol util of multiple requested volumes from a given node + VolUtilInfo *VolumeBytesUsedByNode `protobuf:"bytes,1,opt,name=vol_util_info,json=volUtilInfo" json:"vol_util_info,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -// Deprecated: Use SdkAutoFSTrimPopRequest.ProtoReflect.Descriptor instead. -func (*SdkAutoFSTrimPopRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{328} +func (m *SdkVolumeBytesUsedResponse) Reset() { *m = SdkVolumeBytesUsedResponse{} } +func (m *SdkVolumeBytesUsedResponse) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeBytesUsedResponse) ProtoMessage() {} +func (*SdkVolumeBytesUsedResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{319} } - -func (x *SdkAutoFSTrimPopRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId - } - return "" +func (m *SdkVolumeBytesUsedResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeBytesUsedResponse.Unmarshal(m, b) } - -// SdkAutoFSTrimPopResponse defines the response to pop a volume to autofstrim -// queue -type SdkAutoFSTrimPopResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Text blob containing ASCII text providing details of the operation - Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` +func (m *SdkVolumeBytesUsedResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeBytesUsedResponse.Marshal(b, m, deterministic) } - -func (x *SdkAutoFSTrimPopResponse) Reset() { - *x = SdkAutoFSTrimPopResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[329] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (dst *SdkVolumeBytesUsedResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeBytesUsedResponse.Merge(dst, src) } - -func (x *SdkAutoFSTrimPopResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeBytesUsedResponse) XXX_Size() int { + return xxx_messageInfo_SdkVolumeBytesUsedResponse.Size(m) } - -func (*SdkAutoFSTrimPopResponse) ProtoMessage() {} - -func (x *SdkAutoFSTrimPopResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[329] - 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) +func (m *SdkVolumeBytesUsedResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeBytesUsedResponse.DiscardUnknown(m) } -// Deprecated: Use SdkAutoFSTrimPopResponse.ProtoReflect.Descriptor instead. -func (*SdkAutoFSTrimPopResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{329} -} +var xxx_messageInfo_SdkVolumeBytesUsedResponse proto.InternalMessageInfo -func (x *SdkAutoFSTrimPopResponse) GetMessage() string { - if x != nil { - return x.Message +func (m *SdkVolumeBytesUsedResponse) GetVolUtilInfo() *VolumeBytesUsedByNode { + if m != nil { + return m.VolUtilInfo } - return "" -} - -type FilesystemCheck struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + return nil } -func (x *FilesystemCheck) Reset() { - *x = FilesystemCheck{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[330] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +// SdkVolumeBytesUsedRequest defines a request for fetching per volume utilization +// from multiple volume in a given node +type SdkVolumeBytesUsedRequest struct { + // machine uuid of targeted node + NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId" json:"node_id,omitempty"` + // volume ids to be found in usage response, can be empty + Ids []uint64 `protobuf:"varint,2,rep,packed,name=ids" json:"ids,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *FilesystemCheck) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeBytesUsedRequest) Reset() { *m = SdkVolumeBytesUsedRequest{} } +func (m *SdkVolumeBytesUsedRequest) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeBytesUsedRequest) ProtoMessage() {} +func (*SdkVolumeBytesUsedRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{320} } - -func (*FilesystemCheck) ProtoMessage() {} - -func (x *FilesystemCheck) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[330] - 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) +func (m *SdkVolumeBytesUsedRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeBytesUsedRequest.Unmarshal(m, b) } - -// Deprecated: Use FilesystemCheck.ProtoReflect.Descriptor instead. -func (*FilesystemCheck) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{330} +func (m *SdkVolumeBytesUsedRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeBytesUsedRequest.Marshal(b, m, deterministic) } - -// FilesystemCheckSnapInfo contains the volume snapshot info for -// filesystem check list snapshots operation -type FilesystemCheckSnapInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Name of the snapshot - VolumeSnapshotName string `protobuf:"bytes,1,opt,name=volume_snapshot_name,json=volumeSnapshotName,proto3" json:"volume_snapshot_name,omitempty"` +func (dst *SdkVolumeBytesUsedRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeBytesUsedRequest.Merge(dst, src) } - -func (x *FilesystemCheckSnapInfo) Reset() { - *x = FilesystemCheckSnapInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[331] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVolumeBytesUsedRequest) XXX_Size() int { + return xxx_messageInfo_SdkVolumeBytesUsedRequest.Size(m) } - -func (x *FilesystemCheckSnapInfo) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVolumeBytesUsedRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeBytesUsedRequest.DiscardUnknown(m) } -func (*FilesystemCheckSnapInfo) ProtoMessage() {} +var xxx_messageInfo_SdkVolumeBytesUsedRequest proto.InternalMessageInfo -func (x *FilesystemCheckSnapInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[331] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (m *SdkVolumeBytesUsedRequest) GetNodeId() string { + if m != nil { + return m.NodeId } - return mi.MessageOf(x) -} - -// Deprecated: Use FilesystemCheckSnapInfo.ProtoReflect.Descriptor instead. -func (*FilesystemCheckSnapInfo) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{331} + return "" } -func (x *FilesystemCheckSnapInfo) GetVolumeSnapshotName() string { - if x != nil { - return x.VolumeSnapshotName +func (m *SdkVolumeBytesUsedRequest) GetIds() []uint64 { + if m != nil { + return m.Ids } - return "" + return nil } -// FilesystemCheckVolInfo contains the volume info for -// filesystem check list volumes operation -type FilesystemCheckVolInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Name of the volume - VolumeName string `protobuf:"bytes,1,opt,name=volume_name,json=volumeName,proto3" json:"volume_name,omitempty"` - // Health status of volume - HealthStatus FilesystemHealthStatus `protobuf:"varint,2,opt,name=health_status,json=healthStatus,proto3,enum=openstorage.api.FilesystemHealthStatus" json:"health_status,omitempty"` - // FS status detailed message - FsStatusMsg string `protobuf:"bytes,3,opt,name=fs_status_msg,json=fsStatusMsg,proto3" json:"fs_status_msg,omitempty"` +type FilesystemCheck struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *FilesystemCheckVolInfo) Reset() { - *x = FilesystemCheckVolInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[332] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *FilesystemCheck) Reset() { *m = FilesystemCheck{} } +func (m *FilesystemCheck) String() string { return proto.CompactTextString(m) } +func (*FilesystemCheck) ProtoMessage() {} +func (*FilesystemCheck) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{321} } - -func (x *FilesystemCheckVolInfo) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *FilesystemCheck) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_FilesystemCheck.Unmarshal(m, b) } - -func (*FilesystemCheckVolInfo) ProtoMessage() {} - -func (x *FilesystemCheckVolInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[332] - 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) +func (m *FilesystemCheck) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_FilesystemCheck.Marshal(b, m, deterministic) } - -// Deprecated: Use FilesystemCheckVolInfo.ProtoReflect.Descriptor instead. -func (*FilesystemCheckVolInfo) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{332} +func (dst *FilesystemCheck) XXX_Merge(src proto.Message) { + xxx_messageInfo_FilesystemCheck.Merge(dst, src) } - -func (x *FilesystemCheckVolInfo) GetVolumeName() string { - if x != nil { - return x.VolumeName - } - return "" +func (m *FilesystemCheck) XXX_Size() int { + return xxx_messageInfo_FilesystemCheck.Size(m) } - -func (x *FilesystemCheckVolInfo) GetHealthStatus() FilesystemHealthStatus { - if x != nil { - return x.HealthStatus - } - return FilesystemHealthStatus_FS_HEALTH_STATUS_UNKNOWN +func (m *FilesystemCheck) XXX_DiscardUnknown() { + xxx_messageInfo_FilesystemCheck.DiscardUnknown(m) } -func (x *FilesystemCheckVolInfo) GetFsStatusMsg() string { - if x != nil { - return x.FsStatusMsg - } - return "" -} +var xxx_messageInfo_FilesystemCheck proto.InternalMessageInfo // SdkFilesystemCheckStartRequest defines a request to start a background // filesystem consistency check operation type SdkFilesystemCheckStartRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of the volume - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // Mode of operation - Mode string `protobuf:"bytes,2,opt,name=mode,proto3" json:"mode,omitempty"` + Mode string `protobuf:"bytes,2,opt,name=mode" json:"mode,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkFilesystemCheckStartRequest) Reset() { - *x = SdkFilesystemCheckStartRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[333] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkFilesystemCheckStartRequest) Reset() { *m = SdkFilesystemCheckStartRequest{} } +func (m *SdkFilesystemCheckStartRequest) String() string { return proto.CompactTextString(m) } +func (*SdkFilesystemCheckStartRequest) ProtoMessage() {} +func (*SdkFilesystemCheckStartRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{322} } - -func (x *SdkFilesystemCheckStartRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkFilesystemCheckStartRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkFilesystemCheckStartRequest.Unmarshal(m, b) } - -func (*SdkFilesystemCheckStartRequest) ProtoMessage() {} - -func (x *SdkFilesystemCheckStartRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[333] - 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) +func (m *SdkFilesystemCheckStartRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkFilesystemCheckStartRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkFilesystemCheckStartRequest.ProtoReflect.Descriptor instead. -func (*SdkFilesystemCheckStartRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{333} +func (dst *SdkFilesystemCheckStartRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkFilesystemCheckStartRequest.Merge(dst, src) +} +func (m *SdkFilesystemCheckStartRequest) XXX_Size() int { + return xxx_messageInfo_SdkFilesystemCheckStartRequest.Size(m) } +func (m *SdkFilesystemCheckStartRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkFilesystemCheckStartRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkFilesystemCheckStartRequest proto.InternalMessageInfo -func (x *SdkFilesystemCheckStartRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +func (m *SdkFilesystemCheckStartRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } -func (x *SdkFilesystemCheckStartRequest) GetMode() string { - if x != nil { - return x.Mode +func (m *SdkFilesystemCheckStartRequest) GetMode() string { + if m != nil { + return m.Mode } return "" } @@ -26681,58 +23958,49 @@ func (x *SdkFilesystemCheckStartRequest) GetMode() string { // SdkFilesystemCheckStartResponse defines the response for a // SdkFilesystemCheckStartRequest. type SdkFilesystemCheckStartResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Status code representing the state of the filesystem check operation - Status FilesystemCheck_FilesystemCheckStatus `protobuf:"varint,1,opt,name=status,proto3,enum=openstorage.api.FilesystemCheck_FilesystemCheckStatus" json:"status,omitempty"` + Status FilesystemCheck_FilesystemCheckStatus `protobuf:"varint,1,opt,name=status,enum=openstorage.api.FilesystemCheck_FilesystemCheckStatus" json:"status,omitempty"` // Text blob containing ASCII text providing details of the operation - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkFilesystemCheckStartResponse) Reset() { - *x = SdkFilesystemCheckStartResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[334] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkFilesystemCheckStartResponse) Reset() { *m = SdkFilesystemCheckStartResponse{} } +func (m *SdkFilesystemCheckStartResponse) String() string { return proto.CompactTextString(m) } +func (*SdkFilesystemCheckStartResponse) ProtoMessage() {} +func (*SdkFilesystemCheckStartResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{323} } - -func (x *SdkFilesystemCheckStartResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkFilesystemCheckStartResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkFilesystemCheckStartResponse.Unmarshal(m, b) } - -func (*SdkFilesystemCheckStartResponse) ProtoMessage() {} - -func (x *SdkFilesystemCheckStartResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[334] - 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) +func (m *SdkFilesystemCheckStartResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkFilesystemCheckStartResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkFilesystemCheckStartResponse.ProtoReflect.Descriptor instead. -func (*SdkFilesystemCheckStartResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{334} +func (dst *SdkFilesystemCheckStartResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkFilesystemCheckStartResponse.Merge(dst, src) +} +func (m *SdkFilesystemCheckStartResponse) XXX_Size() int { + return xxx_messageInfo_SdkFilesystemCheckStartResponse.Size(m) +} +func (m *SdkFilesystemCheckStartResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkFilesystemCheckStartResponse.DiscardUnknown(m) } -func (x *SdkFilesystemCheckStartResponse) GetStatus() FilesystemCheck_FilesystemCheckStatus { - if x != nil { - return x.Status +var xxx_messageInfo_SdkFilesystemCheckStartResponse proto.InternalMessageInfo + +func (m *SdkFilesystemCheckStartResponse) GetStatus() FilesystemCheck_FilesystemCheckStatus { + if m != nil { + return m.Status } return FilesystemCheck_FS_CHECK_UNKNOWN } -func (x *SdkFilesystemCheckStartResponse) GetMessage() string { - if x != nil { - return x.Message +func (m *SdkFilesystemCheckStartResponse) GetMessage() string { + if m != nil { + return m.Message } return "" } @@ -26740,49 +24008,40 @@ func (x *SdkFilesystemCheckStartResponse) GetMessage() string { // SdkFilesystemCheckStatusRequest defines a request to get status of a // background filesystem check operation type SdkFilesystemCheckStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of the volume - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkFilesystemCheckStatusRequest) Reset() { - *x = SdkFilesystemCheckStatusRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[335] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkFilesystemCheckStatusRequest) Reset() { *m = SdkFilesystemCheckStatusRequest{} } +func (m *SdkFilesystemCheckStatusRequest) String() string { return proto.CompactTextString(m) } +func (*SdkFilesystemCheckStatusRequest) ProtoMessage() {} +func (*SdkFilesystemCheckStatusRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{324} } - -func (x *SdkFilesystemCheckStatusRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkFilesystemCheckStatusRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkFilesystemCheckStatusRequest.Unmarshal(m, b) } - -func (*SdkFilesystemCheckStatusRequest) ProtoMessage() {} - -func (x *SdkFilesystemCheckStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[335] - 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) +func (m *SdkFilesystemCheckStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkFilesystemCheckStatusRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkFilesystemCheckStatusRequest.ProtoReflect.Descriptor instead. -func (*SdkFilesystemCheckStatusRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{335} +func (dst *SdkFilesystemCheckStatusRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkFilesystemCheckStatusRequest.Merge(dst, src) +} +func (m *SdkFilesystemCheckStatusRequest) XXX_Size() int { + return xxx_messageInfo_SdkFilesystemCheckStatusRequest.Size(m) } +func (m *SdkFilesystemCheckStatusRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkFilesystemCheckStatusRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkFilesystemCheckStatusRequest proto.InternalMessageInfo -func (x *SdkFilesystemCheckStatusRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +func (m *SdkFilesystemCheckStatusRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } @@ -26790,77 +24049,68 @@ func (x *SdkFilesystemCheckStatusRequest) GetVolumeId() string { // SdkFilesystemCheckStatusResponse defines the response for a // SdkFilesystemCheckStatusRequest. type SdkFilesystemCheckStatusResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Status code representing the state of the filesystem check operation - Status FilesystemCheck_FilesystemCheckStatus `protobuf:"varint,1,opt,name=status,proto3,enum=openstorage.api.FilesystemCheck_FilesystemCheckStatus" json:"status,omitempty"` + Status FilesystemCheck_FilesystemCheckStatus `protobuf:"varint,1,opt,name=status,enum=openstorage.api.FilesystemCheck_FilesystemCheckStatus" json:"status,omitempty"` // Status code representing the health of the filesystem after a checkHealth // operation - HealthStatus FilesystemHealthStatus `protobuf:"varint,2,opt,name=health_status,json=healthStatus,proto3,enum=openstorage.api.FilesystemHealthStatus" json:"health_status,omitempty"` + HealthStatus FilesystemHealthStatus `protobuf:"varint,2,opt,name=health_status,json=healthStatus,enum=openstorage.api.FilesystemHealthStatus" json:"health_status,omitempty"` // Text string representing the mode of filesystem check operation - Mode string `protobuf:"bytes,3,opt,name=mode,proto3" json:"mode,omitempty"` + Mode string `protobuf:"bytes,3,opt,name=mode" json:"mode,omitempty"` // Text blob containing ASCII text providing details of the operation - Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` + Message string `protobuf:"bytes,4,opt,name=message" json:"message,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkFilesystemCheckStatusResponse) Reset() { - *x = SdkFilesystemCheckStatusResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[336] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkFilesystemCheckStatusResponse) Reset() { *m = SdkFilesystemCheckStatusResponse{} } +func (m *SdkFilesystemCheckStatusResponse) String() string { return proto.CompactTextString(m) } +func (*SdkFilesystemCheckStatusResponse) ProtoMessage() {} +func (*SdkFilesystemCheckStatusResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{325} } - -func (x *SdkFilesystemCheckStatusResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkFilesystemCheckStatusResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkFilesystemCheckStatusResponse.Unmarshal(m, b) } - -func (*SdkFilesystemCheckStatusResponse) ProtoMessage() {} - -func (x *SdkFilesystemCheckStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[336] - 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) +func (m *SdkFilesystemCheckStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkFilesystemCheckStatusResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkFilesystemCheckStatusResponse.ProtoReflect.Descriptor instead. -func (*SdkFilesystemCheckStatusResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{336} +func (dst *SdkFilesystemCheckStatusResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkFilesystemCheckStatusResponse.Merge(dst, src) +} +func (m *SdkFilesystemCheckStatusResponse) XXX_Size() int { + return xxx_messageInfo_SdkFilesystemCheckStatusResponse.Size(m) } +func (m *SdkFilesystemCheckStatusResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkFilesystemCheckStatusResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkFilesystemCheckStatusResponse proto.InternalMessageInfo -func (x *SdkFilesystemCheckStatusResponse) GetStatus() FilesystemCheck_FilesystemCheckStatus { - if x != nil { - return x.Status +func (m *SdkFilesystemCheckStatusResponse) GetStatus() FilesystemCheck_FilesystemCheckStatus { + if m != nil { + return m.Status } return FilesystemCheck_FS_CHECK_UNKNOWN } -func (x *SdkFilesystemCheckStatusResponse) GetHealthStatus() FilesystemHealthStatus { - if x != nil { - return x.HealthStatus +func (m *SdkFilesystemCheckStatusResponse) GetHealthStatus() FilesystemHealthStatus { + if m != nil { + return m.HealthStatus } return FilesystemHealthStatus_FS_HEALTH_STATUS_UNKNOWN } -func (x *SdkFilesystemCheckStatusResponse) GetMode() string { - if x != nil { - return x.Mode +func (m *SdkFilesystemCheckStatusResponse) GetMode() string { + if m != nil { + return m.Mode } return "" } -func (x *SdkFilesystemCheckStatusResponse) GetMessage() string { - if x != nil { - return x.Message +func (m *SdkFilesystemCheckStatusResponse) GetMessage() string { + if m != nil { + return m.Message } return "" } @@ -26868,3060 +24118,2639 @@ func (x *SdkFilesystemCheckStatusResponse) GetMessage() string { // SdkFilesystemCheckStopRequest defines a request to stop a background // filesystem check operation type SdkFilesystemCheckStopRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Id of the volume - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkFilesystemCheckStopRequest) Reset() { - *x = SdkFilesystemCheckStopRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[337] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkFilesystemCheckStopRequest) Reset() { *m = SdkFilesystemCheckStopRequest{} } +func (m *SdkFilesystemCheckStopRequest) String() string { return proto.CompactTextString(m) } +func (*SdkFilesystemCheckStopRequest) ProtoMessage() {} +func (*SdkFilesystemCheckStopRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{326} } - -func (x *SdkFilesystemCheckStopRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkFilesystemCheckStopRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkFilesystemCheckStopRequest.Unmarshal(m, b) } - -func (*SdkFilesystemCheckStopRequest) ProtoMessage() {} - -func (x *SdkFilesystemCheckStopRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[337] - 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) +func (m *SdkFilesystemCheckStopRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkFilesystemCheckStopRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkFilesystemCheckStopRequest.ProtoReflect.Descriptor instead. -func (*SdkFilesystemCheckStopRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{337} +func (dst *SdkFilesystemCheckStopRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkFilesystemCheckStopRequest.Merge(dst, src) +} +func (m *SdkFilesystemCheckStopRequest) XXX_Size() int { + return xxx_messageInfo_SdkFilesystemCheckStopRequest.Size(m) +} +func (m *SdkFilesystemCheckStopRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkFilesystemCheckStopRequest.DiscardUnknown(m) } -func (x *SdkFilesystemCheckStopRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId +var xxx_messageInfo_SdkFilesystemCheckStopRequest proto.InternalMessageInfo + +func (m *SdkFilesystemCheckStopRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId } return "" } // Empty response type SdkFilesystemCheckStopResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *SdkFilesystemCheckStopResponse) Reset() { - *x = SdkFilesystemCheckStopResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[338] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkFilesystemCheckStopResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkFilesystemCheckStopResponse) Reset() { *m = SdkFilesystemCheckStopResponse{} } +func (m *SdkFilesystemCheckStopResponse) String() string { return proto.CompactTextString(m) } +func (*SdkFilesystemCheckStopResponse) ProtoMessage() {} +func (*SdkFilesystemCheckStopResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{327} } - -func (*SdkFilesystemCheckStopResponse) ProtoMessage() {} - -func (x *SdkFilesystemCheckStopResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[338] - 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) +func (m *SdkFilesystemCheckStopResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkFilesystemCheckStopResponse.Unmarshal(m, b) } - -// Deprecated: Use SdkFilesystemCheckStopResponse.ProtoReflect.Descriptor instead. -func (*SdkFilesystemCheckStopResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{338} +func (m *SdkFilesystemCheckStopResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkFilesystemCheckStopResponse.Marshal(b, m, deterministic) } - -// SdkFilesystemCheckListSnapshotsRequest defines a request to list -// snapshots created by fsck for a volume -type SdkFilesystemCheckListSnapshotsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Id of the volume - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` - // Node Id of the volume - NodeId string `protobuf:"bytes,2,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` +func (dst *SdkFilesystemCheckStopResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkFilesystemCheckStopResponse.Merge(dst, src) } - -func (x *SdkFilesystemCheckListSnapshotsRequest) Reset() { - *x = SdkFilesystemCheckListSnapshotsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[339] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkFilesystemCheckStopResponse) XXX_Size() int { + return xxx_messageInfo_SdkFilesystemCheckStopResponse.Size(m) } - -func (x *SdkFilesystemCheckListSnapshotsRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkFilesystemCheckStopResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkFilesystemCheckStopResponse.DiscardUnknown(m) } -func (*SdkFilesystemCheckListSnapshotsRequest) ProtoMessage() {} +var xxx_messageInfo_SdkFilesystemCheckStopResponse proto.InternalMessageInfo -func (x *SdkFilesystemCheckListSnapshotsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[339] - 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) +// Empty request +type SdkIdentityCapabilitiesRequest struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -// Deprecated: Use SdkFilesystemCheckListSnapshotsRequest.ProtoReflect.Descriptor instead. -func (*SdkFilesystemCheckListSnapshotsRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{339} +func (m *SdkIdentityCapabilitiesRequest) Reset() { *m = SdkIdentityCapabilitiesRequest{} } +func (m *SdkIdentityCapabilitiesRequest) String() string { return proto.CompactTextString(m) } +func (*SdkIdentityCapabilitiesRequest) ProtoMessage() {} +func (*SdkIdentityCapabilitiesRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{328} } - -func (x *SdkFilesystemCheckListSnapshotsRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId - } - return "" +func (m *SdkIdentityCapabilitiesRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkIdentityCapabilitiesRequest.Unmarshal(m, b) } - -func (x *SdkFilesystemCheckListSnapshotsRequest) GetNodeId() string { - if x != nil { - return x.NodeId - } - return "" +func (m *SdkIdentityCapabilitiesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkIdentityCapabilitiesRequest.Marshal(b, m, deterministic) } - -// SdkFilesystemCheckListSnapshotsResponse defines a response to list -// snapshots created by fsck for a volume -type SdkFilesystemCheckListSnapshotsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Map of volume snapshot ids and snapshot info - Snapshots map[string]*FilesystemCheckSnapInfo `protobuf:"bytes,1,rep,name=snapshots,proto3" json:"snapshots,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +func (dst *SdkIdentityCapabilitiesRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkIdentityCapabilitiesRequest.Merge(dst, src) } - -func (x *SdkFilesystemCheckListSnapshotsResponse) Reset() { - *x = SdkFilesystemCheckListSnapshotsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[340] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkIdentityCapabilitiesRequest) XXX_Size() int { + return xxx_messageInfo_SdkIdentityCapabilitiesRequest.Size(m) } - -func (x *SdkFilesystemCheckListSnapshotsResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkIdentityCapabilitiesRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkIdentityCapabilitiesRequest.DiscardUnknown(m) } -func (*SdkFilesystemCheckListSnapshotsResponse) ProtoMessage() {} +var xxx_messageInfo_SdkIdentityCapabilitiesRequest proto.InternalMessageInfo -func (x *SdkFilesystemCheckListSnapshotsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[340] - 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) +// Defines a response containing the capabilites of the cluster +type SdkIdentityCapabilitiesResponse struct { + // Provides all the capabilites supported by the cluster + Capabilities []*SdkServiceCapability `protobuf:"bytes,1,rep,name=capabilities" json:"capabilities,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -// Deprecated: Use SdkFilesystemCheckListSnapshotsResponse.ProtoReflect.Descriptor instead. -func (*SdkFilesystemCheckListSnapshotsResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{340} +func (m *SdkIdentityCapabilitiesResponse) Reset() { *m = SdkIdentityCapabilitiesResponse{} } +func (m *SdkIdentityCapabilitiesResponse) String() string { return proto.CompactTextString(m) } +func (*SdkIdentityCapabilitiesResponse) ProtoMessage() {} +func (*SdkIdentityCapabilitiesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{329} } - -func (x *SdkFilesystemCheckListSnapshotsResponse) GetSnapshots() map[string]*FilesystemCheckSnapInfo { - if x != nil { - return x.Snapshots - } - return nil +func (m *SdkIdentityCapabilitiesResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkIdentityCapabilitiesResponse.Unmarshal(m, b) } - -// SdkFilesystemCheckDeleteSnapshotsRequest defines a request to delete -// snapshots created by fsck for a volume -type SdkFilesystemCheckDeleteSnapshotsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Id of the volume - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` - // Node Id filter - NodeId string `protobuf:"bytes,2,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` +func (m *SdkIdentityCapabilitiesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkIdentityCapabilitiesResponse.Marshal(b, m, deterministic) } - -func (x *SdkFilesystemCheckDeleteSnapshotsRequest) Reset() { - *x = SdkFilesystemCheckDeleteSnapshotsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[341] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (dst *SdkIdentityCapabilitiesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkIdentityCapabilitiesResponse.Merge(dst, src) } - -func (x *SdkFilesystemCheckDeleteSnapshotsRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkIdentityCapabilitiesResponse) XXX_Size() int { + return xxx_messageInfo_SdkIdentityCapabilitiesResponse.Size(m) +} +func (m *SdkIdentityCapabilitiesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkIdentityCapabilitiesResponse.DiscardUnknown(m) } -func (*SdkFilesystemCheckDeleteSnapshotsRequest) ProtoMessage() {} +var xxx_messageInfo_SdkIdentityCapabilitiesResponse proto.InternalMessageInfo -func (x *SdkFilesystemCheckDeleteSnapshotsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[341] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (m *SdkIdentityCapabilitiesResponse) GetCapabilities() []*SdkServiceCapability { + if m != nil { + return m.Capabilities } - return mi.MessageOf(x) + return nil } -// Deprecated: Use SdkFilesystemCheckDeleteSnapshotsRequest.ProtoReflect.Descriptor instead. -func (*SdkFilesystemCheckDeleteSnapshotsRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{341} +// Empty request +type SdkIdentityVersionRequest struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkFilesystemCheckDeleteSnapshotsRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId - } - return "" +func (m *SdkIdentityVersionRequest) Reset() { *m = SdkIdentityVersionRequest{} } +func (m *SdkIdentityVersionRequest) String() string { return proto.CompactTextString(m) } +func (*SdkIdentityVersionRequest) ProtoMessage() {} +func (*SdkIdentityVersionRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{330} } - -func (x *SdkFilesystemCheckDeleteSnapshotsRequest) GetNodeId() string { - if x != nil { - return x.NodeId - } - return "" +func (m *SdkIdentityVersionRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkIdentityVersionRequest.Unmarshal(m, b) } - -// SdkFilesystemCheckDeleteSnapshotsResponse defines a respone to delete -// snapshots created by fsck for a volume -type SdkFilesystemCheckDeleteSnapshotsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (m *SdkIdentityVersionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkIdentityVersionRequest.Marshal(b, m, deterministic) } - -func (x *SdkFilesystemCheckDeleteSnapshotsResponse) Reset() { - *x = SdkFilesystemCheckDeleteSnapshotsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[342] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (dst *SdkIdentityVersionRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkIdentityVersionRequest.Merge(dst, src) } - -func (x *SdkFilesystemCheckDeleteSnapshotsResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkIdentityVersionRequest) XXX_Size() int { + return xxx_messageInfo_SdkIdentityVersionRequest.Size(m) +} +func (m *SdkIdentityVersionRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkIdentityVersionRequest.DiscardUnknown(m) } -func (*SdkFilesystemCheckDeleteSnapshotsResponse) ProtoMessage() {} +var xxx_messageInfo_SdkIdentityVersionRequest proto.InternalMessageInfo -func (x *SdkFilesystemCheckDeleteSnapshotsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[342] - 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) +// Defines a response containing version information +type SdkIdentityVersionResponse struct { + // OpenStorage SDK version used by the server + SdkVersion *SdkVersion `protobuf:"bytes,1,opt,name=sdk_version,json=sdkVersion" json:"sdk_version,omitempty"` + // Version information about the storage system + Version *StorageVersion `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -// Deprecated: Use SdkFilesystemCheckDeleteSnapshotsResponse.ProtoReflect.Descriptor instead. -func (*SdkFilesystemCheckDeleteSnapshotsResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{342} +func (m *SdkIdentityVersionResponse) Reset() { *m = SdkIdentityVersionResponse{} } +func (m *SdkIdentityVersionResponse) String() string { return proto.CompactTextString(m) } +func (*SdkIdentityVersionResponse) ProtoMessage() {} +func (*SdkIdentityVersionResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{331} } - -// SdkFilesystemCheckListVolumesRequest defines a request to list -// all volumes needing fsck check/fix -type SdkFilesystemCheckListVolumesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Node Id filter - NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` +func (m *SdkIdentityVersionResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkIdentityVersionResponse.Unmarshal(m, b) } - -func (x *SdkFilesystemCheckListVolumesRequest) Reset() { - *x = SdkFilesystemCheckListVolumesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[343] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkIdentityVersionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkIdentityVersionResponse.Marshal(b, m, deterministic) } - -func (x *SdkFilesystemCheckListVolumesRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (dst *SdkIdentityVersionResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkIdentityVersionResponse.Merge(dst, src) +} +func (m *SdkIdentityVersionResponse) XXX_Size() int { + return xxx_messageInfo_SdkIdentityVersionResponse.Size(m) +} +func (m *SdkIdentityVersionResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkIdentityVersionResponse.DiscardUnknown(m) } -func (*SdkFilesystemCheckListVolumesRequest) ProtoMessage() {} +var xxx_messageInfo_SdkIdentityVersionResponse proto.InternalMessageInfo -func (x *SdkFilesystemCheckListVolumesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[343] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (m *SdkIdentityVersionResponse) GetSdkVersion() *SdkVersion { + if m != nil { + return m.SdkVersion } - return mi.MessageOf(x) -} - -// Deprecated: Use SdkFilesystemCheckListVolumesRequest.ProtoReflect.Descriptor instead. -func (*SdkFilesystemCheckListVolumesRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{343} + return nil } -func (x *SdkFilesystemCheckListVolumesRequest) GetNodeId() string { - if x != nil { - return x.NodeId +func (m *SdkIdentityVersionResponse) GetVersion() *StorageVersion { + if m != nil { + return m.Version } - return "" + return nil } -// SdkFilesystemCheckListVolumesResponse defines a response to list -// all volumes needing fsck check/fix -type SdkFilesystemCheckListVolumesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Map of volume ids and volume info - Volumes map[string]*FilesystemCheckVolInfo `protobuf:"bytes,1,rep,name=volumes,proto3" json:"volumes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -} - -func (x *SdkFilesystemCheckListVolumesResponse) Reset() { - *x = SdkFilesystemCheckListVolumesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[344] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SdkFilesystemCheckListVolumesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SdkFilesystemCheckListVolumesResponse) ProtoMessage() {} - -func (x *SdkFilesystemCheckListVolumesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[344] - 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 SdkFilesystemCheckListVolumesResponse.ProtoReflect.Descriptor instead. -func (*SdkFilesystemCheckListVolumesResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{344} +// Defines a capability of he cluster +type SdkServiceCapability struct { + // Use oneof to have only one type of service defined making it + // future proof to add other types. + // + // Types that are valid to be assigned to Type: + // *SdkServiceCapability_Service + Type isSdkServiceCapability_Type `protobuf_oneof:"type"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkFilesystemCheckListVolumesResponse) GetVolumes() map[string]*FilesystemCheckVolInfo { - if x != nil { - return x.Volumes - } - return nil +func (m *SdkServiceCapability) Reset() { *m = SdkServiceCapability{} } +func (m *SdkServiceCapability) String() string { return proto.CompactTextString(m) } +func (*SdkServiceCapability) ProtoMessage() {} +func (*SdkServiceCapability) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{332} } - -// Empty request -type SdkIdentityCapabilitiesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (m *SdkServiceCapability) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkServiceCapability.Unmarshal(m, b) } - -func (x *SdkIdentityCapabilitiesRequest) Reset() { - *x = SdkIdentityCapabilitiesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[345] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkServiceCapability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkServiceCapability.Marshal(b, m, deterministic) } - -func (x *SdkIdentityCapabilitiesRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (dst *SdkServiceCapability) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkServiceCapability.Merge(dst, src) } - -func (*SdkIdentityCapabilitiesRequest) ProtoMessage() {} - -func (x *SdkIdentityCapabilitiesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[345] - 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) +func (m *SdkServiceCapability) XXX_Size() int { + return xxx_messageInfo_SdkServiceCapability.Size(m) } - -// Deprecated: Use SdkIdentityCapabilitiesRequest.ProtoReflect.Descriptor instead. -func (*SdkIdentityCapabilitiesRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{345} +func (m *SdkServiceCapability) XXX_DiscardUnknown() { + xxx_messageInfo_SdkServiceCapability.DiscardUnknown(m) } -// Defines a response containing the capabilities of the cluster -type SdkIdentityCapabilitiesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Provides all the capabilities supported by the cluster - Capabilities []*SdkServiceCapability `protobuf:"bytes,1,rep,name=capabilities,proto3" json:"capabilities,omitempty"` -} +var xxx_messageInfo_SdkServiceCapability proto.InternalMessageInfo -func (x *SdkIdentityCapabilitiesResponse) Reset() { - *x = SdkIdentityCapabilitiesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[346] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +type isSdkServiceCapability_Type interface { + isSdkServiceCapability_Type() } -func (x *SdkIdentityCapabilitiesResponse) String() string { - return protoimpl.X.MessageStringOf(x) +type SdkServiceCapability_Service struct { + Service *SdkServiceCapability_OpenStorageService `protobuf:"bytes,1,opt,name=service,oneof"` } -func (*SdkIdentityCapabilitiesResponse) ProtoMessage() {} +func (*SdkServiceCapability_Service) isSdkServiceCapability_Type() {} -func (x *SdkIdentityCapabilitiesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[346] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (m *SdkServiceCapability) GetType() isSdkServiceCapability_Type { + if m != nil { + return m.Type } - return mi.MessageOf(x) -} - -// Deprecated: Use SdkIdentityCapabilitiesResponse.ProtoReflect.Descriptor instead. -func (*SdkIdentityCapabilitiesResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{346} + return nil } -func (x *SdkIdentityCapabilitiesResponse) GetCapabilities() []*SdkServiceCapability { - if x != nil { - return x.Capabilities +func (m *SdkServiceCapability) GetService() *SdkServiceCapability_OpenStorageService { + if x, ok := m.GetType().(*SdkServiceCapability_Service); ok { + return x.Service } return nil } -// Empty request -type SdkIdentityVersionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *SdkIdentityVersionRequest) Reset() { - *x = SdkIdentityVersionRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[347] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +// XXX_OneofFuncs is for the internal use of the proto package. +func (*SdkServiceCapability) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _SdkServiceCapability_OneofMarshaler, _SdkServiceCapability_OneofUnmarshaler, _SdkServiceCapability_OneofSizer, []interface{}{ + (*SdkServiceCapability_Service)(nil), } } -func (x *SdkIdentityVersionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SdkIdentityVersionRequest) ProtoMessage() {} - -func (x *SdkIdentityVersionRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[347] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) +func _SdkServiceCapability_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*SdkServiceCapability) + // type + switch x := m.Type.(type) { + case *SdkServiceCapability_Service: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Service); err != nil { + return err } - return ms + case nil: + default: + return fmt.Errorf("SdkServiceCapability.Type has unexpected type %T", x) } - return mi.MessageOf(x) -} - -// Deprecated: Use SdkIdentityVersionRequest.ProtoReflect.Descriptor instead. -func (*SdkIdentityVersionRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{347} -} - -// Defines a response containing version information -type SdkIdentityVersionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // OpenStorage SDK version used by the server - SdkVersion *SdkVersion `protobuf:"bytes,1,opt,name=sdk_version,json=sdkVersion,proto3" json:"sdk_version,omitempty"` - // Version information about the storage system - Version *StorageVersion `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + return nil } -func (x *SdkIdentityVersionResponse) Reset() { - *x = SdkIdentityVersionResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[348] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func _SdkServiceCapability_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*SdkServiceCapability) + switch tag { + case 1: // type.service + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkServiceCapability_OpenStorageService) + err := b.DecodeMessage(msg) + m.Type = &SdkServiceCapability_Service{msg} + return true, err + default: + return false, nil } } -func (x *SdkIdentityVersionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SdkIdentityVersionResponse) ProtoMessage() {} - -func (x *SdkIdentityVersionResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[348] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func _SdkServiceCapability_OneofSizer(msg proto.Message) (n int) { + m := msg.(*SdkServiceCapability) + // type + switch x := m.Type.(type) { + case *SdkServiceCapability_Service: + s := proto.Size(x.Service) + n += 1 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) } - return mi.MessageOf(x) + return n } -// Deprecated: Use SdkIdentityVersionResponse.ProtoReflect.Descriptor instead. -func (*SdkIdentityVersionResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{348} +type SdkServiceCapability_OpenStorageService struct { + // Type of service supported + Type SdkServiceCapability_OpenStorageService_Type `protobuf:"varint,1,opt,name=type,enum=openstorage.api.SdkServiceCapability_OpenStorageService_Type" json:"type,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkIdentityVersionResponse) GetSdkVersion() *SdkVersion { - if x != nil { - return x.SdkVersion - } - return nil +func (m *SdkServiceCapability_OpenStorageService) Reset() { + *m = SdkServiceCapability_OpenStorageService{} } - -func (x *SdkIdentityVersionResponse) GetVersion() *StorageVersion { - if x != nil { - return x.Version - } - return nil +func (m *SdkServiceCapability_OpenStorageService) String() string { return proto.CompactTextString(m) } +func (*SdkServiceCapability_OpenStorageService) ProtoMessage() {} +func (*SdkServiceCapability_OpenStorageService) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{332, 0} } - -// Defines a capability of he cluster -type SdkServiceCapability struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Use oneof to have only one type of service defined making it - // future proof to add other types. - // - // Types that are assignable to Type: - // *SdkServiceCapability_Service - Type isSdkServiceCapability_Type `protobuf_oneof:"type"` +func (m *SdkServiceCapability_OpenStorageService) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkServiceCapability_OpenStorageService.Unmarshal(m, b) } - -func (x *SdkServiceCapability) Reset() { - *x = SdkServiceCapability{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[349] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkServiceCapability_OpenStorageService) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkServiceCapability_OpenStorageService.Marshal(b, m, deterministic) } - -func (x *SdkServiceCapability) String() string { - return protoimpl.X.MessageStringOf(x) +func (dst *SdkServiceCapability_OpenStorageService) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkServiceCapability_OpenStorageService.Merge(dst, src) } - -func (*SdkServiceCapability) ProtoMessage() {} - -func (x *SdkServiceCapability) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[349] - 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) +func (m *SdkServiceCapability_OpenStorageService) XXX_Size() int { + return xxx_messageInfo_SdkServiceCapability_OpenStorageService.Size(m) } - -// Deprecated: Use SdkServiceCapability.ProtoReflect.Descriptor instead. -func (*SdkServiceCapability) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{349} +func (m *SdkServiceCapability_OpenStorageService) XXX_DiscardUnknown() { + xxx_messageInfo_SdkServiceCapability_OpenStorageService.DiscardUnknown(m) } -func (m *SdkServiceCapability) GetType() isSdkServiceCapability_Type { +var xxx_messageInfo_SdkServiceCapability_OpenStorageService proto.InternalMessageInfo + +func (m *SdkServiceCapability_OpenStorageService) GetType() SdkServiceCapability_OpenStorageService_Type { if m != nil { return m.Type } - return nil -} - -func (x *SdkServiceCapability) GetService() *SdkServiceCapability_OpenStorageService { - if x, ok := x.GetType().(*SdkServiceCapability_Service); ok { - return x.Service - } - return nil -} - -type isSdkServiceCapability_Type interface { - isSdkServiceCapability_Type() -} - -type SdkServiceCapability_Service struct { - // service type supported by this cluster - Service *SdkServiceCapability_OpenStorageService `protobuf:"bytes,1,opt,name=service,proto3,oneof"` + return SdkServiceCapability_OpenStorageService_UNKNOWN } -func (*SdkServiceCapability_Service) isSdkServiceCapability_Type() {} - // SDK version in Major.Minor.Patch format. The goal of this // message is to provide clients a method to determine the SDK // version run by an SDK server. type SdkVersion struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // SDK version major number - Major int32 `protobuf:"varint,1,opt,name=major,proto3" json:"major,omitempty"` + Major int32 `protobuf:"varint,1,opt,name=major" json:"major,omitempty"` // SDK version minor number - Minor int32 `protobuf:"varint,2,opt,name=minor,proto3" json:"minor,omitempty"` + Minor int32 `protobuf:"varint,2,opt,name=minor" json:"minor,omitempty"` // SDK version patch number - Patch int32 `protobuf:"varint,3,opt,name=patch,proto3" json:"patch,omitempty"` + Patch int32 `protobuf:"varint,3,opt,name=patch" json:"patch,omitempty"` // String representation of the SDK version. Must be // in `major.minor.patch` format. - Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` + Version string `protobuf:"bytes,4,opt,name=version" json:"version,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkVersion) Reset() { - *x = SdkVersion{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[350] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkVersion) Reset() { *m = SdkVersion{} } +func (m *SdkVersion) String() string { return proto.CompactTextString(m) } +func (*SdkVersion) ProtoMessage() {} +func (*SdkVersion) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{333} } - -func (x *SdkVersion) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkVersion) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVersion.Unmarshal(m, b) } - -func (*SdkVersion) ProtoMessage() {} - -func (x *SdkVersion) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[350] - 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) +func (m *SdkVersion) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVersion.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkVersion.ProtoReflect.Descriptor instead. -func (*SdkVersion) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{350} +func (dst *SdkVersion) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVersion.Merge(dst, src) +} +func (m *SdkVersion) XXX_Size() int { + return xxx_messageInfo_SdkVersion.Size(m) } +func (m *SdkVersion) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVersion.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVersion proto.InternalMessageInfo -func (x *SdkVersion) GetMajor() int32 { - if x != nil { - return x.Major +func (m *SdkVersion) GetMajor() int32 { + if m != nil { + return m.Major } return 0 } -func (x *SdkVersion) GetMinor() int32 { - if x != nil { - return x.Minor +func (m *SdkVersion) GetMinor() int32 { + if m != nil { + return m.Minor } return 0 } -func (x *SdkVersion) GetPatch() int32 { - if x != nil { - return x.Patch +func (m *SdkVersion) GetPatch() int32 { + if m != nil { + return m.Patch } return 0 } -func (x *SdkVersion) GetVersion() string { - if x != nil { - return x.Version +func (m *SdkVersion) GetVersion() string { + if m != nil { + return m.Version } return "" } // Version information about the storage system type StorageVersion struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // OpenStorage driver name - Driver string `protobuf:"bytes,1,opt,name=driver,proto3" json:"driver,omitempty"` + Driver string `protobuf:"bytes,1,opt,name=driver" json:"driver,omitempty"` // Version of the server - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"` // Extra information provided by the storage system - Details map[string]string `protobuf:"bytes,3,rep,name=details,proto3" json:"details,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Details map[string]string `protobuf:"bytes,3,rep,name=details" json:"details,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *StorageVersion) Reset() { - *x = StorageVersion{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[351] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *StorageVersion) Reset() { *m = StorageVersion{} } +func (m *StorageVersion) String() string { return proto.CompactTextString(m) } +func (*StorageVersion) ProtoMessage() {} +func (*StorageVersion) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{334} } - -func (x *StorageVersion) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *StorageVersion) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_StorageVersion.Unmarshal(m, b) } - -func (*StorageVersion) ProtoMessage() {} - -func (x *StorageVersion) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[351] - 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) +func (m *StorageVersion) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_StorageVersion.Marshal(b, m, deterministic) } - -// Deprecated: Use StorageVersion.ProtoReflect.Descriptor instead. -func (*StorageVersion) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{351} +func (dst *StorageVersion) XXX_Merge(src proto.Message) { + xxx_messageInfo_StorageVersion.Merge(dst, src) +} +func (m *StorageVersion) XXX_Size() int { + return xxx_messageInfo_StorageVersion.Size(m) +} +func (m *StorageVersion) XXX_DiscardUnknown() { + xxx_messageInfo_StorageVersion.DiscardUnknown(m) } -func (x *StorageVersion) GetDriver() string { - if x != nil { - return x.Driver +var xxx_messageInfo_StorageVersion proto.InternalMessageInfo + +func (m *StorageVersion) GetDriver() string { + if m != nil { + return m.Driver } return "" } -func (x *StorageVersion) GetVersion() string { - if x != nil { - return x.Version +func (m *StorageVersion) GetVersion() string { + if m != nil { + return m.Version } return "" } -func (x *StorageVersion) GetDetails() map[string]string { - if x != nil { - return x.Details +func (m *StorageVersion) GetDetails() map[string]string { + if m != nil { + return m.Details } return nil } type CloudMigrate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CloudMigrate) Reset() { - *x = CloudMigrate{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[352] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CloudMigrate) Reset() { *m = CloudMigrate{} } +func (m *CloudMigrate) String() string { return proto.CompactTextString(m) } +func (*CloudMigrate) ProtoMessage() {} +func (*CloudMigrate) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{335} } - -func (x *CloudMigrate) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CloudMigrate) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CloudMigrate.Unmarshal(m, b) } - -func (*CloudMigrate) ProtoMessage() {} - -func (x *CloudMigrate) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[352] - 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) +func (m *CloudMigrate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CloudMigrate.Marshal(b, m, deterministic) } - -// Deprecated: Use CloudMigrate.ProtoReflect.Descriptor instead. -func (*CloudMigrate) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{352} +func (dst *CloudMigrate) XXX_Merge(src proto.Message) { + xxx_messageInfo_CloudMigrate.Merge(dst, src) +} +func (m *CloudMigrate) XXX_Size() int { + return xxx_messageInfo_CloudMigrate.Size(m) } +func (m *CloudMigrate) XXX_DiscardUnknown() { + xxx_messageInfo_CloudMigrate.DiscardUnknown(m) +} + +var xxx_messageInfo_CloudMigrate proto.InternalMessageInfo // Request to start a cloud migration type CloudMigrateStartRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // The type of operation to start - Operation CloudMigrate_OperationType `protobuf:"varint,1,opt,name=operation,proto3,enum=openstorage.api.CloudMigrate_OperationType" json:"operation,omitempty"` + Operation CloudMigrate_OperationType `protobuf:"varint,1,opt,name=operation,enum=openstorage.api.CloudMigrate_OperationType" json:"operation,omitempty"` // ID of the cluster to which volumes are to be migrated - ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` // Depending on the operation type this can be a VolumeID or VolumeGroupID - TargetId string `protobuf:"bytes,3,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` + TargetId string `protobuf:"bytes,3,opt,name=target_id,json=targetId" json:"target_id,omitempty"` // (Optional) Unique TaskId assocaiated with this migration. If not provided one will // be generated and returned in the response - TaskId string `protobuf:"bytes,4,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` + TaskId string `protobuf:"bytes,4,opt,name=task_id,json=taskId" json:"task_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CloudMigrateStartRequest) Reset() { - *x = CloudMigrateStartRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[353] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CloudMigrateStartRequest) Reset() { *m = CloudMigrateStartRequest{} } +func (m *CloudMigrateStartRequest) String() string { return proto.CompactTextString(m) } +func (*CloudMigrateStartRequest) ProtoMessage() {} +func (*CloudMigrateStartRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{336} } - -func (x *CloudMigrateStartRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CloudMigrateStartRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CloudMigrateStartRequest.Unmarshal(m, b) } - -func (*CloudMigrateStartRequest) ProtoMessage() {} - -func (x *CloudMigrateStartRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[353] - 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) +func (m *CloudMigrateStartRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CloudMigrateStartRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use CloudMigrateStartRequest.ProtoReflect.Descriptor instead. -func (*CloudMigrateStartRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{353} +func (dst *CloudMigrateStartRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CloudMigrateStartRequest.Merge(dst, src) +} +func (m *CloudMigrateStartRequest) XXX_Size() int { + return xxx_messageInfo_CloudMigrateStartRequest.Size(m) +} +func (m *CloudMigrateStartRequest) XXX_DiscardUnknown() { + xxx_messageInfo_CloudMigrateStartRequest.DiscardUnknown(m) } -func (x *CloudMigrateStartRequest) GetOperation() CloudMigrate_OperationType { - if x != nil { - return x.Operation +var xxx_messageInfo_CloudMigrateStartRequest proto.InternalMessageInfo + +func (m *CloudMigrateStartRequest) GetOperation() CloudMigrate_OperationType { + if m != nil { + return m.Operation } return CloudMigrate_InvalidType } -func (x *CloudMigrateStartRequest) GetClusterId() string { - if x != nil { - return x.ClusterId +func (m *CloudMigrateStartRequest) GetClusterId() string { + if m != nil { + return m.ClusterId } return "" } -func (x *CloudMigrateStartRequest) GetTargetId() string { - if x != nil { - return x.TargetId +func (m *CloudMigrateStartRequest) GetTargetId() string { + if m != nil { + return m.TargetId } return "" } -func (x *CloudMigrateStartRequest) GetTaskId() string { - if x != nil { - return x.TaskId +func (m *CloudMigrateStartRequest) GetTaskId() string { + if m != nil { + return m.TaskId } return "" } // Defines a migration request type SdkCloudMigrateStartRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // ID of the cluster to which volumes are to be migrated - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` // Unique name assocaiated with this migration. // This is a Optional field for idempotency - TaskId string `protobuf:"bytes,2,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` - // Types that are assignable to Opt: + TaskId string `protobuf:"bytes,2,opt,name=task_id,json=taskId" json:"task_id,omitempty"` + // Types that are valid to be assigned to Opt: // *SdkCloudMigrateStartRequest_Volume // *SdkCloudMigrateStartRequest_VolumeGroup // *SdkCloudMigrateStartRequest_AllVolumes - Opt isSdkCloudMigrateStartRequest_Opt `protobuf_oneof:"opt"` + Opt isSdkCloudMigrateStartRequest_Opt `protobuf_oneof:"opt"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudMigrateStartRequest) Reset() { - *x = SdkCloudMigrateStartRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[354] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudMigrateStartRequest) Reset() { *m = SdkCloudMigrateStartRequest{} } +func (m *SdkCloudMigrateStartRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCloudMigrateStartRequest) ProtoMessage() {} +func (*SdkCloudMigrateStartRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{337} } - -func (x *SdkCloudMigrateStartRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudMigrateStartRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudMigrateStartRequest.Unmarshal(m, b) +} +func (m *SdkCloudMigrateStartRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudMigrateStartRequest.Marshal(b, m, deterministic) +} +func (dst *SdkCloudMigrateStartRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudMigrateStartRequest.Merge(dst, src) +} +func (m *SdkCloudMigrateStartRequest) XXX_Size() int { + return xxx_messageInfo_SdkCloudMigrateStartRequest.Size(m) +} +func (m *SdkCloudMigrateStartRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudMigrateStartRequest.DiscardUnknown(m) } -func (*SdkCloudMigrateStartRequest) ProtoMessage() {} +var xxx_messageInfo_SdkCloudMigrateStartRequest proto.InternalMessageInfo -func (x *SdkCloudMigrateStartRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[354] - 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) +type isSdkCloudMigrateStartRequest_Opt interface { + isSdkCloudMigrateStartRequest_Opt() } -// Deprecated: Use SdkCloudMigrateStartRequest.ProtoReflect.Descriptor instead. -func (*SdkCloudMigrateStartRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{354} +type SdkCloudMigrateStartRequest_Volume struct { + Volume *SdkCloudMigrateStartRequest_MigrateVolume `protobuf:"bytes,200,opt,name=volume,oneof"` +} +type SdkCloudMigrateStartRequest_VolumeGroup struct { + VolumeGroup *SdkCloudMigrateStartRequest_MigrateVolumeGroup `protobuf:"bytes,201,opt,name=volume_group,json=volumeGroup,oneof"` +} +type SdkCloudMigrateStartRequest_AllVolumes struct { + AllVolumes *SdkCloudMigrateStartRequest_MigrateAllVolumes `protobuf:"bytes,202,opt,name=all_volumes,json=allVolumes,oneof"` } -func (x *SdkCloudMigrateStartRequest) GetClusterId() string { - if x != nil { - return x.ClusterId +func (*SdkCloudMigrateStartRequest_Volume) isSdkCloudMigrateStartRequest_Opt() {} +func (*SdkCloudMigrateStartRequest_VolumeGroup) isSdkCloudMigrateStartRequest_Opt() {} +func (*SdkCloudMigrateStartRequest_AllVolumes) isSdkCloudMigrateStartRequest_Opt() {} + +func (m *SdkCloudMigrateStartRequest) GetOpt() isSdkCloudMigrateStartRequest_Opt { + if m != nil { + return m.Opt } - return "" + return nil } -func (x *SdkCloudMigrateStartRequest) GetTaskId() string { - if x != nil { - return x.TaskId +func (m *SdkCloudMigrateStartRequest) GetClusterId() string { + if m != nil { + return m.ClusterId } return "" } -func (m *SdkCloudMigrateStartRequest) GetOpt() isSdkCloudMigrateStartRequest_Opt { +func (m *SdkCloudMigrateStartRequest) GetTaskId() string { if m != nil { - return m.Opt + return m.TaskId } - return nil + return "" } -func (x *SdkCloudMigrateStartRequest) GetVolume() *SdkCloudMigrateStartRequest_MigrateVolume { - if x, ok := x.GetOpt().(*SdkCloudMigrateStartRequest_Volume); ok { +func (m *SdkCloudMigrateStartRequest) GetVolume() *SdkCloudMigrateStartRequest_MigrateVolume { + if x, ok := m.GetOpt().(*SdkCloudMigrateStartRequest_Volume); ok { return x.Volume } return nil } -func (x *SdkCloudMigrateStartRequest) GetVolumeGroup() *SdkCloudMigrateStartRequest_MigrateVolumeGroup { - if x, ok := x.GetOpt().(*SdkCloudMigrateStartRequest_VolumeGroup); ok { +func (m *SdkCloudMigrateStartRequest) GetVolumeGroup() *SdkCloudMigrateStartRequest_MigrateVolumeGroup { + if x, ok := m.GetOpt().(*SdkCloudMigrateStartRequest_VolumeGroup); ok { return x.VolumeGroup } return nil } -func (x *SdkCloudMigrateStartRequest) GetAllVolumes() *SdkCloudMigrateStartRequest_MigrateAllVolumes { - if x, ok := x.GetOpt().(*SdkCloudMigrateStartRequest_AllVolumes); ok { +func (m *SdkCloudMigrateStartRequest) GetAllVolumes() *SdkCloudMigrateStartRequest_MigrateAllVolumes { + if x, ok := m.GetOpt().(*SdkCloudMigrateStartRequest_AllVolumes); ok { return x.AllVolumes } return nil } -type isSdkCloudMigrateStartRequest_Opt interface { - isSdkCloudMigrateStartRequest_Opt() +// XXX_OneofFuncs is for the internal use of the proto package. +func (*SdkCloudMigrateStartRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _SdkCloudMigrateStartRequest_OneofMarshaler, _SdkCloudMigrateStartRequest_OneofUnmarshaler, _SdkCloudMigrateStartRequest_OneofSizer, []interface{}{ + (*SdkCloudMigrateStartRequest_Volume)(nil), + (*SdkCloudMigrateStartRequest_VolumeGroup)(nil), + (*SdkCloudMigrateStartRequest_AllVolumes)(nil), + } } -type SdkCloudMigrateStartRequest_Volume struct { - // Request to migrate a volume - Volume *SdkCloudMigrateStartRequest_MigrateVolume `protobuf:"bytes,200,opt,name=volume,proto3,oneof"` +func _SdkCloudMigrateStartRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*SdkCloudMigrateStartRequest) + // opt + switch x := m.Opt.(type) { + case *SdkCloudMigrateStartRequest_Volume: + b.EncodeVarint(200<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Volume); err != nil { + return err + } + case *SdkCloudMigrateStartRequest_VolumeGroup: + b.EncodeVarint(201<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.VolumeGroup); err != nil { + return err + } + case *SdkCloudMigrateStartRequest_AllVolumes: + b.EncodeVarint(202<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.AllVolumes); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("SdkCloudMigrateStartRequest.Opt has unexpected type %T", x) + } + return nil +} + +func _SdkCloudMigrateStartRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*SdkCloudMigrateStartRequest) + switch tag { + case 200: // opt.volume + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkCloudMigrateStartRequest_MigrateVolume) + err := b.DecodeMessage(msg) + m.Opt = &SdkCloudMigrateStartRequest_Volume{msg} + return true, err + case 201: // opt.volume_group + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkCloudMigrateStartRequest_MigrateVolumeGroup) + err := b.DecodeMessage(msg) + m.Opt = &SdkCloudMigrateStartRequest_VolumeGroup{msg} + return true, err + case 202: // opt.all_volumes + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SdkCloudMigrateStartRequest_MigrateAllVolumes) + err := b.DecodeMessage(msg) + m.Opt = &SdkCloudMigrateStartRequest_AllVolumes{msg} + return true, err + default: + return false, nil + } +} + +func _SdkCloudMigrateStartRequest_OneofSizer(msg proto.Message) (n int) { + m := msg.(*SdkCloudMigrateStartRequest) + // opt + switch x := m.Opt.(type) { + case *SdkCloudMigrateStartRequest_Volume: + s := proto.Size(x.Volume) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case *SdkCloudMigrateStartRequest_VolumeGroup: + s := proto.Size(x.VolumeGroup) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case *SdkCloudMigrateStartRequest_AllVolumes: + s := proto.Size(x.AllVolumes) + n += 2 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n } -type SdkCloudMigrateStartRequest_VolumeGroup struct { - // Request to migrate a volume group - VolumeGroup *SdkCloudMigrateStartRequest_MigrateVolumeGroup `protobuf:"bytes,201,opt,name=volume_group,json=volumeGroup,proto3,oneof"` +// Defines a migration request for a volume +type SdkCloudMigrateStartRequest_MigrateVolume struct { + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -type SdkCloudMigrateStartRequest_AllVolumes struct { - // Request to migrate all volumes - AllVolumes *SdkCloudMigrateStartRequest_MigrateAllVolumes `protobuf:"bytes,202,opt,name=all_volumes,json=allVolumes,proto3,oneof"` +func (m *SdkCloudMigrateStartRequest_MigrateVolume) Reset() { + *m = SdkCloudMigrateStartRequest_MigrateVolume{} } - -func (*SdkCloudMigrateStartRequest_Volume) isSdkCloudMigrateStartRequest_Opt() {} - -func (*SdkCloudMigrateStartRequest_VolumeGroup) isSdkCloudMigrateStartRequest_Opt() {} - -func (*SdkCloudMigrateStartRequest_AllVolumes) isSdkCloudMigrateStartRequest_Opt() {} - -// Response to start a cloud migration -type CloudMigrateStartResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // TaskId assocaiated with the migration that was started - TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` +func (m *SdkCloudMigrateStartRequest_MigrateVolume) String() string { return proto.CompactTextString(m) } +func (*SdkCloudMigrateStartRequest_MigrateVolume) ProtoMessage() {} +func (*SdkCloudMigrateStartRequest_MigrateVolume) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{337, 0} } - -func (x *CloudMigrateStartResponse) Reset() { - *x = CloudMigrateStartResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[355] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudMigrateStartRequest_MigrateVolume) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudMigrateStartRequest_MigrateVolume.Unmarshal(m, b) } - -func (x *CloudMigrateStartResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudMigrateStartRequest_MigrateVolume) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudMigrateStartRequest_MigrateVolume.Marshal(b, m, deterministic) } - -func (*CloudMigrateStartResponse) ProtoMessage() {} - -func (x *CloudMigrateStartResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[355] - 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) +func (dst *SdkCloudMigrateStartRequest_MigrateVolume) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudMigrateStartRequest_MigrateVolume.Merge(dst, src) } - -// Deprecated: Use CloudMigrateStartResponse.ProtoReflect.Descriptor instead. -func (*CloudMigrateStartResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{355} +func (m *SdkCloudMigrateStartRequest_MigrateVolume) XXX_Size() int { + return xxx_messageInfo_SdkCloudMigrateStartRequest_MigrateVolume.Size(m) } - -func (x *CloudMigrateStartResponse) GetTaskId() string { - if x != nil { - return x.TaskId - } - return "" +func (m *SdkCloudMigrateStartRequest_MigrateVolume) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudMigrateStartRequest_MigrateVolume.DiscardUnknown(m) } -// Defines a response for the migration that was started -type SdkCloudMigrateStartResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Result assocaiated with the migration that was started - Result *CloudMigrateStartResponse `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` -} +var xxx_messageInfo_SdkCloudMigrateStartRequest_MigrateVolume proto.InternalMessageInfo -func (x *SdkCloudMigrateStartResponse) Reset() { - *x = SdkCloudMigrateStartResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[356] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (m *SdkCloudMigrateStartRequest_MigrateVolume) GetVolumeId() string { + if m != nil { + return m.VolumeId } + return "" } -func (x *SdkCloudMigrateStartResponse) String() string { - return protoimpl.X.MessageStringOf(x) +// Defines a migration request for a volume group +type SdkCloudMigrateStartRequest_MigrateVolumeGroup struct { + GroupId string `protobuf:"bytes,1,opt,name=group_id,json=groupId" json:"group_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (*SdkCloudMigrateStartResponse) ProtoMessage() {} - -func (x *SdkCloudMigrateStartResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[356] - 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) +func (m *SdkCloudMigrateStartRequest_MigrateVolumeGroup) Reset() { + *m = SdkCloudMigrateStartRequest_MigrateVolumeGroup{} } - -// Deprecated: Use SdkCloudMigrateStartResponse.ProtoReflect.Descriptor instead. -func (*SdkCloudMigrateStartResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{356} +func (m *SdkCloudMigrateStartRequest_MigrateVolumeGroup) String() string { + return proto.CompactTextString(m) } - -func (x *SdkCloudMigrateStartResponse) GetResult() *CloudMigrateStartResponse { - if x != nil { - return x.Result - } - return nil +func (*SdkCloudMigrateStartRequest_MigrateVolumeGroup) ProtoMessage() {} +func (*SdkCloudMigrateStartRequest_MigrateVolumeGroup) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{337, 1} +} +func (m *SdkCloudMigrateStartRequest_MigrateVolumeGroup) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudMigrateStartRequest_MigrateVolumeGroup.Unmarshal(m, b) +} +func (m *SdkCloudMigrateStartRequest_MigrateVolumeGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudMigrateStartRequest_MigrateVolumeGroup.Marshal(b, m, deterministic) +} +func (dst *SdkCloudMigrateStartRequest_MigrateVolumeGroup) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudMigrateStartRequest_MigrateVolumeGroup.Merge(dst, src) +} +func (m *SdkCloudMigrateStartRequest_MigrateVolumeGroup) XXX_Size() int { + return xxx_messageInfo_SdkCloudMigrateStartRequest_MigrateVolumeGroup.Size(m) +} +func (m *SdkCloudMigrateStartRequest_MigrateVolumeGroup) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudMigrateStartRequest_MigrateVolumeGroup.DiscardUnknown(m) } -// Request to stop a cloud migration -type CloudMigrateCancelRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +var xxx_messageInfo_SdkCloudMigrateStartRequest_MigrateVolumeGroup proto.InternalMessageInfo - // The id of the task to cancel - TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` +func (m *SdkCloudMigrateStartRequest_MigrateVolumeGroup) GetGroupId() string { + if m != nil { + return m.GroupId + } + return "" } -func (x *CloudMigrateCancelRequest) Reset() { - *x = CloudMigrateCancelRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[357] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +// Defines a migration request for all volumes in a cluster +type SdkCloudMigrateStartRequest_MigrateAllVolumes struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CloudMigrateCancelRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudMigrateStartRequest_MigrateAllVolumes) Reset() { + *m = SdkCloudMigrateStartRequest_MigrateAllVolumes{} +} +func (m *SdkCloudMigrateStartRequest_MigrateAllVolumes) String() string { + return proto.CompactTextString(m) +} +func (*SdkCloudMigrateStartRequest_MigrateAllVolumes) ProtoMessage() {} +func (*SdkCloudMigrateStartRequest_MigrateAllVolumes) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{337, 2} +} +func (m *SdkCloudMigrateStartRequest_MigrateAllVolumes) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudMigrateStartRequest_MigrateAllVolumes.Unmarshal(m, b) +} +func (m *SdkCloudMigrateStartRequest_MigrateAllVolumes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudMigrateStartRequest_MigrateAllVolumes.Marshal(b, m, deterministic) +} +func (dst *SdkCloudMigrateStartRequest_MigrateAllVolumes) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudMigrateStartRequest_MigrateAllVolumes.Merge(dst, src) +} +func (m *SdkCloudMigrateStartRequest_MigrateAllVolumes) XXX_Size() int { + return xxx_messageInfo_SdkCloudMigrateStartRequest_MigrateAllVolumes.Size(m) +} +func (m *SdkCloudMigrateStartRequest_MigrateAllVolumes) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudMigrateStartRequest_MigrateAllVolumes.DiscardUnknown(m) } -func (*CloudMigrateCancelRequest) ProtoMessage() {} +var xxx_messageInfo_SdkCloudMigrateStartRequest_MigrateAllVolumes proto.InternalMessageInfo -func (x *CloudMigrateCancelRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[357] - 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) +// Response to start a cloud migration +type CloudMigrateStartResponse struct { + // TaskId assocaiated with the migration that was started + TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId" json:"task_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -// Deprecated: Use CloudMigrateCancelRequest.ProtoReflect.Descriptor instead. -func (*CloudMigrateCancelRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{357} +func (m *CloudMigrateStartResponse) Reset() { *m = CloudMigrateStartResponse{} } +func (m *CloudMigrateStartResponse) String() string { return proto.CompactTextString(m) } +func (*CloudMigrateStartResponse) ProtoMessage() {} +func (*CloudMigrateStartResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{338} +} +func (m *CloudMigrateStartResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CloudMigrateStartResponse.Unmarshal(m, b) +} +func (m *CloudMigrateStartResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CloudMigrateStartResponse.Marshal(b, m, deterministic) +} +func (dst *CloudMigrateStartResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CloudMigrateStartResponse.Merge(dst, src) +} +func (m *CloudMigrateStartResponse) XXX_Size() int { + return xxx_messageInfo_CloudMigrateStartResponse.Size(m) +} +func (m *CloudMigrateStartResponse) XXX_DiscardUnknown() { + xxx_messageInfo_CloudMigrateStartResponse.DiscardUnknown(m) } -func (x *CloudMigrateCancelRequest) GetTaskId() string { - if x != nil { - return x.TaskId +var xxx_messageInfo_CloudMigrateStartResponse proto.InternalMessageInfo + +func (m *CloudMigrateStartResponse) GetTaskId() string { + if m != nil { + return m.TaskId } return "" } -// Defines a request to stop a cloud migration -type SdkCloudMigrateCancelRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +// Defines a response for the migration that was started +type SdkCloudMigrateStartResponse struct { + // Result assocaiated with the migration that was started + Result *CloudMigrateStartResponse `protobuf:"bytes,1,opt,name=result" json:"result,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} - // Request containing the task id to be cancelled - Request *CloudMigrateCancelRequest `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"` +func (m *SdkCloudMigrateStartResponse) Reset() { *m = SdkCloudMigrateStartResponse{} } +func (m *SdkCloudMigrateStartResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCloudMigrateStartResponse) ProtoMessage() {} +func (*SdkCloudMigrateStartResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{339} +} +func (m *SdkCloudMigrateStartResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudMigrateStartResponse.Unmarshal(m, b) +} +func (m *SdkCloudMigrateStartResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudMigrateStartResponse.Marshal(b, m, deterministic) } +func (dst *SdkCloudMigrateStartResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudMigrateStartResponse.Merge(dst, src) +} +func (m *SdkCloudMigrateStartResponse) XXX_Size() int { + return xxx_messageInfo_SdkCloudMigrateStartResponse.Size(m) +} +func (m *SdkCloudMigrateStartResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudMigrateStartResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCloudMigrateStartResponse proto.InternalMessageInfo -func (x *SdkCloudMigrateCancelRequest) Reset() { - *x = SdkCloudMigrateCancelRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[358] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (m *SdkCloudMigrateStartResponse) GetResult() *CloudMigrateStartResponse { + if m != nil { + return m.Result } + return nil +} + +// Request to stop a cloud migration +type CloudMigrateCancelRequest struct { + // The id of the task to cancel + TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId" json:"task_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudMigrateCancelRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CloudMigrateCancelRequest) Reset() { *m = CloudMigrateCancelRequest{} } +func (m *CloudMigrateCancelRequest) String() string { return proto.CompactTextString(m) } +func (*CloudMigrateCancelRequest) ProtoMessage() {} +func (*CloudMigrateCancelRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{340} +} +func (m *CloudMigrateCancelRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CloudMigrateCancelRequest.Unmarshal(m, b) +} +func (m *CloudMigrateCancelRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CloudMigrateCancelRequest.Marshal(b, m, deterministic) +} +func (dst *CloudMigrateCancelRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CloudMigrateCancelRequest.Merge(dst, src) +} +func (m *CloudMigrateCancelRequest) XXX_Size() int { + return xxx_messageInfo_CloudMigrateCancelRequest.Size(m) +} +func (m *CloudMigrateCancelRequest) XXX_DiscardUnknown() { + xxx_messageInfo_CloudMigrateCancelRequest.DiscardUnknown(m) } -func (*SdkCloudMigrateCancelRequest) ProtoMessage() {} +var xxx_messageInfo_CloudMigrateCancelRequest proto.InternalMessageInfo -func (x *SdkCloudMigrateCancelRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[358] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (m *CloudMigrateCancelRequest) GetTaskId() string { + if m != nil { + return m.TaskId } - return mi.MessageOf(x) + return "" } -// Deprecated: Use SdkCloudMigrateCancelRequest.ProtoReflect.Descriptor instead. +// Defines a request to stop a cloud migration +type SdkCloudMigrateCancelRequest struct { + // Request containing the task id to be cancelled + Request *CloudMigrateCancelRequest `protobuf:"bytes,1,opt,name=request" json:"request,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SdkCloudMigrateCancelRequest) Reset() { *m = SdkCloudMigrateCancelRequest{} } +func (m *SdkCloudMigrateCancelRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCloudMigrateCancelRequest) ProtoMessage() {} func (*SdkCloudMigrateCancelRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{358} + return fileDescriptor_api_bc0eb0e06839944e, []int{341} +} +func (m *SdkCloudMigrateCancelRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudMigrateCancelRequest.Unmarshal(m, b) +} +func (m *SdkCloudMigrateCancelRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudMigrateCancelRequest.Marshal(b, m, deterministic) +} +func (dst *SdkCloudMigrateCancelRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudMigrateCancelRequest.Merge(dst, src) +} +func (m *SdkCloudMigrateCancelRequest) XXX_Size() int { + return xxx_messageInfo_SdkCloudMigrateCancelRequest.Size(m) +} +func (m *SdkCloudMigrateCancelRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudMigrateCancelRequest.DiscardUnknown(m) } -func (x *SdkCloudMigrateCancelRequest) GetRequest() *CloudMigrateCancelRequest { - if x != nil { - return x.Request +var xxx_messageInfo_SdkCloudMigrateCancelRequest proto.InternalMessageInfo + +func (m *SdkCloudMigrateCancelRequest) GetRequest() *CloudMigrateCancelRequest { + if m != nil { + return m.Request } return nil } // Empty Response type SdkCloudMigrateCancelResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudMigrateCancelResponse) Reset() { - *x = SdkCloudMigrateCancelResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[359] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudMigrateCancelResponse) Reset() { *m = SdkCloudMigrateCancelResponse{} } +func (m *SdkCloudMigrateCancelResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCloudMigrateCancelResponse) ProtoMessage() {} +func (*SdkCloudMigrateCancelResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{342} } - -func (x *SdkCloudMigrateCancelResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudMigrateCancelResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudMigrateCancelResponse.Unmarshal(m, b) } - -func (*SdkCloudMigrateCancelResponse) ProtoMessage() {} - -func (x *SdkCloudMigrateCancelResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[359] - 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) +func (m *SdkCloudMigrateCancelResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudMigrateCancelResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudMigrateCancelResponse.ProtoReflect.Descriptor instead. -func (*SdkCloudMigrateCancelResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{359} +func (dst *SdkCloudMigrateCancelResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudMigrateCancelResponse.Merge(dst, src) +} +func (m *SdkCloudMigrateCancelResponse) XXX_Size() int { + return xxx_messageInfo_SdkCloudMigrateCancelResponse.Size(m) +} +func (m *SdkCloudMigrateCancelResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudMigrateCancelResponse.DiscardUnknown(m) } -type CloudMigrateInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +var xxx_messageInfo_SdkCloudMigrateCancelResponse proto.InternalMessageInfo +type CloudMigrateInfo struct { // Task id associated with this migration - TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` + TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId" json:"task_id,omitempty"` // ID of the cluster where the volume is being migrated - ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` // ID of the volume on the local cluster - LocalVolumeId string `protobuf:"bytes,3,opt,name=local_volume_id,json=localVolumeId,proto3" json:"local_volume_id,omitempty"` + LocalVolumeId string `protobuf:"bytes,3,opt,name=local_volume_id,json=localVolumeId" json:"local_volume_id,omitempty"` // Name of the volume on the local cluster - LocalVolumeName string `protobuf:"bytes,4,opt,name=local_volume_name,json=localVolumeName,proto3" json:"local_volume_name,omitempty"` + LocalVolumeName string `protobuf:"bytes,4,opt,name=local_volume_name,json=localVolumeName" json:"local_volume_name,omitempty"` // ID of the volume on the remote cluster - RemoteVolumeId string `protobuf:"bytes,5,opt,name=remote_volume_id,json=remoteVolumeId,proto3" json:"remote_volume_id,omitempty"` + RemoteVolumeId string `protobuf:"bytes,5,opt,name=remote_volume_id,json=remoteVolumeId" json:"remote_volume_id,omitempty"` // ID of the cloudbackup used for the migration - CloudbackupId string `protobuf:"bytes,6,opt,name=cloudbackup_id,json=cloudbackupId,proto3" json:"cloudbackup_id,omitempty"` + CloudbackupId string `protobuf:"bytes,6,opt,name=cloudbackup_id,json=cloudbackupId" json:"cloudbackup_id,omitempty"` // Current stage of the volume migration - CurrentStage CloudMigrate_Stage `protobuf:"varint,7,opt,name=current_stage,json=currentStage,proto3,enum=openstorage.api.CloudMigrate_Stage" json:"current_stage,omitempty"` + CurrentStage CloudMigrate_Stage `protobuf:"varint,7,opt,name=current_stage,json=currentStage,enum=openstorage.api.CloudMigrate_Stage" json:"current_stage,omitempty"` // Status of the current stage - Status CloudMigrate_Status `protobuf:"varint,8,opt,name=status,proto3,enum=openstorage.api.CloudMigrate_Status" json:"status,omitempty"` + Status CloudMigrate_Status `protobuf:"varint,8,opt,name=status,enum=openstorage.api.CloudMigrate_Status" json:"status,omitempty"` // Last time the status was updated - LastUpdate *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=last_update,json=lastUpdate,proto3" json:"last_update,omitempty"` + LastUpdate *timestamp.Timestamp `protobuf:"bytes,9,opt,name=last_update,json=lastUpdate" json:"last_update,omitempty"` // Contains the reason for the migration error - ErrorReason string `protobuf:"bytes,10,opt,name=error_reason,json=errorReason,proto3" json:"error_reason,omitempty"` + ErrorReason string `protobuf:"bytes,10,opt,name=error_reason,json=errorReason" json:"error_reason,omitempty"` // StartTime indicates Op's start time - StartTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + StartTime *timestamp.Timestamp `protobuf:"bytes,11,opt,name=start_time,json=startTime" json:"start_time,omitempty"` // CompletedTime indicates Op's completed time - CompletedTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=completed_time,json=completedTime,proto3" json:"completed_time,omitempty"` + CompletedTime *timestamp.Timestamp `protobuf:"bytes,12,opt,name=completed_time,json=completedTime" json:"completed_time,omitempty"` // BytesTotal is the number of bytes being transferred - BytesTotal uint64 `protobuf:"varint,13,opt,name=bytes_total,json=bytesTotal,proto3" json:"bytes_total,omitempty"` + BytesTotal uint64 `protobuf:"varint,13,opt,name=bytes_total,json=bytesTotal" json:"bytes_total,omitempty"` // BytesDone is the number of bytes already transferred - BytesDone uint64 `protobuf:"varint,14,opt,name=bytes_done,json=bytesDone,proto3" json:"bytes_done,omitempty"` + BytesDone uint64 `protobuf:"varint,14,opt,name=bytes_done,json=bytesDone" json:"bytes_done,omitempty"` // ETASeconds the time duration in seconds for cloud migration completion - EtaSeconds int64 `protobuf:"varint,15,opt,name=eta_seconds,json=etaSeconds,proto3" json:"eta_seconds,omitempty"` + EtaSeconds int64 `protobuf:"varint,15,opt,name=eta_seconds,json=etaSeconds" json:"eta_seconds,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CloudMigrateInfo) Reset() { - *x = CloudMigrateInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[360] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CloudMigrateInfo) Reset() { *m = CloudMigrateInfo{} } +func (m *CloudMigrateInfo) String() string { return proto.CompactTextString(m) } +func (*CloudMigrateInfo) ProtoMessage() {} +func (*CloudMigrateInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{343} } - -func (x *CloudMigrateInfo) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CloudMigrateInfo) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CloudMigrateInfo.Unmarshal(m, b) } - -func (*CloudMigrateInfo) ProtoMessage() {} - -func (x *CloudMigrateInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[360] - 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) +func (m *CloudMigrateInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CloudMigrateInfo.Marshal(b, m, deterministic) } - -// Deprecated: Use CloudMigrateInfo.ProtoReflect.Descriptor instead. -func (*CloudMigrateInfo) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{360} +func (dst *CloudMigrateInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_CloudMigrateInfo.Merge(dst, src) +} +func (m *CloudMigrateInfo) XXX_Size() int { + return xxx_messageInfo_CloudMigrateInfo.Size(m) +} +func (m *CloudMigrateInfo) XXX_DiscardUnknown() { + xxx_messageInfo_CloudMigrateInfo.DiscardUnknown(m) } -func (x *CloudMigrateInfo) GetTaskId() string { - if x != nil { - return x.TaskId +var xxx_messageInfo_CloudMigrateInfo proto.InternalMessageInfo + +func (m *CloudMigrateInfo) GetTaskId() string { + if m != nil { + return m.TaskId } return "" } -func (x *CloudMigrateInfo) GetClusterId() string { - if x != nil { - return x.ClusterId +func (m *CloudMigrateInfo) GetClusterId() string { + if m != nil { + return m.ClusterId } return "" } -func (x *CloudMigrateInfo) GetLocalVolumeId() string { - if x != nil { - return x.LocalVolumeId +func (m *CloudMigrateInfo) GetLocalVolumeId() string { + if m != nil { + return m.LocalVolumeId } return "" } -func (x *CloudMigrateInfo) GetLocalVolumeName() string { - if x != nil { - return x.LocalVolumeName +func (m *CloudMigrateInfo) GetLocalVolumeName() string { + if m != nil { + return m.LocalVolumeName } return "" } -func (x *CloudMigrateInfo) GetRemoteVolumeId() string { - if x != nil { - return x.RemoteVolumeId +func (m *CloudMigrateInfo) GetRemoteVolumeId() string { + if m != nil { + return m.RemoteVolumeId } return "" } -func (x *CloudMigrateInfo) GetCloudbackupId() string { - if x != nil { - return x.CloudbackupId +func (m *CloudMigrateInfo) GetCloudbackupId() string { + if m != nil { + return m.CloudbackupId } return "" } -func (x *CloudMigrateInfo) GetCurrentStage() CloudMigrate_Stage { - if x != nil { - return x.CurrentStage +func (m *CloudMigrateInfo) GetCurrentStage() CloudMigrate_Stage { + if m != nil { + return m.CurrentStage } return CloudMigrate_InvalidStage } -func (x *CloudMigrateInfo) GetStatus() CloudMigrate_Status { - if x != nil { - return x.Status +func (m *CloudMigrateInfo) GetStatus() CloudMigrate_Status { + if m != nil { + return m.Status } return CloudMigrate_InvalidStatus } -func (x *CloudMigrateInfo) GetLastUpdate() *timestamppb.Timestamp { - if x != nil { - return x.LastUpdate +func (m *CloudMigrateInfo) GetLastUpdate() *timestamp.Timestamp { + if m != nil { + return m.LastUpdate } return nil } -func (x *CloudMigrateInfo) GetErrorReason() string { - if x != nil { - return x.ErrorReason +func (m *CloudMigrateInfo) GetErrorReason() string { + if m != nil { + return m.ErrorReason } return "" } -func (x *CloudMigrateInfo) GetStartTime() *timestamppb.Timestamp { - if x != nil { - return x.StartTime +func (m *CloudMigrateInfo) GetStartTime() *timestamp.Timestamp { + if m != nil { + return m.StartTime } return nil } -func (x *CloudMigrateInfo) GetCompletedTime() *timestamppb.Timestamp { - if x != nil { - return x.CompletedTime +func (m *CloudMigrateInfo) GetCompletedTime() *timestamp.Timestamp { + if m != nil { + return m.CompletedTime } return nil } -func (x *CloudMigrateInfo) GetBytesTotal() uint64 { - if x != nil { - return x.BytesTotal +func (m *CloudMigrateInfo) GetBytesTotal() uint64 { + if m != nil { + return m.BytesTotal } return 0 } -func (x *CloudMigrateInfo) GetBytesDone() uint64 { - if x != nil { - return x.BytesDone +func (m *CloudMigrateInfo) GetBytesDone() uint64 { + if m != nil { + return m.BytesDone } return 0 } -func (x *CloudMigrateInfo) GetEtaSeconds() int64 { - if x != nil { - return x.EtaSeconds +func (m *CloudMigrateInfo) GetEtaSeconds() int64 { + if m != nil { + return m.EtaSeconds } return 0 } type CloudMigrateInfoList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - List []*CloudMigrateInfo `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` + List []*CloudMigrateInfo `protobuf:"bytes,1,rep,name=list" json:"list,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CloudMigrateInfoList) Reset() { - *x = CloudMigrateInfoList{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[361] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CloudMigrateInfoList) Reset() { *m = CloudMigrateInfoList{} } +func (m *CloudMigrateInfoList) String() string { return proto.CompactTextString(m) } +func (*CloudMigrateInfoList) ProtoMessage() {} +func (*CloudMigrateInfoList) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{344} } - -func (x *CloudMigrateInfoList) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CloudMigrateInfoList) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CloudMigrateInfoList.Unmarshal(m, b) } - -func (*CloudMigrateInfoList) ProtoMessage() {} - -func (x *CloudMigrateInfoList) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[361] - 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) +func (m *CloudMigrateInfoList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CloudMigrateInfoList.Marshal(b, m, deterministic) } - -// Deprecated: Use CloudMigrateInfoList.ProtoReflect.Descriptor instead. -func (*CloudMigrateInfoList) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{361} +func (dst *CloudMigrateInfoList) XXX_Merge(src proto.Message) { + xxx_messageInfo_CloudMigrateInfoList.Merge(dst, src) +} +func (m *CloudMigrateInfoList) XXX_Size() int { + return xxx_messageInfo_CloudMigrateInfoList.Size(m) +} +func (m *CloudMigrateInfoList) XXX_DiscardUnknown() { + xxx_messageInfo_CloudMigrateInfoList.DiscardUnknown(m) } -func (x *CloudMigrateInfoList) GetList() []*CloudMigrateInfo { - if x != nil { - return x.List +var xxx_messageInfo_CloudMigrateInfoList proto.InternalMessageInfo + +func (m *CloudMigrateInfoList) GetList() []*CloudMigrateInfo { + if m != nil { + return m.List } return nil } // Request for cloud migration operation status type SdkCloudMigrateStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Request contains the task id and cluster id for which status should be // returned - Request *CloudMigrateStatusRequest `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"` + Request *CloudMigrateStatusRequest `protobuf:"bytes,1,opt,name=request" json:"request,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudMigrateStatusRequest) Reset() { - *x = SdkCloudMigrateStatusRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[362] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudMigrateStatusRequest) Reset() { *m = SdkCloudMigrateStatusRequest{} } +func (m *SdkCloudMigrateStatusRequest) String() string { return proto.CompactTextString(m) } +func (*SdkCloudMigrateStatusRequest) ProtoMessage() {} +func (*SdkCloudMigrateStatusRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{345} } - -func (x *SdkCloudMigrateStatusRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudMigrateStatusRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudMigrateStatusRequest.Unmarshal(m, b) } - -func (*SdkCloudMigrateStatusRequest) ProtoMessage() {} - -func (x *SdkCloudMigrateStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[362] - 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) +func (m *SdkCloudMigrateStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudMigrateStatusRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudMigrateStatusRequest.ProtoReflect.Descriptor instead. -func (*SdkCloudMigrateStatusRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{362} +func (dst *SdkCloudMigrateStatusRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudMigrateStatusRequest.Merge(dst, src) +} +func (m *SdkCloudMigrateStatusRequest) XXX_Size() int { + return xxx_messageInfo_SdkCloudMigrateStatusRequest.Size(m) +} +func (m *SdkCloudMigrateStatusRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudMigrateStatusRequest.DiscardUnknown(m) } -func (x *SdkCloudMigrateStatusRequest) GetRequest() *CloudMigrateStatusRequest { - if x != nil { - return x.Request +var xxx_messageInfo_SdkCloudMigrateStatusRequest proto.InternalMessageInfo + +func (m *SdkCloudMigrateStatusRequest) GetRequest() *CloudMigrateStatusRequest { + if m != nil { + return m.Request } return nil } // Request for cloud migration operation status type CloudMigrateStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Task id for which to return status - TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` + TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId" json:"task_id,omitempty"` // ID of the cluster for which to return migration statuses - ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CloudMigrateStatusRequest) Reset() { - *x = CloudMigrateStatusRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[363] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CloudMigrateStatusRequest) Reset() { *m = CloudMigrateStatusRequest{} } +func (m *CloudMigrateStatusRequest) String() string { return proto.CompactTextString(m) } +func (*CloudMigrateStatusRequest) ProtoMessage() {} +func (*CloudMigrateStatusRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{346} } - -func (x *CloudMigrateStatusRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CloudMigrateStatusRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CloudMigrateStatusRequest.Unmarshal(m, b) } - -func (*CloudMigrateStatusRequest) ProtoMessage() {} - -func (x *CloudMigrateStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[363] - 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) +func (m *CloudMigrateStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CloudMigrateStatusRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use CloudMigrateStatusRequest.ProtoReflect.Descriptor instead. -func (*CloudMigrateStatusRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{363} +func (dst *CloudMigrateStatusRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CloudMigrateStatusRequest.Merge(dst, src) +} +func (m *CloudMigrateStatusRequest) XXX_Size() int { + return xxx_messageInfo_CloudMigrateStatusRequest.Size(m) +} +func (m *CloudMigrateStatusRequest) XXX_DiscardUnknown() { + xxx_messageInfo_CloudMigrateStatusRequest.DiscardUnknown(m) } -func (x *CloudMigrateStatusRequest) GetTaskId() string { - if x != nil { - return x.TaskId +var xxx_messageInfo_CloudMigrateStatusRequest proto.InternalMessageInfo + +func (m *CloudMigrateStatusRequest) GetTaskId() string { + if m != nil { + return m.TaskId } return "" } -func (x *CloudMigrateStatusRequest) GetClusterId() string { - if x != nil { - return x.ClusterId +func (m *CloudMigrateStatusRequest) GetClusterId() string { + if m != nil { + return m.ClusterId } return "" } // Response with a status of the cloud migration operations type CloudMigrateStatusResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Map of cluster id to the status of volumes being migrated - Info map[string]*CloudMigrateInfoList `protobuf:"bytes,1,rep,name=info,proto3" json:"info,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Info map[string]*CloudMigrateInfoList `protobuf:"bytes,1,rep,name=info" json:"info,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CloudMigrateStatusResponse) Reset() { - *x = CloudMigrateStatusResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[364] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CloudMigrateStatusResponse) Reset() { *m = CloudMigrateStatusResponse{} } +func (m *CloudMigrateStatusResponse) String() string { return proto.CompactTextString(m) } +func (*CloudMigrateStatusResponse) ProtoMessage() {} +func (*CloudMigrateStatusResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{347} } - -func (x *CloudMigrateStatusResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CloudMigrateStatusResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CloudMigrateStatusResponse.Unmarshal(m, b) } - -func (*CloudMigrateStatusResponse) ProtoMessage() {} - -func (x *CloudMigrateStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[364] - 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) +func (m *CloudMigrateStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CloudMigrateStatusResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use CloudMigrateStatusResponse.ProtoReflect.Descriptor instead. -func (*CloudMigrateStatusResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{364} +func (dst *CloudMigrateStatusResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CloudMigrateStatusResponse.Merge(dst, src) +} +func (m *CloudMigrateStatusResponse) XXX_Size() int { + return xxx_messageInfo_CloudMigrateStatusResponse.Size(m) } +func (m *CloudMigrateStatusResponse) XXX_DiscardUnknown() { + xxx_messageInfo_CloudMigrateStatusResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_CloudMigrateStatusResponse proto.InternalMessageInfo -func (x *CloudMigrateStatusResponse) GetInfo() map[string]*CloudMigrateInfoList { - if x != nil { - return x.Info +func (m *CloudMigrateStatusResponse) GetInfo() map[string]*CloudMigrateInfoList { + if m != nil { + return m.Info } return nil } // Defines a response for the status request type SdkCloudMigrateStatusResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Status of all migration requests - Result *CloudMigrateStatusResponse `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + Result *CloudMigrateStatusResponse `protobuf:"bytes,1,opt,name=result" json:"result,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkCloudMigrateStatusResponse) Reset() { - *x = SdkCloudMigrateStatusResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[365] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkCloudMigrateStatusResponse) Reset() { *m = SdkCloudMigrateStatusResponse{} } +func (m *SdkCloudMigrateStatusResponse) String() string { return proto.CompactTextString(m) } +func (*SdkCloudMigrateStatusResponse) ProtoMessage() {} +func (*SdkCloudMigrateStatusResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{348} } - -func (x *SdkCloudMigrateStatusResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkCloudMigrateStatusResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkCloudMigrateStatusResponse.Unmarshal(m, b) } - -func (*SdkCloudMigrateStatusResponse) ProtoMessage() {} - -func (x *SdkCloudMigrateStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[365] - 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) +func (m *SdkCloudMigrateStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkCloudMigrateStatusResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkCloudMigrateStatusResponse.ProtoReflect.Descriptor instead. -func (*SdkCloudMigrateStatusResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{365} +func (dst *SdkCloudMigrateStatusResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkCloudMigrateStatusResponse.Merge(dst, src) +} +func (m *SdkCloudMigrateStatusResponse) XXX_Size() int { + return xxx_messageInfo_SdkCloudMigrateStatusResponse.Size(m) } +func (m *SdkCloudMigrateStatusResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkCloudMigrateStatusResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkCloudMigrateStatusResponse proto.InternalMessageInfo -func (x *SdkCloudMigrateStatusResponse) GetResult() *CloudMigrateStatusResponse { - if x != nil { - return x.Result +func (m *SdkCloudMigrateStatusResponse) GetResult() *CloudMigrateStatusResponse { + if m != nil { + return m.Result } return nil } type ClusterPairMode struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ClusterPairMode) Reset() { - *x = ClusterPairMode{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[366] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *ClusterPairMode) Reset() { *m = ClusterPairMode{} } +func (m *ClusterPairMode) String() string { return proto.CompactTextString(m) } +func (*ClusterPairMode) ProtoMessage() {} +func (*ClusterPairMode) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{349} } - -func (x *ClusterPairMode) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *ClusterPairMode) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ClusterPairMode.Unmarshal(m, b) } - -func (*ClusterPairMode) ProtoMessage() {} - -func (x *ClusterPairMode) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[366] - 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) +func (m *ClusterPairMode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ClusterPairMode.Marshal(b, m, deterministic) } - -// Deprecated: Use ClusterPairMode.ProtoReflect.Descriptor instead. -func (*ClusterPairMode) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{366} +func (dst *ClusterPairMode) XXX_Merge(src proto.Message) { + xxx_messageInfo_ClusterPairMode.Merge(dst, src) +} +func (m *ClusterPairMode) XXX_Size() int { + return xxx_messageInfo_ClusterPairMode.Size(m) +} +func (m *ClusterPairMode) XXX_DiscardUnknown() { + xxx_messageInfo_ClusterPairMode.DiscardUnknown(m) } +var xxx_messageInfo_ClusterPairMode proto.InternalMessageInfo + // Used to send a request to create a cluster pair type ClusterPairCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // IP of the remote cluster - RemoteClusterIp string `protobuf:"bytes,1,opt,name=remote_cluster_ip,json=remoteClusterIp,proto3" json:"remote_cluster_ip,omitempty"` + RemoteClusterIp string `protobuf:"bytes,1,opt,name=remote_cluster_ip,json=remoteClusterIp" json:"remote_cluster_ip,omitempty"` // Port for the remote cluster - RemoteClusterPort uint32 `protobuf:"varint,2,opt,name=remote_cluster_port,json=remoteClusterPort,proto3" json:"remote_cluster_port,omitempty"` + RemoteClusterPort uint32 `protobuf:"varint,2,opt,name=remote_cluster_port,json=remoteClusterPort" json:"remote_cluster_port,omitempty"` // Token used to authenticate with the remote cluster - RemoteClusterToken string `protobuf:"bytes,3,opt,name=remote_cluster_token,json=remoteClusterToken,proto3" json:"remote_cluster_token,omitempty"` + RemoteClusterToken string `protobuf:"bytes,3,opt,name=remote_cluster_token,json=remoteClusterToken" json:"remote_cluster_token,omitempty"` // Set the new pair as the default - SetDefault bool `protobuf:"varint,4,opt,name=set_default,json=setDefault,proto3" json:"set_default,omitempty"` + SetDefault bool `protobuf:"varint,4,opt,name=set_default,json=setDefault" json:"set_default,omitempty"` // The mode to use for the cluster pair - Mode ClusterPairMode_Mode `protobuf:"varint,5,opt,name=mode,proto3,enum=openstorage.api.ClusterPairMode_Mode" json:"mode,omitempty"` + Mode ClusterPairMode_Mode `protobuf:"varint,5,opt,name=mode,enum=openstorage.api.ClusterPairMode_Mode" json:"mode,omitempty"` // Use for the cluster pairing, if given // credential id will be used in ClusterPairCreate service - CredentialId string `protobuf:"bytes,6,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` + CredentialId string `protobuf:"bytes,6,opt,name=credential_id,json=credentialId" json:"credential_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ClusterPairCreateRequest) Reset() { - *x = ClusterPairCreateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[367] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *ClusterPairCreateRequest) Reset() { *m = ClusterPairCreateRequest{} } +func (m *ClusterPairCreateRequest) String() string { return proto.CompactTextString(m) } +func (*ClusterPairCreateRequest) ProtoMessage() {} +func (*ClusterPairCreateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{350} } - -func (x *ClusterPairCreateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *ClusterPairCreateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ClusterPairCreateRequest.Unmarshal(m, b) } - -func (*ClusterPairCreateRequest) ProtoMessage() {} - -func (x *ClusterPairCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[367] - 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) +func (m *ClusterPairCreateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ClusterPairCreateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use ClusterPairCreateRequest.ProtoReflect.Descriptor instead. -func (*ClusterPairCreateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{367} +func (dst *ClusterPairCreateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ClusterPairCreateRequest.Merge(dst, src) +} +func (m *ClusterPairCreateRequest) XXX_Size() int { + return xxx_messageInfo_ClusterPairCreateRequest.Size(m) } +func (m *ClusterPairCreateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ClusterPairCreateRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ClusterPairCreateRequest proto.InternalMessageInfo -func (x *ClusterPairCreateRequest) GetRemoteClusterIp() string { - if x != nil { - return x.RemoteClusterIp +func (m *ClusterPairCreateRequest) GetRemoteClusterIp() string { + if m != nil { + return m.RemoteClusterIp } return "" } -func (x *ClusterPairCreateRequest) GetRemoteClusterPort() uint32 { - if x != nil { - return x.RemoteClusterPort +func (m *ClusterPairCreateRequest) GetRemoteClusterPort() uint32 { + if m != nil { + return m.RemoteClusterPort } return 0 } -func (x *ClusterPairCreateRequest) GetRemoteClusterToken() string { - if x != nil { - return x.RemoteClusterToken +func (m *ClusterPairCreateRequest) GetRemoteClusterToken() string { + if m != nil { + return m.RemoteClusterToken } return "" } -func (x *ClusterPairCreateRequest) GetSetDefault() bool { - if x != nil { - return x.SetDefault +func (m *ClusterPairCreateRequest) GetSetDefault() bool { + if m != nil { + return m.SetDefault } return false } -func (x *ClusterPairCreateRequest) GetMode() ClusterPairMode_Mode { - if x != nil { - return x.Mode +func (m *ClusterPairCreateRequest) GetMode() ClusterPairMode_Mode { + if m != nil { + return m.Mode } return ClusterPairMode_Default } -func (x *ClusterPairCreateRequest) GetCredentialId() string { - if x != nil { - return x.CredentialId +func (m *ClusterPairCreateRequest) GetCredentialId() string { + if m != nil { + return m.CredentialId } return "" } // Response for a pair request type ClusterPairCreateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // ID of the remote cluster - RemoteClusterId string `protobuf:"bytes,1,opt,name=remote_cluster_id,json=remoteClusterId,proto3" json:"remote_cluster_id,omitempty"` + RemoteClusterId string `protobuf:"bytes,1,opt,name=remote_cluster_id,json=remoteClusterId" json:"remote_cluster_id,omitempty"` // Name of the remote cluster - RemoteClusterName string `protobuf:"bytes,2,opt,name=remote_cluster_name,json=remoteClusterName,proto3" json:"remote_cluster_name,omitempty"` + RemoteClusterName string `protobuf:"bytes,2,opt,name=remote_cluster_name,json=remoteClusterName" json:"remote_cluster_name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ClusterPairCreateResponse) Reset() { - *x = ClusterPairCreateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[368] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *ClusterPairCreateResponse) Reset() { *m = ClusterPairCreateResponse{} } +func (m *ClusterPairCreateResponse) String() string { return proto.CompactTextString(m) } +func (*ClusterPairCreateResponse) ProtoMessage() {} +func (*ClusterPairCreateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{351} } - -func (x *ClusterPairCreateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *ClusterPairCreateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ClusterPairCreateResponse.Unmarshal(m, b) } - -func (*ClusterPairCreateResponse) ProtoMessage() {} - -func (x *ClusterPairCreateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[368] - 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) +func (m *ClusterPairCreateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ClusterPairCreateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use ClusterPairCreateResponse.ProtoReflect.Descriptor instead. -func (*ClusterPairCreateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{368} +func (dst *ClusterPairCreateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ClusterPairCreateResponse.Merge(dst, src) +} +func (m *ClusterPairCreateResponse) XXX_Size() int { + return xxx_messageInfo_ClusterPairCreateResponse.Size(m) +} +func (m *ClusterPairCreateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ClusterPairCreateResponse.DiscardUnknown(m) } -func (x *ClusterPairCreateResponse) GetRemoteClusterId() string { - if x != nil { - return x.RemoteClusterId +var xxx_messageInfo_ClusterPairCreateResponse proto.InternalMessageInfo + +func (m *ClusterPairCreateResponse) GetRemoteClusterId() string { + if m != nil { + return m.RemoteClusterId } return "" } -func (x *ClusterPairCreateResponse) GetRemoteClusterName() string { - if x != nil { - return x.RemoteClusterName +func (m *ClusterPairCreateResponse) GetRemoteClusterName() string { + if m != nil { + return m.RemoteClusterName } return "" } // Defines a request for creating a cluster pair type SdkClusterPairCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Request *ClusterPairCreateRequest `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"` + Request *ClusterPairCreateRequest `protobuf:"bytes,1,opt,name=request" json:"request,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkClusterPairCreateRequest) Reset() { - *x = SdkClusterPairCreateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[369] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkClusterPairCreateRequest) Reset() { *m = SdkClusterPairCreateRequest{} } +func (m *SdkClusterPairCreateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkClusterPairCreateRequest) ProtoMessage() {} +func (*SdkClusterPairCreateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{352} } - -func (x *SdkClusterPairCreateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkClusterPairCreateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkClusterPairCreateRequest.Unmarshal(m, b) } - -func (*SdkClusterPairCreateRequest) ProtoMessage() {} - -func (x *SdkClusterPairCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[369] - 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) +func (m *SdkClusterPairCreateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkClusterPairCreateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkClusterPairCreateRequest.ProtoReflect.Descriptor instead. -func (*SdkClusterPairCreateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{369} +func (dst *SdkClusterPairCreateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkClusterPairCreateRequest.Merge(dst, src) +} +func (m *SdkClusterPairCreateRequest) XXX_Size() int { + return xxx_messageInfo_SdkClusterPairCreateRequest.Size(m) } +func (m *SdkClusterPairCreateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkClusterPairCreateRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkClusterPairCreateRequest proto.InternalMessageInfo -func (x *SdkClusterPairCreateRequest) GetRequest() *ClusterPairCreateRequest { - if x != nil { - return x.Request +func (m *SdkClusterPairCreateRequest) GetRequest() *ClusterPairCreateRequest { + if m != nil { + return m.Request } return nil } // Defines a result of the cluster pair type SdkClusterPairCreateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Contains the information about cluster pair - Result *ClusterPairCreateResponse `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + Result *ClusterPairCreateResponse `protobuf:"bytes,1,opt,name=result" json:"result,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkClusterPairCreateResponse) Reset() { - *x = SdkClusterPairCreateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[370] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkClusterPairCreateResponse) Reset() { *m = SdkClusterPairCreateResponse{} } +func (m *SdkClusterPairCreateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkClusterPairCreateResponse) ProtoMessage() {} +func (*SdkClusterPairCreateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{353} } - -func (x *SdkClusterPairCreateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkClusterPairCreateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkClusterPairCreateResponse.Unmarshal(m, b) } - -func (*SdkClusterPairCreateResponse) ProtoMessage() {} - -func (x *SdkClusterPairCreateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[370] - 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) +func (m *SdkClusterPairCreateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkClusterPairCreateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkClusterPairCreateResponse.ProtoReflect.Descriptor instead. -func (*SdkClusterPairCreateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{370} +func (dst *SdkClusterPairCreateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkClusterPairCreateResponse.Merge(dst, src) +} +func (m *SdkClusterPairCreateResponse) XXX_Size() int { + return xxx_messageInfo_SdkClusterPairCreateResponse.Size(m) } +func (m *SdkClusterPairCreateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkClusterPairCreateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkClusterPairCreateResponse proto.InternalMessageInfo -func (x *SdkClusterPairCreateResponse) GetResult() *ClusterPairCreateResponse { - if x != nil { - return x.Result +func (m *SdkClusterPairCreateResponse) GetResult() *ClusterPairCreateResponse { + if m != nil { + return m.Result } return nil } // Used to process a pair request from a remote cluster type ClusterPairProcessRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // ID of the cluster requesting the pairing - SourceClusterId string `protobuf:"bytes,1,opt,name=source_cluster_id,json=sourceClusterId,proto3" json:"source_cluster_id,omitempty"` + SourceClusterId string `protobuf:"bytes,1,opt,name=source_cluster_id,json=sourceClusterId" json:"source_cluster_id,omitempty"` // Token used to authenticate with the remote cluster - RemoteClusterToken string `protobuf:"bytes,2,opt,name=remote_cluster_token,json=remoteClusterToken,proto3" json:"remote_cluster_token,omitempty"` + RemoteClusterToken string `protobuf:"bytes,2,opt,name=remote_cluster_token,json=remoteClusterToken" json:"remote_cluster_token,omitempty"` // The mode to use for the cluster pair - Mode ClusterPairMode_Mode `protobuf:"varint,3,opt,name=mode,proto3,enum=openstorage.api.ClusterPairMode_Mode" json:"mode,omitempty"` + Mode ClusterPairMode_Mode `protobuf:"varint,3,opt,name=mode,enum=openstorage.api.ClusterPairMode_Mode" json:"mode,omitempty"` // Use for the cluster pairing, if given // credential id will be used in ClusterPairCreate service - CredentialId string `protobuf:"bytes,4,opt,name=credential_id,json=credentialId,proto3" json:"credential_id,omitempty"` + CredentialId string `protobuf:"bytes,4,opt,name=credential_id,json=credentialId" json:"credential_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ClusterPairProcessRequest) Reset() { - *x = ClusterPairProcessRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[371] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *ClusterPairProcessRequest) Reset() { *m = ClusterPairProcessRequest{} } +func (m *ClusterPairProcessRequest) String() string { return proto.CompactTextString(m) } +func (*ClusterPairProcessRequest) ProtoMessage() {} +func (*ClusterPairProcessRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{354} } - -func (x *ClusterPairProcessRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *ClusterPairProcessRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ClusterPairProcessRequest.Unmarshal(m, b) } - -func (*ClusterPairProcessRequest) ProtoMessage() {} - -func (x *ClusterPairProcessRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[371] - 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) +func (m *ClusterPairProcessRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ClusterPairProcessRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use ClusterPairProcessRequest.ProtoReflect.Descriptor instead. -func (*ClusterPairProcessRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{371} +func (dst *ClusterPairProcessRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ClusterPairProcessRequest.Merge(dst, src) +} +func (m *ClusterPairProcessRequest) XXX_Size() int { + return xxx_messageInfo_ClusterPairProcessRequest.Size(m) } +func (m *ClusterPairProcessRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ClusterPairProcessRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ClusterPairProcessRequest proto.InternalMessageInfo -func (x *ClusterPairProcessRequest) GetSourceClusterId() string { - if x != nil { - return x.SourceClusterId +func (m *ClusterPairProcessRequest) GetSourceClusterId() string { + if m != nil { + return m.SourceClusterId } return "" } -func (x *ClusterPairProcessRequest) GetRemoteClusterToken() string { - if x != nil { - return x.RemoteClusterToken +func (m *ClusterPairProcessRequest) GetRemoteClusterToken() string { + if m != nil { + return m.RemoteClusterToken } return "" } -func (x *ClusterPairProcessRequest) GetMode() ClusterPairMode_Mode { - if x != nil { - return x.Mode +func (m *ClusterPairProcessRequest) GetMode() ClusterPairMode_Mode { + if m != nil { + return m.Mode } return ClusterPairMode_Default } -func (x *ClusterPairProcessRequest) GetCredentialId() string { - if x != nil { - return x.CredentialId +func (m *ClusterPairProcessRequest) GetCredentialId() string { + if m != nil { + return m.CredentialId } return "" } // Response after a pairing has been processed type ClusterPairProcessResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // ID of the cluster which processed the pair request - RemoteClusterId string `protobuf:"bytes,1,opt,name=remote_cluster_id,json=remoteClusterId,proto3" json:"remote_cluster_id,omitempty"` + RemoteClusterId string `protobuf:"bytes,1,opt,name=remote_cluster_id,json=remoteClusterId" json:"remote_cluster_id,omitempty"` // Name of the cluster which processed the pair request - RemoteClusterName string `protobuf:"bytes,2,opt,name=remote_cluster_name,json=remoteClusterName,proto3" json:"remote_cluster_name,omitempty"` + RemoteClusterName string `protobuf:"bytes,2,opt,name=remote_cluster_name,json=remoteClusterName" json:"remote_cluster_name,omitempty"` // List of endpoints that can be used to communicate with the cluster - RemoteClusterEndpoints []string `protobuf:"bytes,3,rep,name=remote_cluster_endpoints,json=remoteClusterEndpoints,proto3" json:"remote_cluster_endpoints,omitempty"` + RemoteClusterEndpoints []string `protobuf:"bytes,3,rep,name=remote_cluster_endpoints,json=remoteClusterEndpoints" json:"remote_cluster_endpoints,omitempty"` // Key/value pair of options returned on successful pairing. // Opaque to openstorage and interpreted by the drivers - Options map[string]string `protobuf:"bytes,4,rep,name=options,proto3" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Options map[string]string `protobuf:"bytes,4,rep,name=options" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ClusterPairProcessResponse) Reset() { - *x = ClusterPairProcessResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[372] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *ClusterPairProcessResponse) Reset() { *m = ClusterPairProcessResponse{} } +func (m *ClusterPairProcessResponse) String() string { return proto.CompactTextString(m) } +func (*ClusterPairProcessResponse) ProtoMessage() {} +func (*ClusterPairProcessResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{355} } - -func (x *ClusterPairProcessResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *ClusterPairProcessResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ClusterPairProcessResponse.Unmarshal(m, b) } - -func (*ClusterPairProcessResponse) ProtoMessage() {} - -func (x *ClusterPairProcessResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[372] - 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) +func (m *ClusterPairProcessResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ClusterPairProcessResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use ClusterPairProcessResponse.ProtoReflect.Descriptor instead. -func (*ClusterPairProcessResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{372} +func (dst *ClusterPairProcessResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ClusterPairProcessResponse.Merge(dst, src) +} +func (m *ClusterPairProcessResponse) XXX_Size() int { + return xxx_messageInfo_ClusterPairProcessResponse.Size(m) +} +func (m *ClusterPairProcessResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ClusterPairProcessResponse.DiscardUnknown(m) } -func (x *ClusterPairProcessResponse) GetRemoteClusterId() string { - if x != nil { - return x.RemoteClusterId +var xxx_messageInfo_ClusterPairProcessResponse proto.InternalMessageInfo + +func (m *ClusterPairProcessResponse) GetRemoteClusterId() string { + if m != nil { + return m.RemoteClusterId } return "" } -func (x *ClusterPairProcessResponse) GetRemoteClusterName() string { - if x != nil { - return x.RemoteClusterName +func (m *ClusterPairProcessResponse) GetRemoteClusterName() string { + if m != nil { + return m.RemoteClusterName } return "" } -func (x *ClusterPairProcessResponse) GetRemoteClusterEndpoints() []string { - if x != nil { - return x.RemoteClusterEndpoints +func (m *ClusterPairProcessResponse) GetRemoteClusterEndpoints() []string { + if m != nil { + return m.RemoteClusterEndpoints } return nil } -func (x *ClusterPairProcessResponse) GetOptions() map[string]string { - if x != nil { - return x.Options +func (m *ClusterPairProcessResponse) GetOptions() map[string]string { + if m != nil { + return m.Options } return nil } // Defines a delete request for a cluster pair type SdkClusterPairDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // ID of the cluster pair to be deleted - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkClusterPairDeleteRequest) Reset() { - *x = SdkClusterPairDeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[373] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkClusterPairDeleteRequest) Reset() { *m = SdkClusterPairDeleteRequest{} } +func (m *SdkClusterPairDeleteRequest) String() string { return proto.CompactTextString(m) } +func (*SdkClusterPairDeleteRequest) ProtoMessage() {} +func (*SdkClusterPairDeleteRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{356} } - -func (x *SdkClusterPairDeleteRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkClusterPairDeleteRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkClusterPairDeleteRequest.Unmarshal(m, b) } - -func (*SdkClusterPairDeleteRequest) ProtoMessage() {} - -func (x *SdkClusterPairDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[373] - 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) +func (m *SdkClusterPairDeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkClusterPairDeleteRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkClusterPairDeleteRequest.ProtoReflect.Descriptor instead. -func (*SdkClusterPairDeleteRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{373} +func (dst *SdkClusterPairDeleteRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkClusterPairDeleteRequest.Merge(dst, src) +} +func (m *SdkClusterPairDeleteRequest) XXX_Size() int { + return xxx_messageInfo_SdkClusterPairDeleteRequest.Size(m) } +func (m *SdkClusterPairDeleteRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkClusterPairDeleteRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkClusterPairDeleteRequest proto.InternalMessageInfo -func (x *SdkClusterPairDeleteRequest) GetClusterId() string { - if x != nil { - return x.ClusterId +func (m *SdkClusterPairDeleteRequest) GetClusterId() string { + if m != nil { + return m.ClusterId } return "" } // Empty response type SdkClusterPairDeleteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkClusterPairDeleteResponse) Reset() { - *x = SdkClusterPairDeleteResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[374] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkClusterPairDeleteResponse) Reset() { *m = SdkClusterPairDeleteResponse{} } +func (m *SdkClusterPairDeleteResponse) String() string { return proto.CompactTextString(m) } +func (*SdkClusterPairDeleteResponse) ProtoMessage() {} +func (*SdkClusterPairDeleteResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{357} } - -func (x *SdkClusterPairDeleteResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkClusterPairDeleteResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkClusterPairDeleteResponse.Unmarshal(m, b) } - -func (*SdkClusterPairDeleteResponse) ProtoMessage() {} - -func (x *SdkClusterPairDeleteResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[374] - 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) +func (m *SdkClusterPairDeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkClusterPairDeleteResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkClusterPairDeleteResponse.ProtoReflect.Descriptor instead. -func (*SdkClusterPairDeleteResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{374} +func (dst *SdkClusterPairDeleteResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkClusterPairDeleteResponse.Merge(dst, src) +} +func (m *SdkClusterPairDeleteResponse) XXX_Size() int { + return xxx_messageInfo_SdkClusterPairDeleteResponse.Size(m) +} +func (m *SdkClusterPairDeleteResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkClusterPairDeleteResponse.DiscardUnknown(m) } +var xxx_messageInfo_SdkClusterPairDeleteResponse proto.InternalMessageInfo + // Response to get the cluster token type ClusterPairTokenGetResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Token used to authenticate clusters - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + Token string `protobuf:"bytes,1,opt,name=token" json:"token,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ClusterPairTokenGetResponse) Reset() { - *x = ClusterPairTokenGetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[375] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *ClusterPairTokenGetResponse) Reset() { *m = ClusterPairTokenGetResponse{} } +func (m *ClusterPairTokenGetResponse) String() string { return proto.CompactTextString(m) } +func (*ClusterPairTokenGetResponse) ProtoMessage() {} +func (*ClusterPairTokenGetResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{358} } - -func (x *ClusterPairTokenGetResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *ClusterPairTokenGetResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ClusterPairTokenGetResponse.Unmarshal(m, b) } - -func (*ClusterPairTokenGetResponse) ProtoMessage() {} - -func (x *ClusterPairTokenGetResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[375] - 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) +func (m *ClusterPairTokenGetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ClusterPairTokenGetResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use ClusterPairTokenGetResponse.ProtoReflect.Descriptor instead. -func (*ClusterPairTokenGetResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{375} +func (dst *ClusterPairTokenGetResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ClusterPairTokenGetResponse.Merge(dst, src) +} +func (m *ClusterPairTokenGetResponse) XXX_Size() int { + return xxx_messageInfo_ClusterPairTokenGetResponse.Size(m) } +func (m *ClusterPairTokenGetResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ClusterPairTokenGetResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ClusterPairTokenGetResponse proto.InternalMessageInfo -func (x *ClusterPairTokenGetResponse) GetToken() string { - if x != nil { - return x.Token +func (m *ClusterPairTokenGetResponse) GetToken() string { + if m != nil { + return m.Token } return "" } // Empty request type SdkClusterPairGetTokenRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkClusterPairGetTokenRequest) Reset() { - *x = SdkClusterPairGetTokenRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[376] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkClusterPairGetTokenRequest) Reset() { *m = SdkClusterPairGetTokenRequest{} } +func (m *SdkClusterPairGetTokenRequest) String() string { return proto.CompactTextString(m) } +func (*SdkClusterPairGetTokenRequest) ProtoMessage() {} +func (*SdkClusterPairGetTokenRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{359} } - -func (x *SdkClusterPairGetTokenRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkClusterPairGetTokenRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkClusterPairGetTokenRequest.Unmarshal(m, b) } - -func (*SdkClusterPairGetTokenRequest) ProtoMessage() {} - -func (x *SdkClusterPairGetTokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[376] - 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) +func (m *SdkClusterPairGetTokenRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkClusterPairGetTokenRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkClusterPairGetTokenRequest.ProtoReflect.Descriptor instead. -func (*SdkClusterPairGetTokenRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{376} +func (dst *SdkClusterPairGetTokenRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkClusterPairGetTokenRequest.Merge(dst, src) +} +func (m *SdkClusterPairGetTokenRequest) XXX_Size() int { + return xxx_messageInfo_SdkClusterPairGetTokenRequest.Size(m) +} +func (m *SdkClusterPairGetTokenRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkClusterPairGetTokenRequest.DiscardUnknown(m) } +var xxx_messageInfo_SdkClusterPairGetTokenRequest proto.InternalMessageInfo + // Defines a response for the token request type SdkClusterPairGetTokenResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Contains authentication token for the cluster - Result *ClusterPairTokenGetResponse `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + Result *ClusterPairTokenGetResponse `protobuf:"bytes,1,opt,name=result" json:"result,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkClusterPairGetTokenResponse) Reset() { - *x = SdkClusterPairGetTokenResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[377] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkClusterPairGetTokenResponse) Reset() { *m = SdkClusterPairGetTokenResponse{} } +func (m *SdkClusterPairGetTokenResponse) String() string { return proto.CompactTextString(m) } +func (*SdkClusterPairGetTokenResponse) ProtoMessage() {} +func (*SdkClusterPairGetTokenResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{360} } - -func (x *SdkClusterPairGetTokenResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkClusterPairGetTokenResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkClusterPairGetTokenResponse.Unmarshal(m, b) } - -func (*SdkClusterPairGetTokenResponse) ProtoMessage() {} - -func (x *SdkClusterPairGetTokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[377] - 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) +func (m *SdkClusterPairGetTokenResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkClusterPairGetTokenResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkClusterPairGetTokenResponse.ProtoReflect.Descriptor instead. -func (*SdkClusterPairGetTokenResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{377} +func (dst *SdkClusterPairGetTokenResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkClusterPairGetTokenResponse.Merge(dst, src) +} +func (m *SdkClusterPairGetTokenResponse) XXX_Size() int { + return xxx_messageInfo_SdkClusterPairGetTokenResponse.Size(m) } +func (m *SdkClusterPairGetTokenResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkClusterPairGetTokenResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkClusterPairGetTokenResponse proto.InternalMessageInfo -func (x *SdkClusterPairGetTokenResponse) GetResult() *ClusterPairTokenGetResponse { - if x != nil { - return x.Result +func (m *SdkClusterPairGetTokenResponse) GetResult() *ClusterPairTokenGetResponse { + if m != nil { + return m.Result } return nil } // Empty request type SdkClusterPairResetTokenRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkClusterPairResetTokenRequest) Reset() { - *x = SdkClusterPairResetTokenRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[378] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkClusterPairResetTokenRequest) Reset() { *m = SdkClusterPairResetTokenRequest{} } +func (m *SdkClusterPairResetTokenRequest) String() string { return proto.CompactTextString(m) } +func (*SdkClusterPairResetTokenRequest) ProtoMessage() {} +func (*SdkClusterPairResetTokenRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{361} } - -func (x *SdkClusterPairResetTokenRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkClusterPairResetTokenRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkClusterPairResetTokenRequest.Unmarshal(m, b) } - -func (*SdkClusterPairResetTokenRequest) ProtoMessage() {} - -func (x *SdkClusterPairResetTokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[378] - 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) +func (m *SdkClusterPairResetTokenRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkClusterPairResetTokenRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkClusterPairResetTokenRequest.ProtoReflect.Descriptor instead. -func (*SdkClusterPairResetTokenRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{378} +func (dst *SdkClusterPairResetTokenRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkClusterPairResetTokenRequest.Merge(dst, src) +} +func (m *SdkClusterPairResetTokenRequest) XXX_Size() int { + return xxx_messageInfo_SdkClusterPairResetTokenRequest.Size(m) +} +func (m *SdkClusterPairResetTokenRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkClusterPairResetTokenRequest.DiscardUnknown(m) } +var xxx_messageInfo_SdkClusterPairResetTokenRequest proto.InternalMessageInfo + // Defines a response for the token request type SdkClusterPairResetTokenResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Contains authentication token for the cluster - Result *ClusterPairTokenGetResponse `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + Result *ClusterPairTokenGetResponse `protobuf:"bytes,1,opt,name=result" json:"result,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkClusterPairResetTokenResponse) Reset() { - *x = SdkClusterPairResetTokenResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[379] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkClusterPairResetTokenResponse) Reset() { *m = SdkClusterPairResetTokenResponse{} } +func (m *SdkClusterPairResetTokenResponse) String() string { return proto.CompactTextString(m) } +func (*SdkClusterPairResetTokenResponse) ProtoMessage() {} +func (*SdkClusterPairResetTokenResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{362} } - -func (x *SdkClusterPairResetTokenResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkClusterPairResetTokenResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkClusterPairResetTokenResponse.Unmarshal(m, b) } - -func (*SdkClusterPairResetTokenResponse) ProtoMessage() {} - -func (x *SdkClusterPairResetTokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[379] - 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) +func (m *SdkClusterPairResetTokenResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkClusterPairResetTokenResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkClusterPairResetTokenResponse.ProtoReflect.Descriptor instead. -func (*SdkClusterPairResetTokenResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{379} +func (dst *SdkClusterPairResetTokenResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkClusterPairResetTokenResponse.Merge(dst, src) +} +func (m *SdkClusterPairResetTokenResponse) XXX_Size() int { + return xxx_messageInfo_SdkClusterPairResetTokenResponse.Size(m) } +func (m *SdkClusterPairResetTokenResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkClusterPairResetTokenResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkClusterPairResetTokenResponse proto.InternalMessageInfo -func (x *SdkClusterPairResetTokenResponse) GetResult() *ClusterPairTokenGetResponse { - if x != nil { - return x.Result +func (m *SdkClusterPairResetTokenResponse) GetResult() *ClusterPairTokenGetResponse { + if m != nil { + return m.Result } return nil } // Information about a cluster pair type ClusterPairInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // ID of the cluster - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` // Name of the cluster - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` // The endpoint used for creating the pair - Endpoint string `protobuf:"bytes,3,opt,name=endpoint,proto3" json:"endpoint,omitempty"` + Endpoint string `protobuf:"bytes,3,opt,name=endpoint" json:"endpoint,omitempty"` // Current endpoints of the cluster - CurrentEndpoints []string `protobuf:"bytes,4,rep,name=current_endpoints,json=currentEndpoints,proto3" json:"current_endpoints,omitempty"` + CurrentEndpoints []string `protobuf:"bytes,4,rep,name=current_endpoints,json=currentEndpoints" json:"current_endpoints,omitempty"` // Flag used to determine if communication is over a secure channel - Secure bool `protobuf:"varint,5,opt,name=secure,proto3" json:"secure,omitempty"` + Secure bool `protobuf:"varint,5,opt,name=secure" json:"secure,omitempty"` // Token associated with cluster - Token string `protobuf:"bytes,6,opt,name=token,proto3" json:"token,omitempty"` + Token string `protobuf:"bytes,6,opt,name=token" json:"token,omitempty"` // Key/value pair of options associated with the cluster // Opaque to openstorage and interpreted by the drivers - Options map[string]string `protobuf:"bytes,7,rep,name=options,proto3" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Options map[string]string `protobuf:"bytes,7,rep,name=options" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Mode for the cluster pair - Mode ClusterPairMode_Mode `protobuf:"varint,8,opt,name=mode,proto3,enum=openstorage.api.ClusterPairMode_Mode" json:"mode,omitempty"` + Mode ClusterPairMode_Mode `protobuf:"varint,8,opt,name=mode,enum=openstorage.api.ClusterPairMode_Mode" json:"mode,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ClusterPairInfo) Reset() { - *x = ClusterPairInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[380] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *ClusterPairInfo) Reset() { *m = ClusterPairInfo{} } +func (m *ClusterPairInfo) String() string { return proto.CompactTextString(m) } +func (*ClusterPairInfo) ProtoMessage() {} +func (*ClusterPairInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{363} } - -func (x *ClusterPairInfo) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *ClusterPairInfo) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ClusterPairInfo.Unmarshal(m, b) } - -func (*ClusterPairInfo) ProtoMessage() {} - -func (x *ClusterPairInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[380] - 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) +func (m *ClusterPairInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ClusterPairInfo.Marshal(b, m, deterministic) } - -// Deprecated: Use ClusterPairInfo.ProtoReflect.Descriptor instead. -func (*ClusterPairInfo) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{380} +func (dst *ClusterPairInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_ClusterPairInfo.Merge(dst, src) +} +func (m *ClusterPairInfo) XXX_Size() int { + return xxx_messageInfo_ClusterPairInfo.Size(m) } +func (m *ClusterPairInfo) XXX_DiscardUnknown() { + xxx_messageInfo_ClusterPairInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_ClusterPairInfo proto.InternalMessageInfo -func (x *ClusterPairInfo) GetId() string { - if x != nil { - return x.Id +func (m *ClusterPairInfo) GetId() string { + if m != nil { + return m.Id } return "" } -func (x *ClusterPairInfo) GetName() string { - if x != nil { - return x.Name +func (m *ClusterPairInfo) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *ClusterPairInfo) GetEndpoint() string { - if x != nil { - return x.Endpoint +func (m *ClusterPairInfo) GetEndpoint() string { + if m != nil { + return m.Endpoint } return "" } -func (x *ClusterPairInfo) GetCurrentEndpoints() []string { - if x != nil { - return x.CurrentEndpoints +func (m *ClusterPairInfo) GetCurrentEndpoints() []string { + if m != nil { + return m.CurrentEndpoints } return nil } -func (x *ClusterPairInfo) GetSecure() bool { - if x != nil { - return x.Secure +func (m *ClusterPairInfo) GetSecure() bool { + if m != nil { + return m.Secure } return false } -func (x *ClusterPairInfo) GetToken() string { - if x != nil { - return x.Token +func (m *ClusterPairInfo) GetToken() string { + if m != nil { + return m.Token } return "" } -func (x *ClusterPairInfo) GetOptions() map[string]string { - if x != nil { - return x.Options +func (m *ClusterPairInfo) GetOptions() map[string]string { + if m != nil { + return m.Options } return nil } -func (x *ClusterPairInfo) GetMode() ClusterPairMode_Mode { - if x != nil { - return x.Mode +func (m *ClusterPairInfo) GetMode() ClusterPairMode_Mode { + if m != nil { + return m.Mode } return ClusterPairMode_Default } // Defines a cluster pair inspect request type SdkClusterPairInspectRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // ID of the cluster, if empty gets the default pair - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkClusterPairInspectRequest) Reset() { - *x = SdkClusterPairInspectRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[381] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkClusterPairInspectRequest) Reset() { *m = SdkClusterPairInspectRequest{} } +func (m *SdkClusterPairInspectRequest) String() string { return proto.CompactTextString(m) } +func (*SdkClusterPairInspectRequest) ProtoMessage() {} +func (*SdkClusterPairInspectRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{364} } - -func (x *SdkClusterPairInspectRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkClusterPairInspectRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkClusterPairInspectRequest.Unmarshal(m, b) } - -func (*SdkClusterPairInspectRequest) ProtoMessage() {} - -func (x *SdkClusterPairInspectRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[381] - 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) +func (m *SdkClusterPairInspectRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkClusterPairInspectRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkClusterPairInspectRequest.ProtoReflect.Descriptor instead. -func (*SdkClusterPairInspectRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{381} +func (dst *SdkClusterPairInspectRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkClusterPairInspectRequest.Merge(dst, src) +} +func (m *SdkClusterPairInspectRequest) XXX_Size() int { + return xxx_messageInfo_SdkClusterPairInspectRequest.Size(m) +} +func (m *SdkClusterPairInspectRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkClusterPairInspectRequest.DiscardUnknown(m) } -func (x *SdkClusterPairInspectRequest) GetId() string { - if x != nil { - return x.Id +var xxx_messageInfo_SdkClusterPairInspectRequest proto.InternalMessageInfo + +func (m *SdkClusterPairInspectRequest) GetId() string { + if m != nil { + return m.Id } return "" } -// Response to get a cluster pair +// Reponse to get a cluster pair type ClusterPairGetResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Info about the cluster pair - PairInfo *ClusterPairInfo `protobuf:"bytes,1,opt,name=pair_info,json=pairInfo,proto3" json:"pair_info,omitempty"` + PairInfo *ClusterPairInfo `protobuf:"bytes,1,opt,name=pair_info,json=pairInfo" json:"pair_info,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ClusterPairGetResponse) Reset() { - *x = ClusterPairGetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[382] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *ClusterPairGetResponse) Reset() { *m = ClusterPairGetResponse{} } +func (m *ClusterPairGetResponse) String() string { return proto.CompactTextString(m) } +func (*ClusterPairGetResponse) ProtoMessage() {} +func (*ClusterPairGetResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{365} } - -func (x *ClusterPairGetResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *ClusterPairGetResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ClusterPairGetResponse.Unmarshal(m, b) } - -func (*ClusterPairGetResponse) ProtoMessage() {} - -func (x *ClusterPairGetResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[382] - 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) +func (m *ClusterPairGetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ClusterPairGetResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use ClusterPairGetResponse.ProtoReflect.Descriptor instead. -func (*ClusterPairGetResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{382} +func (dst *ClusterPairGetResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ClusterPairGetResponse.Merge(dst, src) +} +func (m *ClusterPairGetResponse) XXX_Size() int { + return xxx_messageInfo_ClusterPairGetResponse.Size(m) +} +func (m *ClusterPairGetResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ClusterPairGetResponse.DiscardUnknown(m) } -func (x *ClusterPairGetResponse) GetPairInfo() *ClusterPairInfo { - if x != nil { - return x.PairInfo +var xxx_messageInfo_ClusterPairGetResponse proto.InternalMessageInfo + +func (m *ClusterPairGetResponse) GetPairInfo() *ClusterPairInfo { + if m != nil { + return m.PairInfo } return nil } // Defines a cluster pair inspect response type SdkClusterPairInspectResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Information about cluster pair - Result *ClusterPairGetResponse `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + Result *ClusterPairGetResponse `protobuf:"bytes,1,opt,name=result" json:"result,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkClusterPairInspectResponse) Reset() { - *x = SdkClusterPairInspectResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[383] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkClusterPairInspectResponse) Reset() { *m = SdkClusterPairInspectResponse{} } +func (m *SdkClusterPairInspectResponse) String() string { return proto.CompactTextString(m) } +func (*SdkClusterPairInspectResponse) ProtoMessage() {} +func (*SdkClusterPairInspectResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{366} } - -func (x *SdkClusterPairInspectResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkClusterPairInspectResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkClusterPairInspectResponse.Unmarshal(m, b) } - -func (*SdkClusterPairInspectResponse) ProtoMessage() {} - -func (x *SdkClusterPairInspectResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[383] - 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) +func (m *SdkClusterPairInspectResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkClusterPairInspectResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkClusterPairInspectResponse.ProtoReflect.Descriptor instead. -func (*SdkClusterPairInspectResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{383} +func (dst *SdkClusterPairInspectResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkClusterPairInspectResponse.Merge(dst, src) +} +func (m *SdkClusterPairInspectResponse) XXX_Size() int { + return xxx_messageInfo_SdkClusterPairInspectResponse.Size(m) +} +func (m *SdkClusterPairInspectResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkClusterPairInspectResponse.DiscardUnknown(m) } -func (x *SdkClusterPairInspectResponse) GetResult() *ClusterPairGetResponse { - if x != nil { - return x.Result +var xxx_messageInfo_SdkClusterPairInspectResponse proto.InternalMessageInfo + +func (m *SdkClusterPairInspectResponse) GetResult() *ClusterPairGetResponse { + if m != nil { + return m.Result } return nil } // Empty Request type SdkClusterPairEnumerateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkClusterPairEnumerateRequest) Reset() { - *x = SdkClusterPairEnumerateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[384] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkClusterPairEnumerateRequest) Reset() { *m = SdkClusterPairEnumerateRequest{} } +func (m *SdkClusterPairEnumerateRequest) String() string { return proto.CompactTextString(m) } +func (*SdkClusterPairEnumerateRequest) ProtoMessage() {} +func (*SdkClusterPairEnumerateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{367} } - -func (x *SdkClusterPairEnumerateRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkClusterPairEnumerateRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkClusterPairEnumerateRequest.Unmarshal(m, b) } - -func (*SdkClusterPairEnumerateRequest) ProtoMessage() {} - -func (x *SdkClusterPairEnumerateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[384] - 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) +func (m *SdkClusterPairEnumerateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkClusterPairEnumerateRequest.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkClusterPairEnumerateRequest.ProtoReflect.Descriptor instead. -func (*SdkClusterPairEnumerateRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{384} +func (dst *SdkClusterPairEnumerateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkClusterPairEnumerateRequest.Merge(dst, src) +} +func (m *SdkClusterPairEnumerateRequest) XXX_Size() int { + return xxx_messageInfo_SdkClusterPairEnumerateRequest.Size(m) } +func (m *SdkClusterPairEnumerateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkClusterPairEnumerateRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkClusterPairEnumerateRequest proto.InternalMessageInfo // Response to enumerate all the cluster pairs type ClusterPairsEnumerateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // ID of the default cluster pair - DefaultId string `protobuf:"bytes,1,opt,name=default_id,json=defaultId,proto3" json:"default_id,omitempty"` + DefaultId string `protobuf:"bytes,1,opt,name=default_id,json=defaultId" json:"default_id,omitempty"` // Pairs Info about the cluster pairs - Pairs map[string]*ClusterPairInfo `protobuf:"bytes,2,rep,name=pairs,proto3" json:"pairs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Pairs map[string]*ClusterPairInfo `protobuf:"bytes,2,rep,name=pairs" json:"pairs,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ClusterPairsEnumerateResponse) Reset() { - *x = ClusterPairsEnumerateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[385] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *ClusterPairsEnumerateResponse) Reset() { *m = ClusterPairsEnumerateResponse{} } +func (m *ClusterPairsEnumerateResponse) String() string { return proto.CompactTextString(m) } +func (*ClusterPairsEnumerateResponse) ProtoMessage() {} +func (*ClusterPairsEnumerateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{368} } - -func (x *ClusterPairsEnumerateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *ClusterPairsEnumerateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ClusterPairsEnumerateResponse.Unmarshal(m, b) } - -func (*ClusterPairsEnumerateResponse) ProtoMessage() {} - -func (x *ClusterPairsEnumerateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[385] - 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) +func (m *ClusterPairsEnumerateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ClusterPairsEnumerateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use ClusterPairsEnumerateResponse.ProtoReflect.Descriptor instead. -func (*ClusterPairsEnumerateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{385} +func (dst *ClusterPairsEnumerateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ClusterPairsEnumerateResponse.Merge(dst, src) +} +func (m *ClusterPairsEnumerateResponse) XXX_Size() int { + return xxx_messageInfo_ClusterPairsEnumerateResponse.Size(m) +} +func (m *ClusterPairsEnumerateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ClusterPairsEnumerateResponse.DiscardUnknown(m) } -func (x *ClusterPairsEnumerateResponse) GetDefaultId() string { - if x != nil { - return x.DefaultId +var xxx_messageInfo_ClusterPairsEnumerateResponse proto.InternalMessageInfo + +func (m *ClusterPairsEnumerateResponse) GetDefaultId() string { + if m != nil { + return m.DefaultId } return "" } -func (x *ClusterPairsEnumerateResponse) GetPairs() map[string]*ClusterPairInfo { - if x != nil { - return x.Pairs +func (m *ClusterPairsEnumerateResponse) GetPairs() map[string]*ClusterPairInfo { + if m != nil { + return m.Pairs } return nil } // Defines a list of cluster pair type SdkClusterPairEnumerateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // List of all the cluster pairs - Result *ClusterPairsEnumerateResponse `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + Result *ClusterPairsEnumerateResponse `protobuf:"bytes,1,opt,name=result" json:"result,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SdkClusterPairEnumerateResponse) Reset() { - *x = SdkClusterPairEnumerateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[386] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *SdkClusterPairEnumerateResponse) Reset() { *m = SdkClusterPairEnumerateResponse{} } +func (m *SdkClusterPairEnumerateResponse) String() string { return proto.CompactTextString(m) } +func (*SdkClusterPairEnumerateResponse) ProtoMessage() {} +func (*SdkClusterPairEnumerateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{369} } - -func (x *SdkClusterPairEnumerateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *SdkClusterPairEnumerateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkClusterPairEnumerateResponse.Unmarshal(m, b) } - -func (*SdkClusterPairEnumerateResponse) ProtoMessage() {} - -func (x *SdkClusterPairEnumerateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[386] - 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) +func (m *SdkClusterPairEnumerateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkClusterPairEnumerateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use SdkClusterPairEnumerateResponse.ProtoReflect.Descriptor instead. -func (*SdkClusterPairEnumerateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{386} +func (dst *SdkClusterPairEnumerateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkClusterPairEnumerateResponse.Merge(dst, src) +} +func (m *SdkClusterPairEnumerateResponse) XXX_Size() int { + return xxx_messageInfo_SdkClusterPairEnumerateResponse.Size(m) } +func (m *SdkClusterPairEnumerateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkClusterPairEnumerateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkClusterPairEnumerateResponse proto.InternalMessageInfo -func (x *SdkClusterPairEnumerateResponse) GetResult() *ClusterPairsEnumerateResponse { - if x != nil { - return x.Result +func (m *SdkClusterPairEnumerateResponse) GetResult() *ClusterPairsEnumerateResponse { + if m != nil { + return m.Result } return nil } type Catalog struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Name of the Directory/File - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` // Full Path of the Directory/File - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` + Path string `protobuf:"bytes,2,opt,name=path" json:"path,omitempty"` // Type Directory or File - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + Type string `protobuf:"bytes,3,opt,name=type" json:"type,omitempty"` // File or Directory Size - Size uint64 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"` + Size uint64 `protobuf:"varint,4,opt,name=size" json:"size,omitempty"` // Last Modified - LastModified *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=LastModified,proto3" json:"LastModified,omitempty"` + LastModified *timestamp.Timestamp `protobuf:"bytes,5,opt,name=LastModified" json:"LastModified,omitempty"` // Children - Children []*Catalog `protobuf:"bytes,6,rep,name=children,proto3" json:"children,omitempty"` + Children []*Catalog `protobuf:"bytes,6,rep,name=children" json:"children,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Catalog) Reset() { - *x = Catalog{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[387] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *Catalog) Reset() { *m = Catalog{} } +func (m *Catalog) String() string { return proto.CompactTextString(m) } +func (*Catalog) ProtoMessage() {} +func (*Catalog) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{370} } - -func (x *Catalog) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *Catalog) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Catalog.Unmarshal(m, b) +} +func (m *Catalog) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Catalog.Marshal(b, m, deterministic) +} +func (dst *Catalog) XXX_Merge(src proto.Message) { + xxx_messageInfo_Catalog.Merge(dst, src) +} +func (m *Catalog) XXX_Size() int { + return xxx_messageInfo_Catalog.Size(m) +} +func (m *Catalog) XXX_DiscardUnknown() { + xxx_messageInfo_Catalog.DiscardUnknown(m) } -func (*Catalog) ProtoMessage() {} +var xxx_messageInfo_Catalog proto.InternalMessageInfo -func (x *Catalog) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[387] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (m *Catalog) GetName() string { + if m != nil { + return m.Name } - return mi.MessageOf(x) + return "" } -// Deprecated: Use Catalog.ProtoReflect.Descriptor instead. -func (*Catalog) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{387} -} - -func (x *Catalog) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Catalog) GetPath() string { - if x != nil { - return x.Path +func (m *Catalog) GetPath() string { + if m != nil { + return m.Path } return "" } -func (x *Catalog) GetType() string { - if x != nil { - return x.Type +func (m *Catalog) GetType() string { + if m != nil { + return m.Type } return "" } -func (x *Catalog) GetSize() uint64 { - if x != nil { - return x.Size +func (m *Catalog) GetSize() uint64 { + if m != nil { + return m.Size } return 0 } -func (x *Catalog) GetLastModified() *timestamppb.Timestamp { - if x != nil { - return x.LastModified +func (m *Catalog) GetLastModified() *timestamp.Timestamp { + if m != nil { + return m.LastModified } return nil } -func (x *Catalog) GetChildren() []*Catalog { - if x != nil { - return x.Children +func (m *Catalog) GetChildren() []*Catalog { + if m != nil { + return m.Children } return nil } type Report struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Directory count - Directories int64 `protobuf:"varint,2,opt,name=directories,proto3" json:"directories,omitempty"` + Directories int64 `protobuf:"varint,2,opt,name=directories" json:"directories,omitempty"` // File count - Files int64 `protobuf:"varint,3,opt,name=files,proto3" json:"files,omitempty"` + Files int64 `protobuf:"varint,3,opt,name=files" json:"files,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Report) Reset() { - *x = Report{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[388] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *Report) Reset() { *m = Report{} } +func (m *Report) String() string { return proto.CompactTextString(m) } +func (*Report) ProtoMessage() {} +func (*Report) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{371} } - -func (x *Report) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *Report) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Report.Unmarshal(m, b) } - -func (*Report) ProtoMessage() {} - -func (x *Report) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[388] - 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) +func (m *Report) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Report.Marshal(b, m, deterministic) } - -// Deprecated: Use Report.ProtoReflect.Descriptor instead. -func (*Report) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{388} +func (dst *Report) XXX_Merge(src proto.Message) { + xxx_messageInfo_Report.Merge(dst, src) +} +func (m *Report) XXX_Size() int { + return xxx_messageInfo_Report.Size(m) +} +func (m *Report) XXX_DiscardUnknown() { + xxx_messageInfo_Report.DiscardUnknown(m) } -func (x *Report) GetDirectories() int64 { - if x != nil { - return x.Directories +var xxx_messageInfo_Report proto.InternalMessageInfo + +func (m *Report) GetDirectories() int64 { + if m != nil { + return m.Directories } return 0 } -func (x *Report) GetFiles() int64 { - if x != nil { - return x.Files +func (m *Report) GetFiles() int64 { + if m != nil { + return m.Files } return 0 } type CatalogResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Root Catalog - Root *Catalog `protobuf:"bytes,1,opt,name=root,proto3" json:"root,omitempty"` + Root *Catalog `protobuf:"bytes,1,opt,name=root" json:"root,omitempty"` // Report of total directories and files count - Report *Report `protobuf:"bytes,2,opt,name=report,proto3" json:"report,omitempty"` + Report *Report `protobuf:"bytes,2,opt,name=report" json:"report,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CatalogResponse) Reset() { - *x = CatalogResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[389] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *CatalogResponse) Reset() { *m = CatalogResponse{} } +func (m *CatalogResponse) String() string { return proto.CompactTextString(m) } +func (*CatalogResponse) ProtoMessage() {} +func (*CatalogResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{372} } - -func (x *CatalogResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *CatalogResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CatalogResponse.Unmarshal(m, b) } - -func (*CatalogResponse) ProtoMessage() {} - -func (x *CatalogResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[389] - 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) +func (m *CatalogResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CatalogResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use CatalogResponse.ProtoReflect.Descriptor instead. -func (*CatalogResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{389} +func (dst *CatalogResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CatalogResponse.Merge(dst, src) +} +func (m *CatalogResponse) XXX_Size() int { + return xxx_messageInfo_CatalogResponse.Size(m) } +func (m *CatalogResponse) XXX_DiscardUnknown() { + xxx_messageInfo_CatalogResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_CatalogResponse proto.InternalMessageInfo -func (x *CatalogResponse) GetRoot() *Catalog { - if x != nil { - return x.Root +func (m *CatalogResponse) GetRoot() *Catalog { + if m != nil { + return m.Root } return nil } -func (x *CatalogResponse) GetReport() *Report { - if x != nil { - return x.Report +func (m *CatalogResponse) GetReport() *Report { + if m != nil { + return m.Report } return nil } @@ -29929,60 +26758,51 @@ func (x *CatalogResponse) GetReport() *Report { // Locate response would be used to return a set of mounts // and/or Container IDs and their mount paths type LocateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Map of mounts // : /var/lib/osd/ - Mounts map[string]string `protobuf:"bytes,1,rep,name=mounts,proto3" json:"mounts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Mounts map[string]string `protobuf:"bytes,1,rep,name=mounts" json:"mounts,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Map of docker id's and their mounts // : /var/www - Dockerids map[string]string `protobuf:"bytes,2,rep,name=dockerids,proto3" json:"dockerids,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Dockerids map[string]string `protobuf:"bytes,2,rep,name=dockerids" json:"dockerids,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *LocateResponse) Reset() { - *x = LocateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[390] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *LocateResponse) Reset() { *m = LocateResponse{} } +func (m *LocateResponse) String() string { return proto.CompactTextString(m) } +func (*LocateResponse) ProtoMessage() {} +func (*LocateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{373} } - -func (x *LocateResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *LocateResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_LocateResponse.Unmarshal(m, b) } - -func (*LocateResponse) ProtoMessage() {} - -func (x *LocateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[390] - 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) +func (m *LocateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_LocateResponse.Marshal(b, m, deterministic) } - -// Deprecated: Use LocateResponse.ProtoReflect.Descriptor instead. -func (*LocateResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{390} +func (dst *LocateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_LocateResponse.Merge(dst, src) +} +func (m *LocateResponse) XXX_Size() int { + return xxx_messageInfo_LocateResponse.Size(m) +} +func (m *LocateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_LocateResponse.DiscardUnknown(m) } -func (x *LocateResponse) GetMounts() map[string]string { - if x != nil { - return x.Mounts +var xxx_messageInfo_LocateResponse proto.InternalMessageInfo + +func (m *LocateResponse) GetMounts() map[string]string { + if m != nil { + return m.Mounts } return nil } -func (x *LocateResponse) GetDockerids() map[string]string { - if x != nil { - return x.Dockerids +func (m *LocateResponse) GetDockerids() map[string]string { + if m != nil { + return m.Dockerids } return nil } @@ -29992,247 +26812,220 @@ func (x *LocateResponse) GetDockerids() map[string]string { // Rules that have enforcement as "required" are strictly enforced while "preferred" are best effort. // In situations, where 2 or more rules conflict, the weight of the rules will dictate which wins. type VolumePlacementStrategy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // ReplicaAffinity defines affinity rules between replicas within a volume - ReplicaAffinity []*ReplicaPlacementSpec `protobuf:"bytes,1,rep,name=replica_affinity,json=replicaAffinity,proto3" json:"replica_affinity,omitempty"` + ReplicaAffinity []*ReplicaPlacementSpec `protobuf:"bytes,1,rep,name=replica_affinity,json=replicaAffinity" json:"replica_affinity,omitempty"` // ReplicaAntiAffinity defines anti-affinity rules between replicas within a volume - ReplicaAntiAffinity []*ReplicaPlacementSpec `protobuf:"bytes,2,rep,name=replica_anti_affinity,json=replicaAntiAffinity,proto3" json:"replica_anti_affinity,omitempty"` + ReplicaAntiAffinity []*ReplicaPlacementSpec `protobuf:"bytes,2,rep,name=replica_anti_affinity,json=replicaAntiAffinity" json:"replica_anti_affinity,omitempty"` // VolumeAffinity defines affinity rules between volumes - VolumeAffinity []*VolumePlacementSpec `protobuf:"bytes,3,rep,name=volume_affinity,json=volumeAffinity,proto3" json:"volume_affinity,omitempty"` + VolumeAffinity []*VolumePlacementSpec `protobuf:"bytes,3,rep,name=volume_affinity,json=volumeAffinity" json:"volume_affinity,omitempty"` // VolumeAntiAffinity defines anti-affinity rules between volumes - VolumeAntiAffinity []*VolumePlacementSpec `protobuf:"bytes,4,rep,name=volume_anti_affinity,json=volumeAntiAffinity,proto3" json:"volume_anti_affinity,omitempty"` + VolumeAntiAffinity []*VolumePlacementSpec `protobuf:"bytes,4,rep,name=volume_anti_affinity,json=volumeAntiAffinity" json:"volume_anti_affinity,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VolumePlacementStrategy) Reset() { - *x = VolumePlacementStrategy{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[391] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *VolumePlacementStrategy) Reset() { *m = VolumePlacementStrategy{} } +func (m *VolumePlacementStrategy) String() string { return proto.CompactTextString(m) } +func (*VolumePlacementStrategy) ProtoMessage() {} +func (*VolumePlacementStrategy) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{374} } - -func (x *VolumePlacementStrategy) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *VolumePlacementStrategy) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumePlacementStrategy.Unmarshal(m, b) } - -func (*VolumePlacementStrategy) ProtoMessage() {} - -func (x *VolumePlacementStrategy) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[391] - 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) +func (m *VolumePlacementStrategy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumePlacementStrategy.Marshal(b, m, deterministic) } - -// Deprecated: Use VolumePlacementStrategy.ProtoReflect.Descriptor instead. -func (*VolumePlacementStrategy) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{391} +func (dst *VolumePlacementStrategy) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumePlacementStrategy.Merge(dst, src) +} +func (m *VolumePlacementStrategy) XXX_Size() int { + return xxx_messageInfo_VolumePlacementStrategy.Size(m) } +func (m *VolumePlacementStrategy) XXX_DiscardUnknown() { + xxx_messageInfo_VolumePlacementStrategy.DiscardUnknown(m) +} + +var xxx_messageInfo_VolumePlacementStrategy proto.InternalMessageInfo -func (x *VolumePlacementStrategy) GetReplicaAffinity() []*ReplicaPlacementSpec { - if x != nil { - return x.ReplicaAffinity +func (m *VolumePlacementStrategy) GetReplicaAffinity() []*ReplicaPlacementSpec { + if m != nil { + return m.ReplicaAffinity } return nil } -func (x *VolumePlacementStrategy) GetReplicaAntiAffinity() []*ReplicaPlacementSpec { - if x != nil { - return x.ReplicaAntiAffinity +func (m *VolumePlacementStrategy) GetReplicaAntiAffinity() []*ReplicaPlacementSpec { + if m != nil { + return m.ReplicaAntiAffinity } return nil } -func (x *VolumePlacementStrategy) GetVolumeAffinity() []*VolumePlacementSpec { - if x != nil { - return x.VolumeAffinity +func (m *VolumePlacementStrategy) GetVolumeAffinity() []*VolumePlacementSpec { + if m != nil { + return m.VolumeAffinity } return nil } -func (x *VolumePlacementStrategy) GetVolumeAntiAffinity() []*VolumePlacementSpec { - if x != nil { - return x.VolumeAntiAffinity +func (m *VolumePlacementStrategy) GetVolumeAntiAffinity() []*VolumePlacementSpec { + if m != nil { + return m.VolumeAntiAffinity } return nil } type ReplicaPlacementSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Weight defines the weight of the rule which allows to break the tie with other matching rules. A rule with // higher weight wins over a rule with lower weight. // (optional) - Weight int64 `protobuf:"varint,1,opt,name=weight,proto3" json:"weight,omitempty"` + Weight int64 `protobuf:"varint,1,opt,name=weight" json:"weight,omitempty"` // Enforcement specifies the rule enforcement policy. Can take values: required or preferred. // (optional) - Enforcement EnforcementType `protobuf:"varint,2,opt,name=enforcement,proto3,enum=openstorage.api.EnforcementType" json:"enforcement,omitempty"` + Enforcement EnforcementType `protobuf:"varint,2,opt,name=enforcement,enum=openstorage.api.EnforcementType" json:"enforcement,omitempty"` // AffectedReplicas defines the number of volume replicas affected by this rule. If not provided, // rule would affect all replicas // (optional) - AffectedReplicas int32 `protobuf:"varint,3,opt,name=affected_replicas,json=affectedReplicas,proto3" json:"affected_replicas,omitempty"` + AffectedReplicas int32 `protobuf:"varint,3,opt,name=affected_replicas,json=affectedReplicas" json:"affected_replicas,omitempty"` // TopologyKey key for the matching all segments of the cluster topology with the same key // e.g If the key is failure-domain.beta.kubernetes.io/zone, this should match all nodes with // the same value for this key (i.e in the same zone) - TopologyKey string `protobuf:"bytes,4,opt,name=topology_key,json=topologyKey,proto3" json:"topology_key,omitempty"` + TopologyKey string `protobuf:"bytes,4,opt,name=topology_key,json=topologyKey" json:"topology_key,omitempty"` // MatchExpressions is a list of label selector requirements. The requirements are ANDed. - MatchExpressions []*LabelSelectorRequirement `protobuf:"bytes,5,rep,name=match_expressions,json=matchExpressions,proto3" json:"match_expressions,omitempty"` + MatchExpressions []*LabelSelectorRequirement `protobuf:"bytes,5,rep,name=match_expressions,json=matchExpressions" json:"match_expressions,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ReplicaPlacementSpec) Reset() { - *x = ReplicaPlacementSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[392] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *ReplicaPlacementSpec) Reset() { *m = ReplicaPlacementSpec{} } +func (m *ReplicaPlacementSpec) String() string { return proto.CompactTextString(m) } +func (*ReplicaPlacementSpec) ProtoMessage() {} +func (*ReplicaPlacementSpec) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{375} } - -func (x *ReplicaPlacementSpec) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *ReplicaPlacementSpec) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ReplicaPlacementSpec.Unmarshal(m, b) } - -func (*ReplicaPlacementSpec) ProtoMessage() {} - -func (x *ReplicaPlacementSpec) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[392] - 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) +func (m *ReplicaPlacementSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ReplicaPlacementSpec.Marshal(b, m, deterministic) } - -// Deprecated: Use ReplicaPlacementSpec.ProtoReflect.Descriptor instead. -func (*ReplicaPlacementSpec) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{392} +func (dst *ReplicaPlacementSpec) XXX_Merge(src proto.Message) { + xxx_messageInfo_ReplicaPlacementSpec.Merge(dst, src) +} +func (m *ReplicaPlacementSpec) XXX_Size() int { + return xxx_messageInfo_ReplicaPlacementSpec.Size(m) +} +func (m *ReplicaPlacementSpec) XXX_DiscardUnknown() { + xxx_messageInfo_ReplicaPlacementSpec.DiscardUnknown(m) } -func (x *ReplicaPlacementSpec) GetWeight() int64 { - if x != nil { - return x.Weight +var xxx_messageInfo_ReplicaPlacementSpec proto.InternalMessageInfo + +func (m *ReplicaPlacementSpec) GetWeight() int64 { + if m != nil { + return m.Weight } return 0 } -func (x *ReplicaPlacementSpec) GetEnforcement() EnforcementType { - if x != nil { - return x.Enforcement +func (m *ReplicaPlacementSpec) GetEnforcement() EnforcementType { + if m != nil { + return m.Enforcement } return EnforcementType_required } -func (x *ReplicaPlacementSpec) GetAffectedReplicas() int32 { - if x != nil { - return x.AffectedReplicas +func (m *ReplicaPlacementSpec) GetAffectedReplicas() int32 { + if m != nil { + return m.AffectedReplicas } return 0 } -func (x *ReplicaPlacementSpec) GetTopologyKey() string { - if x != nil { - return x.TopologyKey +func (m *ReplicaPlacementSpec) GetTopologyKey() string { + if m != nil { + return m.TopologyKey } return "" } -func (x *ReplicaPlacementSpec) GetMatchExpressions() []*LabelSelectorRequirement { - if x != nil { - return x.MatchExpressions +func (m *ReplicaPlacementSpec) GetMatchExpressions() []*LabelSelectorRequirement { + if m != nil { + return m.MatchExpressions } return nil } type VolumePlacementSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Weight defines the weight of the rule which allows to break the tie with other matching rules. A rule with // higher weight wins over a rule with lower weight. // (optional) - Weight int64 `protobuf:"varint,1,opt,name=weight,proto3" json:"weight,omitempty"` + Weight int64 `protobuf:"varint,1,opt,name=weight" json:"weight,omitempty"` // Enforcement specifies the rule enforcement policy. Can take values: required or preferred. // (optional) - Enforcement EnforcementType `protobuf:"varint,2,opt,name=enforcement,proto3,enum=openstorage.api.EnforcementType" json:"enforcement,omitempty"` + Enforcement EnforcementType `protobuf:"varint,2,opt,name=enforcement,enum=openstorage.api.EnforcementType" json:"enforcement,omitempty"` // TopologyKey key for the matching all segments of the cluster topology with the same key // e.g If the key is failure-domain.beta.kubernetes.io/zone, this should match all nodes with // the same value for this key (i.e in the same zone) - TopologyKey string `protobuf:"bytes,3,opt,name=topology_key,json=topologyKey,proto3" json:"topology_key,omitempty"` + TopologyKey string `protobuf:"bytes,3,opt,name=topology_key,json=topologyKey" json:"topology_key,omitempty"` // MatchExpressions is a list of label selector requirements. The requirements are ANDed. - MatchExpressions []*LabelSelectorRequirement `protobuf:"bytes,4,rep,name=match_expressions,json=matchExpressions,proto3" json:"match_expressions,omitempty"` + MatchExpressions []*LabelSelectorRequirement `protobuf:"bytes,4,rep,name=match_expressions,json=matchExpressions" json:"match_expressions,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *VolumePlacementSpec) Reset() { - *x = VolumePlacementSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[393] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *VolumePlacementSpec) Reset() { *m = VolumePlacementSpec{} } +func (m *VolumePlacementSpec) String() string { return proto.CompactTextString(m) } +func (*VolumePlacementSpec) ProtoMessage() {} +func (*VolumePlacementSpec) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{376} } - -func (x *VolumePlacementSpec) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *VolumePlacementSpec) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumePlacementSpec.Unmarshal(m, b) } - -func (*VolumePlacementSpec) ProtoMessage() {} - -func (x *VolumePlacementSpec) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[393] - 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) +func (m *VolumePlacementSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumePlacementSpec.Marshal(b, m, deterministic) } - -// Deprecated: Use VolumePlacementSpec.ProtoReflect.Descriptor instead. -func (*VolumePlacementSpec) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{393} +func (dst *VolumePlacementSpec) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumePlacementSpec.Merge(dst, src) +} +func (m *VolumePlacementSpec) XXX_Size() int { + return xxx_messageInfo_VolumePlacementSpec.Size(m) +} +func (m *VolumePlacementSpec) XXX_DiscardUnknown() { + xxx_messageInfo_VolumePlacementSpec.DiscardUnknown(m) } -func (x *VolumePlacementSpec) GetWeight() int64 { - if x != nil { - return x.Weight +var xxx_messageInfo_VolumePlacementSpec proto.InternalMessageInfo + +func (m *VolumePlacementSpec) GetWeight() int64 { + if m != nil { + return m.Weight } return 0 } -func (x *VolumePlacementSpec) GetEnforcement() EnforcementType { - if x != nil { - return x.Enforcement +func (m *VolumePlacementSpec) GetEnforcement() EnforcementType { + if m != nil { + return m.Enforcement } return EnforcementType_required } -func (x *VolumePlacementSpec) GetTopologyKey() string { - if x != nil { - return x.TopologyKey +func (m *VolumePlacementSpec) GetTopologyKey() string { + if m != nil { + return m.TopologyKey } return "" } -func (x *VolumePlacementSpec) GetMatchExpressions() []*LabelSelectorRequirement { - if x != nil { - return x.MatchExpressions +func (m *VolumePlacementSpec) GetMatchExpressions() []*LabelSelectorRequirement { + if m != nil { + return m.MatchExpressions } return nil } @@ -30240,165 +27033,138 @@ func (x *VolumePlacementSpec) GetMatchExpressions() []*LabelSelectorRequirement // LabelSelectorRequirement is a selector that contains values, a key, and an operator that // relates the key and values. type LabelSelectorRequirement struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Key is the label key that the selector applies to. - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Key string `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"` // Operator represents a key's relationship to a set of values. // Valid operators are In, NotIn, Exists and DoesNotExist. - Operator LabelSelectorRequirement_Operator `protobuf:"varint,2,opt,name=operator,proto3,enum=openstorage.api.LabelSelectorRequirement_Operator" json:"operator,omitempty"` + Operator LabelSelectorRequirement_Operator `protobuf:"varint,2,opt,name=operator,enum=openstorage.api.LabelSelectorRequirement_Operator" json:"operator,omitempty"` // Values is an array of string values. If the operator is In or NotIn, // the values array must be non-empty. If the operator is Exists or DoesNotExist, // the values array must be empty. This array is replaced during a strategic // merge patch. - Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + Values []string `protobuf:"bytes,3,rep,name=values" json:"values,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *LabelSelectorRequirement) Reset() { - *x = LabelSelectorRequirement{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[394] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *LabelSelectorRequirement) Reset() { *m = LabelSelectorRequirement{} } +func (m *LabelSelectorRequirement) String() string { return proto.CompactTextString(m) } +func (*LabelSelectorRequirement) ProtoMessage() {} +func (*LabelSelectorRequirement) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{377} } - -func (x *LabelSelectorRequirement) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *LabelSelectorRequirement) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_LabelSelectorRequirement.Unmarshal(m, b) } - -func (*LabelSelectorRequirement) ProtoMessage() {} - -func (x *LabelSelectorRequirement) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[394] - 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) +func (m *LabelSelectorRequirement) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_LabelSelectorRequirement.Marshal(b, m, deterministic) } - -// Deprecated: Use LabelSelectorRequirement.ProtoReflect.Descriptor instead. -func (*LabelSelectorRequirement) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{394} +func (dst *LabelSelectorRequirement) XXX_Merge(src proto.Message) { + xxx_messageInfo_LabelSelectorRequirement.Merge(dst, src) +} +func (m *LabelSelectorRequirement) XXX_Size() int { + return xxx_messageInfo_LabelSelectorRequirement.Size(m) } +func (m *LabelSelectorRequirement) XXX_DiscardUnknown() { + xxx_messageInfo_LabelSelectorRequirement.DiscardUnknown(m) +} + +var xxx_messageInfo_LabelSelectorRequirement proto.InternalMessageInfo -func (x *LabelSelectorRequirement) GetKey() string { - if x != nil { - return x.Key +func (m *LabelSelectorRequirement) GetKey() string { + if m != nil { + return m.Key } return "" } -func (x *LabelSelectorRequirement) GetOperator() LabelSelectorRequirement_Operator { - if x != nil { - return x.Operator +func (m *LabelSelectorRequirement) GetOperator() LabelSelectorRequirement_Operator { + if m != nil { + return m.Operator } return LabelSelectorRequirement_In } -func (x *LabelSelectorRequirement) GetValues() []string { - if x != nil { - return x.Values +func (m *LabelSelectorRequirement) GetValues() []string { + if m != nil { + return m.Values } return nil } type RestoreVolSnashotSchedule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Schedule string `protobuf:"bytes,1,opt,name=schedule,proto3" json:"schedule,omitempty"` + Schedule string `protobuf:"bytes,1,opt,name=schedule" json:"schedule,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *RestoreVolSnashotSchedule) Reset() { - *x = RestoreVolSnashotSchedule{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[395] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *RestoreVolSnashotSchedule) Reset() { *m = RestoreVolSnashotSchedule{} } +func (m *RestoreVolSnashotSchedule) String() string { return proto.CompactTextString(m) } +func (*RestoreVolSnashotSchedule) ProtoMessage() {} +func (*RestoreVolSnashotSchedule) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{378} } - -func (x *RestoreVolSnashotSchedule) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *RestoreVolSnashotSchedule) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_RestoreVolSnashotSchedule.Unmarshal(m, b) } - -func (*RestoreVolSnashotSchedule) ProtoMessage() {} - -func (x *RestoreVolSnashotSchedule) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[395] - 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) +func (m *RestoreVolSnashotSchedule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_RestoreVolSnashotSchedule.Marshal(b, m, deterministic) } - -// Deprecated: Use RestoreVolSnashotSchedule.ProtoReflect.Descriptor instead. -func (*RestoreVolSnashotSchedule) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{395} +func (dst *RestoreVolSnashotSchedule) XXX_Merge(src proto.Message) { + xxx_messageInfo_RestoreVolSnashotSchedule.Merge(dst, src) +} +func (m *RestoreVolSnashotSchedule) XXX_Size() int { + return xxx_messageInfo_RestoreVolSnashotSchedule.Size(m) } +func (m *RestoreVolSnashotSchedule) XXX_DiscardUnknown() { + xxx_messageInfo_RestoreVolSnashotSchedule.DiscardUnknown(m) +} + +var xxx_messageInfo_RestoreVolSnashotSchedule proto.InternalMessageInfo -func (x *RestoreVolSnashotSchedule) GetSchedule() string { - if x != nil { - return x.Schedule +func (m *RestoreVolSnashotSchedule) GetSchedule() string { + if m != nil { + return m.Schedule } return "" } type RestoreVolStoragePolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Policy string `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"` + Policy string `protobuf:"bytes,1,opt,name=policy" json:"policy,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *RestoreVolStoragePolicy) Reset() { - *x = RestoreVolStoragePolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[396] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (m *RestoreVolStoragePolicy) Reset() { *m = RestoreVolStoragePolicy{} } +func (m *RestoreVolStoragePolicy) String() string { return proto.CompactTextString(m) } +func (*RestoreVolStoragePolicy) ProtoMessage() {} +func (*RestoreVolStoragePolicy) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{379} } - -func (x *RestoreVolStoragePolicy) String() string { - return protoimpl.X.MessageStringOf(x) +func (m *RestoreVolStoragePolicy) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_RestoreVolStoragePolicy.Unmarshal(m, b) } - -func (*RestoreVolStoragePolicy) ProtoMessage() {} - -func (x *RestoreVolStoragePolicy) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[396] - 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) +func (m *RestoreVolStoragePolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_RestoreVolStoragePolicy.Marshal(b, m, deterministic) } - -// Deprecated: Use RestoreVolStoragePolicy.ProtoReflect.Descriptor instead. -func (*RestoreVolStoragePolicy) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{396} +func (dst *RestoreVolStoragePolicy) XXX_Merge(src proto.Message) { + xxx_messageInfo_RestoreVolStoragePolicy.Merge(dst, src) +} +func (m *RestoreVolStoragePolicy) XXX_Size() int { + return xxx_messageInfo_RestoreVolStoragePolicy.Size(m) } +func (m *RestoreVolStoragePolicy) XXX_DiscardUnknown() { + xxx_messageInfo_RestoreVolStoragePolicy.DiscardUnknown(m) +} + +var xxx_messageInfo_RestoreVolStoragePolicy proto.InternalMessageInfo -func (x *RestoreVolStoragePolicy) GetPolicy() string { - if x != nil { - return x.Policy +func (m *RestoreVolStoragePolicy) GetPolicy() string { + if m != nil { + return m.Policy } return "" } @@ -30407,13274 +27173,916 @@ func (x *RestoreVolStoragePolicy) GetPolicy() string { // while restoring the cloud baackup. All pointer fields with nil value will // inherit corresponding field value from backup's spec. type RestoreVolumeSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // HaLevel specifies the number of copies of data. - HaLevel int64 `protobuf:"varint,1,opt,name=ha_level,json=haLevel,proto3" json:"ha_level,omitempty"` + HaLevel int64 `protobuf:"varint,1,opt,name=ha_level,json=haLevel" json:"ha_level,omitempty"` // Cos specifies the relative class of service. - Cos CosType `protobuf:"varint,2,opt,name=cos,proto3,enum=openstorage.api.CosType" json:"cos,omitempty"` + Cos CosType `protobuf:"varint,2,opt,name=cos,enum=openstorage.api.CosType" json:"cos,omitempty"` // IoProfile provides a hint about application using this volume. This field // is ignored if IoProfileBkupSrc is set true - IoProfile IoProfile `protobuf:"varint,3,opt,name=io_profile,json=ioProfile,proto3,enum=openstorage.api.IoProfile" json:"io_profile,omitempty"` + IoProfile IoProfile `protobuf:"varint,3,opt,name=io_profile,json=ioProfile,enum=openstorage.api.IoProfile" json:"io_profile,omitempty"` // SnapshotInterval in minutes, set to 0 to disable snapshots - SnapshotInterval uint32 `protobuf:"varint,4,opt,name=snapshot_interval,json=snapshotInterval,proto3" json:"snapshot_interval,omitempty"` + SnapshotInterval uint32 `protobuf:"varint,4,opt,name=snapshot_interval,json=snapshotInterval" json:"snapshot_interval,omitempty"` // Shared is true if this volume can be concurrently accessed by multiple users. - Shared RestoreParamBoolType `protobuf:"varint,5,opt,name=shared,proto3,enum=openstorage.api.RestoreParamBoolType" json:"shared,omitempty"` + Shared RestoreParamBoolType `protobuf:"varint,5,opt,name=shared,enum=openstorage.api.RestoreParamBoolType" json:"shared,omitempty"` // ReplicaSet is the desired set of nodes for the volume data. - ReplicaSet *ReplicaSet `protobuf:"bytes,6,opt,name=replica_set,json=replicaSet,proto3" json:"replica_set,omitempty"` + ReplicaSet *ReplicaSet `protobuf:"bytes,6,opt,name=replica_set,json=replicaSet" json:"replica_set,omitempty"` // Aggregation level Specifies the number of parts the volume can be aggregated from. - AggregationLevel uint32 `protobuf:"varint,7,opt,name=aggregation_level,json=aggregationLevel,proto3" json:"aggregation_level,omitempty"` + AggregationLevel uint32 `protobuf:"varint,7,opt,name=aggregation_level,json=aggregationLevel" json:"aggregation_level,omitempty"` // SnapshotSchedule a well known string that specifies when snapshots should be taken. - SnapshotSchedule *RestoreVolSnashotSchedule `protobuf:"bytes,8,opt,name=snapshot_schedule,json=snapshotSchedule,proto3" json:"snapshot_schedule,omitempty"` + SnapshotSchedule *RestoreVolSnashotSchedule `protobuf:"bytes,8,opt,name=snapshot_schedule,json=snapshotSchedule" json:"snapshot_schedule,omitempty"` // Sticky volumes cannot be deleted until the flag is removed. - Sticky RestoreParamBoolType `protobuf:"varint,9,opt,name=sticky,proto3,enum=openstorage.api.RestoreParamBoolType" json:"sticky,omitempty"` + Sticky RestoreParamBoolType `protobuf:"varint,9,opt,name=sticky,enum=openstorage.api.RestoreParamBoolType" json:"sticky,omitempty"` // Group identifies a consistency group - Group *Group `protobuf:"bytes,10,opt,name=group,proto3" json:"group,omitempty"` + Group *Group `protobuf:"bytes,10,opt,name=group" json:"group,omitempty"` // GroupEnforced is true if consistency group creation is enforced. - GroupEnforced bool `protobuf:"varint,11,opt,name=group_enforced,json=groupEnforced,proto3" json:"group_enforced,omitempty"` + GroupEnforced bool `protobuf:"varint,11,opt,name=group_enforced,json=groupEnforced" json:"group_enforced,omitempty"` // Journal is true if data for the volume goes into the journal. - Journal RestoreParamBoolType `protobuf:"varint,12,opt,name=journal,proto3,enum=openstorage.api.RestoreParamBoolType" json:"journal,omitempty"` + Journal RestoreParamBoolType `protobuf:"varint,12,opt,name=journal,enum=openstorage.api.RestoreParamBoolType" json:"journal,omitempty"` // Sharedv4 is true if this volume can be accessed via sharedv4. - Sharedv4 RestoreParamBoolType `protobuf:"varint,13,opt,name=sharedv4,proto3,enum=openstorage.api.RestoreParamBoolType" json:"sharedv4,omitempty"` + Sharedv4 RestoreParamBoolType `protobuf:"varint,13,opt,name=sharedv4,enum=openstorage.api.RestoreParamBoolType" json:"sharedv4,omitempty"` // QueueDepth defines the desired block device queue depth - QueueDepth uint32 `protobuf:"varint,14,opt,name=queue_depth,json=queueDepth,proto3" json:"queue_depth,omitempty"` + QueueDepth uint32 `protobuf:"varint,14,opt,name=queue_depth,json=queueDepth" json:"queue_depth,omitempty"` // Nodiscard specifies if the volume will be mounted with discard support disabled. // i.e. FS will not release allocated blocks back to the backing storage pool. - Nodiscard RestoreParamBoolType `protobuf:"varint,15,opt,name=nodiscard,proto3,enum=openstorage.api.RestoreParamBoolType" json:"nodiscard,omitempty"` + Nodiscard RestoreParamBoolType `protobuf:"varint,15,opt,name=nodiscard,enum=openstorage.api.RestoreParamBoolType" json:"nodiscard,omitempty"` // IoStrategy preferred strategy for I/O. - IoStrategy *IoStrategy `protobuf:"bytes,16,opt,name=io_strategy,json=ioStrategy,proto3" json:"io_strategy,omitempty"` + IoStrategy *IoStrategy `protobuf:"bytes,16,opt,name=io_strategy,json=ioStrategy" json:"io_strategy,omitempty"` // PlacementStrategy specifies a spec to indicate where to place the volume. - PlacementStrategy *VolumePlacementStrategy `protobuf:"bytes,17,opt,name=placement_strategy,json=placementStrategy,proto3" json:"placement_strategy,omitempty"` + PlacementStrategy *VolumePlacementStrategy `protobuf:"bytes,17,opt,name=placement_strategy,json=placementStrategy" json:"placement_strategy,omitempty"` // StoragePolicy if applied/specified while creating volume - StoragePolicy *RestoreVolStoragePolicy `protobuf:"bytes,18,opt,name=storage_policy,json=storagePolicy,proto3" json:"storage_policy,omitempty"` + StoragePolicy *RestoreVolStoragePolicy `protobuf:"bytes,18,opt,name=storage_policy,json=storagePolicy" json:"storage_policy,omitempty"` // Ownership - Ownership *Ownership `protobuf:"bytes,19,opt,name=ownership,proto3" json:"ownership,omitempty"` + Ownership *Ownership `protobuf:"bytes,19,opt,name=ownership" json:"ownership,omitempty"` // ExportSpec defines how the volume should be exported. - ExportSpec *ExportSpec `protobuf:"bytes,20,opt,name=export_spec,json=exportSpec,proto3" json:"export_spec,omitempty"` + ExportSpec *ExportSpec `protobuf:"bytes,20,opt,name=export_spec,json=exportSpec" json:"export_spec,omitempty"` // fastpath extensions - FpPreference RestoreParamBoolType `protobuf:"varint,21,opt,name=fp_preference,json=fpPreference,proto3,enum=openstorage.api.RestoreParamBoolType" json:"fp_preference,omitempty"` + FpPreference RestoreParamBoolType `protobuf:"varint,21,opt,name=fp_preference,json=fpPreference,enum=openstorage.api.RestoreParamBoolType" json:"fp_preference,omitempty"` // MountOptions defines the options that should be used while mounting this volume - MountOptions *MountOptions `protobuf:"bytes,22,opt,name=mount_options,json=mountOptions,proto3" json:"mount_options,omitempty"` + MountOptions *MountOptions `protobuf:"bytes,22,opt,name=mount_options,json=mountOptions" json:"mount_options,omitempty"` // Sharedv4MountOptions defines the options that will be used while mounting a sharedv4 volume // from a node where the volume replica does not exist - Sharedv4MountOptions *MountOptions `protobuf:"bytes,23,opt,name=sharedv4_mount_options,json=sharedv4MountOptions,proto3" json:"sharedv4_mount_options,omitempty"` + Sharedv4MountOptions *MountOptions `protobuf:"bytes,23,opt,name=sharedv4_mount_options,json=sharedv4MountOptions" json:"sharedv4_mount_options,omitempty"` // Proxy_write is true if proxy write replication is enabled for the volume - ProxyWrite RestoreParamBoolType `protobuf:"varint,24,opt,name=proxy_write,json=proxyWrite,proto3,enum=openstorage.api.RestoreParamBoolType" json:"proxy_write,omitempty"` + ProxyWrite RestoreParamBoolType `protobuf:"varint,24,opt,name=proxy_write,json=proxyWrite,enum=openstorage.api.RestoreParamBoolType" json:"proxy_write,omitempty"` // IoProfileBkupSrc indicates to inherit IoProfile from cloudbackup - IoProfileBkupSrc bool `protobuf:"varint,25,opt,name=io_profile_bkup_src,json=ioProfileBkupSrc,proto3" json:"io_profile_bkup_src,omitempty"` + IoProfileBkupSrc bool `protobuf:"varint,25,opt,name=io_profile_bkup_src,json=ioProfileBkupSrc" json:"io_profile_bkup_src,omitempty"` // ProxySpec indicates that this volume is used for proxying an external data source - ProxySpec *ProxySpec `protobuf:"bytes,26,opt,name=proxy_spec,json=proxySpec,proto3" json:"proxy_spec,omitempty"` + ProxySpec *ProxySpec `protobuf:"bytes,26,opt,name=proxy_spec,json=proxySpec" json:"proxy_spec,omitempty"` // Sharedv4ServiceSpec specifies a spec for configuring a service for a sharedv4 volume - Sharedv4ServiceSpec *Sharedv4ServiceSpec `protobuf:"bytes,27,opt,name=sharedv4_service_spec,json=sharedv4ServiceSpec,proto3" json:"sharedv4_service_spec,omitempty"` + Sharedv4ServiceSpec *Sharedv4ServiceSpec `protobuf:"bytes,27,opt,name=sharedv4_service_spec,json=sharedv4ServiceSpec" json:"sharedv4_service_spec,omitempty"` // Sharedv4Spec specifies common properties of sharedv4 and sharedv4 service volumes - Sharedv4Spec *Sharedv4Spec `protobuf:"bytes,28,opt,name=sharedv4_spec,json=sharedv4Spec,proto3" json:"sharedv4_spec,omitempty"` + Sharedv4Spec *Sharedv4Spec `protobuf:"bytes,28,opt,name=sharedv4_spec,json=sharedv4Spec" json:"sharedv4_spec,omitempty"` // Autofstrim is true if automatic fstrim is enabled for the volume - AutoFstrim RestoreParamBoolType `protobuf:"varint,29,opt,name=auto_fstrim,json=autoFstrim,proto3,enum=openstorage.api.RestoreParamBoolType" json:"auto_fstrim,omitempty"` + AutoFstrim RestoreParamBoolType `protobuf:"varint,29,opt,name=auto_fstrim,json=autoFstrim,enum=openstorage.api.RestoreParamBoolType" json:"auto_fstrim,omitempty"` // IoThrottle specifies maximum io(iops/bandwidth) this volume is restricted to - IoThrottle *IoThrottle `protobuf:"bytes,30,opt,name=io_throttle,json=ioThrottle,proto3" json:"io_throttle,omitempty"` - // Enable readahead for the volume - Readahead RestoreParamBoolType `protobuf:"varint,31,opt,name=readahead,proto3,enum=openstorage.api.RestoreParamBoolType" json:"readahead,omitempty"` -} - -func (x *RestoreVolumeSpec) Reset() { - *x = RestoreVolumeSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[397] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RestoreVolumeSpec) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RestoreVolumeSpec) ProtoMessage() {} - -func (x *RestoreVolumeSpec) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[397] - 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) + IoThrottle *IoThrottle `protobuf:"bytes,30,opt,name=io_throttle,json=ioThrottle" json:"io_throttle,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -// Deprecated: Use RestoreVolumeSpec.ProtoReflect.Descriptor instead. +func (m *RestoreVolumeSpec) Reset() { *m = RestoreVolumeSpec{} } +func (m *RestoreVolumeSpec) String() string { return proto.CompactTextString(m) } +func (*RestoreVolumeSpec) ProtoMessage() {} func (*RestoreVolumeSpec) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{397} + return fileDescriptor_api_bc0eb0e06839944e, []int{380} } - -func (x *RestoreVolumeSpec) GetHaLevel() int64 { - if x != nil { - return x.HaLevel - } - return 0 +func (m *RestoreVolumeSpec) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_RestoreVolumeSpec.Unmarshal(m, b) } - -func (x *RestoreVolumeSpec) GetCos() CosType { - if x != nil { - return x.Cos - } - return CosType_NONE +func (m *RestoreVolumeSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_RestoreVolumeSpec.Marshal(b, m, deterministic) } - -func (x *RestoreVolumeSpec) GetIoProfile() IoProfile { - if x != nil { - return x.IoProfile - } - return IoProfile_IO_PROFILE_SEQUENTIAL +func (dst *RestoreVolumeSpec) XXX_Merge(src proto.Message) { + xxx_messageInfo_RestoreVolumeSpec.Merge(dst, src) } - -func (x *RestoreVolumeSpec) GetSnapshotInterval() uint32 { - if x != nil { - return x.SnapshotInterval - } - return 0 +func (m *RestoreVolumeSpec) XXX_Size() int { + return xxx_messageInfo_RestoreVolumeSpec.Size(m) } - -func (x *RestoreVolumeSpec) GetShared() RestoreParamBoolType { - if x != nil { - return x.Shared - } - return RestoreParamBoolType_PARAM_BKUPSRC +func (m *RestoreVolumeSpec) XXX_DiscardUnknown() { + xxx_messageInfo_RestoreVolumeSpec.DiscardUnknown(m) } -func (x *RestoreVolumeSpec) GetReplicaSet() *ReplicaSet { - if x != nil { - return x.ReplicaSet - } - return nil -} +var xxx_messageInfo_RestoreVolumeSpec proto.InternalMessageInfo -func (x *RestoreVolumeSpec) GetAggregationLevel() uint32 { - if x != nil { - return x.AggregationLevel +func (m *RestoreVolumeSpec) GetHaLevel() int64 { + if m != nil { + return m.HaLevel } return 0 } -func (x *RestoreVolumeSpec) GetSnapshotSchedule() *RestoreVolSnashotSchedule { - if x != nil { - return x.SnapshotSchedule - } - return nil -} - -func (x *RestoreVolumeSpec) GetSticky() RestoreParamBoolType { - if x != nil { - return x.Sticky - } - return RestoreParamBoolType_PARAM_BKUPSRC -} - -func (x *RestoreVolumeSpec) GetGroup() *Group { - if x != nil { - return x.Group - } - return nil -} - -func (x *RestoreVolumeSpec) GetGroupEnforced() bool { - if x != nil { - return x.GroupEnforced - } - return false -} - -func (x *RestoreVolumeSpec) GetJournal() RestoreParamBoolType { - if x != nil { - return x.Journal +func (m *RestoreVolumeSpec) GetCos() CosType { + if m != nil { + return m.Cos } - return RestoreParamBoolType_PARAM_BKUPSRC + return CosType_NONE } -func (x *RestoreVolumeSpec) GetSharedv4() RestoreParamBoolType { - if x != nil { - return x.Sharedv4 +func (m *RestoreVolumeSpec) GetIoProfile() IoProfile { + if m != nil { + return m.IoProfile } - return RestoreParamBoolType_PARAM_BKUPSRC + return IoProfile_IO_PROFILE_SEQUENTIAL } -func (x *RestoreVolumeSpec) GetQueueDepth() uint32 { - if x != nil { - return x.QueueDepth +func (m *RestoreVolumeSpec) GetSnapshotInterval() uint32 { + if m != nil { + return m.SnapshotInterval } return 0 } -func (x *RestoreVolumeSpec) GetNodiscard() RestoreParamBoolType { - if x != nil { - return x.Nodiscard - } - return RestoreParamBoolType_PARAM_BKUPSRC -} - -func (x *RestoreVolumeSpec) GetIoStrategy() *IoStrategy { - if x != nil { - return x.IoStrategy - } - return nil -} - -func (x *RestoreVolumeSpec) GetPlacementStrategy() *VolumePlacementStrategy { - if x != nil { - return x.PlacementStrategy - } - return nil -} - -func (x *RestoreVolumeSpec) GetStoragePolicy() *RestoreVolStoragePolicy { - if x != nil { - return x.StoragePolicy - } - return nil -} - -func (x *RestoreVolumeSpec) GetOwnership() *Ownership { - if x != nil { - return x.Ownership - } - return nil -} - -func (x *RestoreVolumeSpec) GetExportSpec() *ExportSpec { - if x != nil { - return x.ExportSpec - } - return nil -} - -func (x *RestoreVolumeSpec) GetFpPreference() RestoreParamBoolType { - if x != nil { - return x.FpPreference +func (m *RestoreVolumeSpec) GetShared() RestoreParamBoolType { + if m != nil { + return m.Shared } return RestoreParamBoolType_PARAM_BKUPSRC } -func (x *RestoreVolumeSpec) GetMountOptions() *MountOptions { - if x != nil { - return x.MountOptions - } - return nil -} - -func (x *RestoreVolumeSpec) GetSharedv4MountOptions() *MountOptions { - if x != nil { - return x.Sharedv4MountOptions +func (m *RestoreVolumeSpec) GetReplicaSet() *ReplicaSet { + if m != nil { + return m.ReplicaSet } return nil } -func (x *RestoreVolumeSpec) GetProxyWrite() RestoreParamBoolType { - if x != nil { - return x.ProxyWrite +func (m *RestoreVolumeSpec) GetAggregationLevel() uint32 { + if m != nil { + return m.AggregationLevel } - return RestoreParamBoolType_PARAM_BKUPSRC + return 0 } -func (x *RestoreVolumeSpec) GetIoProfileBkupSrc() bool { - if x != nil { - return x.IoProfileBkupSrc - } - return false -} - -func (x *RestoreVolumeSpec) GetProxySpec() *ProxySpec { - if x != nil { - return x.ProxySpec - } - return nil -} - -func (x *RestoreVolumeSpec) GetSharedv4ServiceSpec() *Sharedv4ServiceSpec { - if x != nil { - return x.Sharedv4ServiceSpec - } - return nil -} - -func (x *RestoreVolumeSpec) GetSharedv4Spec() *Sharedv4Spec { - if x != nil { - return x.Sharedv4Spec - } - return nil -} - -func (x *RestoreVolumeSpec) GetAutoFstrim() RestoreParamBoolType { - if x != nil { - return x.AutoFstrim - } - return RestoreParamBoolType_PARAM_BKUPSRC -} - -func (x *RestoreVolumeSpec) GetIoThrottle() *IoThrottle { - if x != nil { - return x.IoThrottle - } - return nil -} - -func (x *RestoreVolumeSpec) GetReadahead() RestoreParamBoolType { - if x != nil { - return x.Readahead - } - return RestoreParamBoolType_PARAM_BKUPSRC -} - -// Request message to get the volume catalog -type SdkVolumeCatalogRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // VolumeId of the volume that is getting it's catalog retrieved. - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` - // Path which will be used as root (default is the actual root) - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` - // Depth of folders/files retrieved (default is all of it, 1 would only return 1 layer) - Depth string `protobuf:"bytes,3,opt,name=depth,proto3" json:"depth,omitempty"` -} - -func (x *SdkVolumeCatalogRequest) Reset() { - *x = SdkVolumeCatalogRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[398] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SdkVolumeCatalogRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SdkVolumeCatalogRequest) ProtoMessage() {} - -func (x *SdkVolumeCatalogRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[398] - 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 SdkVolumeCatalogRequest.ProtoReflect.Descriptor instead. -func (*SdkVolumeCatalogRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{398} -} - -func (x *SdkVolumeCatalogRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId - } - return "" -} - -func (x *SdkVolumeCatalogRequest) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *SdkVolumeCatalogRequest) GetDepth() string { - if x != nil { - return x.Depth - } - return "" -} - -// Response message to get volume catalog -type SdkVolumeCatalogResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Catalog - Catalog *CatalogResponse `protobuf:"bytes,1,opt,name=catalog,proto3" json:"catalog,omitempty"` -} - -func (x *SdkVolumeCatalogResponse) Reset() { - *x = SdkVolumeCatalogResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[399] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SdkVolumeCatalogResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SdkVolumeCatalogResponse) ProtoMessage() {} - -func (x *SdkVolumeCatalogResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[399] - 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 SdkVolumeCatalogResponse.ProtoReflect.Descriptor instead. -func (*SdkVolumeCatalogResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{399} -} - -func (x *SdkVolumeCatalogResponse) GetCatalog() *CatalogResponse { - if x != nil { - return x.Catalog - } - return nil -} - -type VerifyChecksum struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *VerifyChecksum) Reset() { - *x = VerifyChecksum{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[400] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *VerifyChecksum) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VerifyChecksum) ProtoMessage() {} - -func (x *VerifyChecksum) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[400] - 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 VerifyChecksum.ProtoReflect.Descriptor instead. -func (*VerifyChecksum) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{400} -} - -// SdkVerifyChecksumStartRequest defines a request to start a background verify checksum operation -type SdkVerifyChecksumStartRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Id of the volume - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` -} - -func (x *SdkVerifyChecksumStartRequest) Reset() { - *x = SdkVerifyChecksumStartRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[401] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SdkVerifyChecksumStartRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SdkVerifyChecksumStartRequest) ProtoMessage() {} - -func (x *SdkVerifyChecksumStartRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[401] - 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 SdkVerifyChecksumStartRequest.ProtoReflect.Descriptor instead. -func (*SdkVerifyChecksumStartRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{401} -} - -func (x *SdkVerifyChecksumStartRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId - } - return "" -} - -// SdkVerifyChecksumStartResponse defines the response for a -// SdkVerifyChecksumStartRequest. -type SdkVerifyChecksumStartResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Status code representing the state of the verify checksum operation - Status VerifyChecksum_VerifyChecksumStatus `protobuf:"varint,1,opt,name=status,proto3,enum=openstorage.api.VerifyChecksum_VerifyChecksumStatus" json:"status,omitempty"` - // Text blob containing ASCII text providing details of the operation - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` -} - -func (x *SdkVerifyChecksumStartResponse) Reset() { - *x = SdkVerifyChecksumStartResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[402] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SdkVerifyChecksumStartResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SdkVerifyChecksumStartResponse) ProtoMessage() {} - -func (x *SdkVerifyChecksumStartResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[402] - 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 SdkVerifyChecksumStartResponse.ProtoReflect.Descriptor instead. -func (*SdkVerifyChecksumStartResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{402} -} - -func (x *SdkVerifyChecksumStartResponse) GetStatus() VerifyChecksum_VerifyChecksumStatus { - if x != nil { - return x.Status - } - return VerifyChecksum_VERIFY_CHECKSUM_UNKNOWN -} - -func (x *SdkVerifyChecksumStartResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -// SdkVerifyChecksumStatusRequest defines a request to get status of a -// background VerifyChecksum operation -type SdkVerifyChecksumStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Id of the volume - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` -} - -func (x *SdkVerifyChecksumStatusRequest) Reset() { - *x = SdkVerifyChecksumStatusRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[403] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SdkVerifyChecksumStatusRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SdkVerifyChecksumStatusRequest) ProtoMessage() {} - -func (x *SdkVerifyChecksumStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[403] - 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 SdkVerifyChecksumStatusRequest.ProtoReflect.Descriptor instead. -func (*SdkVerifyChecksumStatusRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{403} -} - -func (x *SdkVerifyChecksumStatusRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId - } - return "" -} - -// SdkVerifyChecksumStatusResponse defines the response for a -// SdkVerifyChecksumStatusRequest. -type SdkVerifyChecksumStatusResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Status code representing the state of the verify checksum operation - Status VerifyChecksum_VerifyChecksumStatus `protobuf:"varint,1,opt,name=status,proto3,enum=openstorage.api.VerifyChecksum_VerifyChecksumStatus" json:"status,omitempty"` - // Text blob containing ASCII text providing details of the operation - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` -} - -func (x *SdkVerifyChecksumStatusResponse) Reset() { - *x = SdkVerifyChecksumStatusResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[404] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SdkVerifyChecksumStatusResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SdkVerifyChecksumStatusResponse) ProtoMessage() {} - -func (x *SdkVerifyChecksumStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[404] - 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 SdkVerifyChecksumStatusResponse.ProtoReflect.Descriptor instead. -func (*SdkVerifyChecksumStatusResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{404} -} - -func (x *SdkVerifyChecksumStatusResponse) GetStatus() VerifyChecksum_VerifyChecksumStatus { - if x != nil { - return x.Status - } - return VerifyChecksum_VERIFY_CHECKSUM_UNKNOWN -} - -func (x *SdkVerifyChecksumStatusResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -// SdkVerifyChecksumStopRequest defines a request to stop a background -// filesystem check operation -type SdkVerifyChecksumStopRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Id of the volume - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` -} - -func (x *SdkVerifyChecksumStopRequest) Reset() { - *x = SdkVerifyChecksumStopRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[405] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SdkVerifyChecksumStopRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SdkVerifyChecksumStopRequest) ProtoMessage() {} - -func (x *SdkVerifyChecksumStopRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[405] - 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 SdkVerifyChecksumStopRequest.ProtoReflect.Descriptor instead. -func (*SdkVerifyChecksumStopRequest) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{405} -} - -func (x *SdkVerifyChecksumStopRequest) GetVolumeId() string { - if x != nil { - return x.VolumeId - } - return "" -} - -// SdkVerifyChecksumStopResponse defines the response for a -// SdkVerifyChecksumStopRequest. -type SdkVerifyChecksumStopResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Text blob containing ASCII text providing details of the operation - Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` -} - -func (x *SdkVerifyChecksumStopResponse) Reset() { - *x = SdkVerifyChecksumStopResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[406] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SdkVerifyChecksumStopResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SdkVerifyChecksumStopResponse) ProtoMessage() {} - -func (x *SdkVerifyChecksumStopResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[406] - 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 SdkVerifyChecksumStopResponse.ProtoReflect.Descriptor instead. -func (*SdkVerifyChecksumStopResponse) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{406} -} - -func (x *SdkVerifyChecksumStopResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -// PublicAccessControl allows assigning public ownership -type Ownership_PublicAccessControl struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // AccessType declares which level of public access is allowed - Type Ownership_AccessType `protobuf:"varint,1,opt,name=type,proto3,enum=openstorage.api.Ownership_AccessType" json:"type,omitempty"` -} - -func (x *Ownership_PublicAccessControl) Reset() { - *x = Ownership_PublicAccessControl{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[416] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Ownership_PublicAccessControl) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Ownership_PublicAccessControl) ProtoMessage() {} - -func (x *Ownership_PublicAccessControl) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[416] - 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 Ownership_PublicAccessControl.ProtoReflect.Descriptor instead. -func (*Ownership_PublicAccessControl) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{31, 0} -} - -func (x *Ownership_PublicAccessControl) GetType() Ownership_AccessType { - if x != nil { - return x.Type - } - return Ownership_Read -} - -type Ownership_AccessControl struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Group access to resource which must match the group set in the - // authorization token. - // Can be set by the owner or the system administrator only. - // Possible values are: - // 1. no groups: Means no groups are given access. - // 2. `["*"]`: All groups are allowed. - // 3. `["group1", "group2"]`: Only certain groups are allowed. In this example only - // _group1_ and _group2_ are allowed. - Groups map[string]Ownership_AccessType `protobuf:"bytes,1,rep,name=groups,proto3" json:"groups,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=openstorage.api.Ownership_AccessType"` - // Collaborator access to resource gives access to other user. - // Must be the username (unique id) set in the authorization token. - // The owner or the administrator can set this value. Possible values are: - // 1. no collaborators: Means no users are given access. - // 2. `["*"]`: All users are allowed. - // 3. `["username1", "username2"]`: Only certain usernames are allowed. In this example only - // _username1_ and _username2_ are allowed. - Collaborators map[string]Ownership_AccessType `protobuf:"bytes,2,rep,name=collaborators,proto3" json:"collaborators,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=openstorage.api.Ownership_AccessType"` - // Public access to resource may be assigned for access by the public userd - Public *Ownership_PublicAccessControl `protobuf:"bytes,3,opt,name=public,proto3" json:"public,omitempty"` -} - -func (x *Ownership_AccessControl) Reset() { - *x = Ownership_AccessControl{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[417] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Ownership_AccessControl) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Ownership_AccessControl) ProtoMessage() {} - -func (x *Ownership_AccessControl) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[417] - 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 Ownership_AccessControl.ProtoReflect.Descriptor instead. -func (*Ownership_AccessControl) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{31, 1} -} - -func (x *Ownership_AccessControl) GetGroups() map[string]Ownership_AccessType { - if x != nil { - return x.Groups - } - return nil -} - -func (x *Ownership_AccessControl) GetCollaborators() map[string]Ownership_AccessType { - if x != nil { - return x.Collaborators - } - return nil -} - -func (x *Ownership_AccessControl) GetPublic() *Ownership_PublicAccessControl { - if x != nil { - return x.Public - } - return nil -} - -type SdkServiceCapability_OpenStorageService struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Type of service supported - Type SdkServiceCapability_OpenStorageService_Type `protobuf:"varint,1,opt,name=type,proto3,enum=openstorage.api.SdkServiceCapability_OpenStorageService_Type" json:"type,omitempty"` -} - -func (x *SdkServiceCapability_OpenStorageService) Reset() { - *x = SdkServiceCapability_OpenStorageService{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[454] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SdkServiceCapability_OpenStorageService) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SdkServiceCapability_OpenStorageService) ProtoMessage() {} - -func (x *SdkServiceCapability_OpenStorageService) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[454] - 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 SdkServiceCapability_OpenStorageService.ProtoReflect.Descriptor instead. -func (*SdkServiceCapability_OpenStorageService) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{349, 0} -} - -func (x *SdkServiceCapability_OpenStorageService) GetType() SdkServiceCapability_OpenStorageService_Type { - if x != nil { - return x.Type - } - return SdkServiceCapability_OpenStorageService_UNKNOWN -} - -// Defines a migration request for a volume -type SdkCloudMigrateStartRequest_MigrateVolume struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` -} - -func (x *SdkCloudMigrateStartRequest_MigrateVolume) Reset() { - *x = SdkCloudMigrateStartRequest_MigrateVolume{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[456] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SdkCloudMigrateStartRequest_MigrateVolume) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SdkCloudMigrateStartRequest_MigrateVolume) ProtoMessage() {} - -func (x *SdkCloudMigrateStartRequest_MigrateVolume) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[456] - 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 SdkCloudMigrateStartRequest_MigrateVolume.ProtoReflect.Descriptor instead. -func (*SdkCloudMigrateStartRequest_MigrateVolume) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{354, 0} -} - -func (x *SdkCloudMigrateStartRequest_MigrateVolume) GetVolumeId() string { - if x != nil { - return x.VolumeId - } - return "" -} - -// Defines a migration request for a volume group -type SdkCloudMigrateStartRequest_MigrateVolumeGroup struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GroupId string `protobuf:"bytes,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` -} - -func (x *SdkCloudMigrateStartRequest_MigrateVolumeGroup) Reset() { - *x = SdkCloudMigrateStartRequest_MigrateVolumeGroup{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[457] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SdkCloudMigrateStartRequest_MigrateVolumeGroup) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SdkCloudMigrateStartRequest_MigrateVolumeGroup) ProtoMessage() {} - -func (x *SdkCloudMigrateStartRequest_MigrateVolumeGroup) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[457] - 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 SdkCloudMigrateStartRequest_MigrateVolumeGroup.ProtoReflect.Descriptor instead. -func (*SdkCloudMigrateStartRequest_MigrateVolumeGroup) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{354, 1} -} - -func (x *SdkCloudMigrateStartRequest_MigrateVolumeGroup) GetGroupId() string { - if x != nil { - return x.GroupId - } - return "" -} - -// Defines a migration request for all volumes in a cluster -type SdkCloudMigrateStartRequest_MigrateAllVolumes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *SdkCloudMigrateStartRequest_MigrateAllVolumes) Reset() { - *x = SdkCloudMigrateStartRequest_MigrateAllVolumes{} - if protoimpl.UnsafeEnabled { - mi := &file_api_api_proto_msgTypes[458] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SdkCloudMigrateStartRequest_MigrateAllVolumes) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SdkCloudMigrateStartRequest_MigrateAllVolumes) ProtoMessage() {} - -func (x *SdkCloudMigrateStartRequest_MigrateAllVolumes) ProtoReflect() protoreflect.Message { - mi := &file_api_api_proto_msgTypes[458] - 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 SdkCloudMigrateStartRequest_MigrateAllVolumes.ProtoReflect.Descriptor instead. -func (*SdkCloudMigrateStartRequest_MigrateAllVolumes) Descriptor() ([]byte, []int) { - return file_api_api_proto_rawDescGZIP(), []int{354, 2} -} - -var File_api_api_proto protoreflect.FileDescriptor - -var file_api_api_proto_rawDesc = []byte{ - 0x0a, 0x0d, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0xf9, 0x03, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x36, 0x0a, 0x06, 0x6d, 0x65, 0x64, 0x69, 0x75, - 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x4d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x52, 0x06, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x12, - 0x16, 0x0a, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x6f, 0x70, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x69, 0x6f, 0x70, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, - 0x65, 0x71, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, - 0x73, 0x65, 0x71, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x65, 0x71, 0x5f, - 0x72, 0x65, 0x61, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x73, 0x65, 0x71, 0x52, - 0x65, 0x61, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x52, 0x57, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x01, 0x52, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x52, 0x57, 0x12, 0x12, 0x0a, 0x04, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x75, - 0x73, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, - 0x73, 0x74, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, - 0x63, 0x61, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, - 0x14, 0x0a, 0x05, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, - 0x63, 0x61, 0x63, 0x68, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x64, 0x65, 0x76, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0f, 0x70, 0x6f, 0x6f, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x65, - 0x76, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x64, 0x72, 0x69, 0x76, 0x65, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x44, 0x72, 0x69, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0xb0, 0x03, 0x0a, 0x0b, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x44, 0x12, 0x2a, 0x0a, 0x03, 0x43, - 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x73, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x03, 0x43, 0x6f, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x4d, 0x65, 0x64, 0x69, 0x75, - 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x4d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x52, 0x06, 0x4d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x12, - 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x69, 0x64, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x52, 0x61, 0x69, 0x64, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c, 0x0a, - 0x09, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x09, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x55, - 0x73, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x55, 0x73, 0x65, 0x64, 0x12, - 0x40, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x2e, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x4c, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 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, 0x96, - 0x01, 0x0a, 0x11, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x54, 0x6f, 0x70, 0x6f, - 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x46, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, - 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 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, 0xba, 0x02, 0x0a, 0x14, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x41, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x64, 0x6b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x2e, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x49, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, - 0x6f, 0x6f, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x12, 0x47, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6f, - 0x6c, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x45, 0x6e, 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, 0x9a, 0x01, 0x0a, 0x13, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, - 0x79, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x06, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, - 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x45, 0x6e, 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, 0xc2, 0x02, 0x0a, 0x0d, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x61, - 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x55, 0x0a, 0x0d, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x38, - 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x09, 0x6f, - 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x2c, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, - 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x49, 0x64, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 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, 0x2a, 0x0a, 0x14, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, - 0x0a, 0x04, 0x64, 0x65, 0x65, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x65, - 0x65, 0x70, 0x22, 0x34, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x65, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x73, 0x65, 0x65, 0x64, 0x22, 0x17, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x22, 0x61, 0x0a, 0x0a, 0x49, 0x6f, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, - 0x19, 0x0a, 0x08, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x69, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x07, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x49, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x61, - 0x72, 0x6c, 0x79, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, - 0x61, 0x72, 0x6c, 0x79, 0x41, 0x63, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x5f, 0x69, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x49, 0x6f, 0x22, 0x34, 0x0a, 0x05, 0x58, 0x61, 0x74, 0x74, 0x72, 0x22, 0x2b, 0x0a, - 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x4f, 0x57, 0x5f, 0x4f, - 0x4e, 0x5f, 0x44, 0x45, 0x4d, 0x41, 0x4e, 0x44, 0x10, 0x01, 0x22, 0x7d, 0x0a, 0x0a, 0x45, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x48, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x4a, 0x0a, 0x0c, 0x4e, 0x46, 0x53, - 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x75, - 0x62, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, - 0x62, 0x50, 0x61, 0x74, 0x68, 0x22, 0x2e, 0x0a, 0x0b, 0x53, 0x33, 0x50, 0x72, 0x6f, 0x78, 0x79, - 0x53, 0x70, 0x65, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x1e, 0x0a, 0x0c, 0x50, 0x58, 0x44, 0x50, 0x72, 0x6f, 0x78, - 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x52, 0x0a, 0x0d, 0x50, 0x75, 0x72, 0x65, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, - 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x72, 0x69, - 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0d, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x6f, - 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x75, - 0x6c, 0x6c, 0x56, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x55, 0x0a, 0x0c, 0x50, 0x75, 0x72, - 0x65, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0d, - 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x56, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, - 0x22, 0xa6, 0x03, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x45, - 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x12, 0x38, 0x0a, 0x08, 0x6e, 0x66, 0x73, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4e, 0x46, 0x53, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x70, - 0x65, 0x63, 0x52, 0x07, 0x6e, 0x66, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x35, 0x0a, 0x07, 0x73, - 0x33, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x33, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x70, 0x65, 0x63, 0x52, 0x06, 0x73, 0x33, 0x53, 0x70, - 0x65, 0x63, 0x12, 0x38, 0x0a, 0x08, 0x70, 0x78, 0x64, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x58, 0x44, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, - 0x70, 0x65, 0x63, 0x52, 0x07, 0x70, 0x78, 0x64, 0x53, 0x70, 0x65, 0x63, 0x12, 0x46, 0x0a, 0x0f, - 0x70, 0x75, 0x72, 0x65, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x75, 0x72, 0x65, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0d, 0x70, 0x75, 0x72, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x53, 0x70, 0x65, 0x63, 0x12, 0x43, 0x0a, 0x0e, 0x70, 0x75, 0x72, 0x65, 0x5f, 0x66, 0x69, 0x6c, - 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, - 0x75, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0c, 0x70, 0x75, 0x72, - 0x65, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x22, 0xf1, 0x01, 0x0a, 0x13, 0x53, 0x68, - 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, - 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x65, - 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x22, 0x57, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x4f, 0x44, 0x45, 0x50, 0x4f, 0x52, 0x54, - 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x49, 0x50, 0x10, - 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4c, 0x4f, 0x41, 0x44, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, - 0x52, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x04, 0x22, 0x50, 0x0a, - 0x18, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, - 0x72, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x22, 0x34, 0x0a, 0x05, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x47, 0x47, 0x52, 0x45, 0x53, 0x53, 0x49, 0x56, - 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x02, 0x22, - 0x6c, 0x0a, 0x0c, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x53, 0x70, 0x65, 0x63, 0x12, - 0x5c, 0x0a, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x61, - 0x74, 0x65, 0x67, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x68, 0x61, - 0x72, 0x65, 0x64, 0x76, 0x34, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, - 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x66, 0x61, 0x69, - 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x22, 0x90, 0x01, - 0x0a, 0x0c, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x44, - 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, - 0x6e, 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, 0xda, 0x02, 0x0a, 0x11, 0x46, 0x61, 0x73, 0x74, 0x70, 0x61, 0x74, 0x68, 0x52, 0x65, 0x70, - 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x64, 0x65, 0x76, 0x49, 0x64, 0x12, 0x17, 0x0a, - 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, - 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x61, 0x73, 0x74, 0x70, - 0x61, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x63, 0x6c, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x03, 0x61, 0x63, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1a, - 0x0a, 0x08, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x08, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6d, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x6d, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x76, 0x70, 0x61, 0x74, 0x68, - 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x55, 0x75, 0x69, 0x64, 0x22, 0xb4, 0x02, - 0x0a, 0x0e, 0x46, 0x61, 0x73, 0x74, 0x70, 0x61, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x19, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x73, 0x65, 0x74, 0x75, 0x70, 0x4f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x61, 0x73, 0x74, 0x70, 0x61, 0x74, 0x68, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3e, - 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x46, 0x61, 0x73, 0x74, 0x70, 0x61, 0x74, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x14, - 0x0a, 0x05, 0x64, 0x69, 0x72, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x64, - 0x69, 0x72, 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x5f, 0x75, 0x75, - 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x55, - 0x75, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x66, 0x61, 0x69, - 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x66, 0x6f, 0x72, - 0x63, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x62, 0x6f, 0x73, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x62, 0x6f, 0x73, 0x65, 0x22, 0xcc, 0x02, 0x0a, 0x0a, 0x53, 0x63, 0x61, 0x6e, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x12, 0x41, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x07, 0x74, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5f, 0x0a, 0x0b, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x72, - 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x43, 0x41, 0x4e, 0x5f, 0x54, 0x52, - 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, - 0x53, 0x43, 0x41, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x4f, 0x4e, 0x5f, - 0x4d, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x43, 0x41, 0x4e, 0x5f, - 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x4f, 0x4e, 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x5f, - 0x4d, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x02, 0x22, 0x5a, 0x0a, 0x0a, 0x53, 0x63, 0x61, 0x6e, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x43, 0x41, 0x4e, 0x5f, 0x41, 0x43, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x53, - 0x43, 0x41, 0x4e, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x5f, - 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x43, 0x41, 0x4e, 0x5f, 0x41, - 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x5f, 0x52, 0x45, 0x50, 0x41, 0x49, - 0x52, 0x10, 0x02, 0x22, 0x96, 0x01, 0x0a, 0x0a, 0x49, 0x6f, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, - 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6f, 0x70, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x49, 0x6f, 0x70, 0x73, 0x12, - 0x1d, 0x0a, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x6f, 0x70, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x09, 0x77, 0x72, 0x69, 0x74, 0x65, 0x49, 0x6f, 0x70, 0x73, 0x12, 0x24, - 0x0a, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x62, 0x77, 0x5f, 0x6d, 0x62, 0x79, 0x74, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x72, 0x65, 0x61, 0x64, 0x42, 0x77, 0x4d, 0x62, - 0x79, 0x74, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62, 0x77, - 0x5f, 0x6d, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x77, - 0x72, 0x69, 0x74, 0x65, 0x42, 0x77, 0x4d, 0x62, 0x79, 0x74, 0x65, 0x73, 0x22, 0xcd, 0x13, 0x0a, - 0x0a, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x65, - 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x2f, 0x0a, - 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x46, 0x53, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1d, - 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x19, 0x0a, - 0x08, 0x68, 0x61, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x07, 0x68, 0x61, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x2a, 0x0a, 0x03, 0x63, 0x6f, 0x73, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x03, 0x63, 0x6f, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x69, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6f, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x52, 0x09, 0x69, 0x6f, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x64, 0x65, 0x64, 0x75, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x64, 0x65, 0x64, 0x75, 0x70, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x10, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x12, 0x52, 0x0a, 0x0d, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, - 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, - 0x12, 0x3c, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x73, 0x65, 0x74, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, - 0x65, 0x74, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x65, 0x74, 0x12, 0x2b, - 0x0a, 0x11, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x61, 0x67, 0x67, 0x72, 0x65, - 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x65, - 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x61, 0x73, - 0x73, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, - 0x61, 0x73, 0x73, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x10, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x53, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x18, - 0x11, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x73, 0x74, 0x69, 0x63, 0x6b, 0x79, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, - 0x69, 0x63, 0x6b, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x15, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x12, 0x25, 0x0a, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x65, 0x6e, 0x66, 0x6f, - 0x72, 0x63, 0x65, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x63, - 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x73, - 0x63, 0x61, 0x64, 0x65, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x61, 0x73, - 0x63, 0x61, 0x64, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6c, - 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6c, 0x12, - 0x1a, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x18, 0x1a, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x12, 0x1f, 0x0a, 0x0b, 0x71, - 0x75, 0x65, 0x75, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0a, 0x71, 0x75, 0x65, 0x75, 0x65, 0x44, 0x65, 0x70, 0x74, 0x68, 0x12, 0x39, 0x0a, 0x19, - 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x5f, 0x66, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x16, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x46, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x69, 0x73, - 0x63, 0x61, 0x72, 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x69, - 0x73, 0x63, 0x61, 0x72, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x69, 0x6f, 0x5f, 0x73, 0x74, 0x72, 0x61, - 0x74, 0x65, 0x67, 0x79, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6f, 0x53, - 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0a, 0x69, 0x6f, 0x53, 0x74, 0x72, 0x61, 0x74, - 0x65, 0x67, 0x79, 0x12, 0x57, 0x0a, 0x12, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x11, 0x70, 0x6c, 0x61, 0x63, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x25, 0x0a, 0x0e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x20, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, - 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, - 0x69, 0x70, 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x3c, 0x0a, - 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x22, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, - 0x0a, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x66, - 0x70, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x23, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0c, 0x66, 0x70, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x12, 0x32, 0x0a, 0x05, 0x78, 0x61, 0x74, 0x74, 0x72, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x58, 0x61, 0x74, 0x74, 0x72, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x78, - 0x61, 0x74, 0x74, 0x72, 0x12, 0x3c, 0x0a, 0x0b, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x63, 0x61, 0x6e, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0a, 0x73, 0x63, 0x61, 0x6e, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x12, 0x42, 0x0a, 0x0d, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x6f, 0x75, 0x6e, - 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x53, 0x0a, 0x16, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, - 0x76, 0x34, 0x5f, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x14, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x4d, - 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x28, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x0a, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x70, 0x72, - 0x6f, 0x78, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x58, 0x0a, 0x15, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x76, 0x34, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, - 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, - 0x34, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x13, 0x73, 0x68, - 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, - 0x63, 0x12, 0x42, 0x0a, 0x0d, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x5f, 0x73, 0x70, - 0x65, 0x63, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x76, 0x34, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, - 0x34, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x66, 0x73, - 0x74, 0x72, 0x69, 0x6d, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x6f, - 0x46, 0x73, 0x74, 0x72, 0x69, 0x6d, 0x12, 0x3c, 0x0a, 0x0b, 0x69, 0x6f, 0x5f, 0x74, 0x68, 0x72, - 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6f, - 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x0a, 0x69, 0x6f, 0x54, 0x68, 0x72, 0x6f, - 0x74, 0x74, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, - 0x66, 0x5f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x12, 0x1c, - 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x61, 0x68, 0x65, 0x61, 0x64, 0x18, 0x2f, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x61, 0x68, 0x65, 0x61, 0x64, 0x12, 0x57, 0x0a, 0x14, - 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x30, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x6f, 0x70, - 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x13, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x69, 0x6e, 0x73, 0x68, 0x61, 0x72, - 0x65, 0x18, 0x31, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x77, 0x69, 0x6e, 0x73, 0x68, 0x61, 0x72, - 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x66, 0x61, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x32, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x66, 0x61, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, - 0x09, 0x6e, 0x65, 0x61, 0x72, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x08, 0x6e, 0x65, 0x61, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x71, 0x0a, 0x1e, 0x6e, 0x65, - 0x61, 0x72, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x34, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4e, 0x65, 0x61, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, - 0x52, 0x1b, 0x6e, 0x65, 0x61, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x2a, 0x0a, - 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x5f, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x35, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x75, 0x6d, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x18, 0x36, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x1a, 0x3f, 0x0a, 0x11, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 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, 0xe9, 0x11, 0x0a, - 0x10, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x70, 0x65, 0x63, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x12, 0x14, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, - 0x00, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1b, 0x0a, 0x08, 0x68, 0x61, 0x5f, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x07, 0x68, 0x61, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x03, 0x63, 0x6f, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x18, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x73, 0x54, 0x79, 0x70, 0x65, 0x48, 0x02, 0x52, 0x03, 0x63, - 0x6f, 0x73, 0x12, 0x3b, 0x0a, 0x0a, 0x69, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6f, 0x50, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x48, 0x03, 0x52, 0x09, 0x69, 0x6f, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, - 0x18, 0x0a, 0x06, 0x64, 0x65, 0x64, 0x75, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x48, - 0x04, 0x52, 0x06, 0x64, 0x65, 0x64, 0x75, 0x70, 0x65, 0x12, 0x2d, 0x0a, 0x11, 0x73, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x05, 0x52, 0x10, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, - 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x48, 0x06, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, - 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x73, 0x65, - 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x53, 0x65, 0x74, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x65, 0x74, - 0x12, 0x20, 0x0a, 0x0a, 0x70, 0x61, 0x73, 0x73, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x07, 0x52, 0x0a, 0x70, 0x61, 0x73, 0x73, 0x70, 0x68, 0x72, 0x61, - 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x11, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x48, 0x08, 0x52, - 0x10, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x12, 0x16, 0x0a, 0x05, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x09, 0x52, 0x05, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x06, 0x73, 0x74, 0x69, - 0x63, 0x6b, 0x79, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x48, 0x0a, 0x52, 0x06, 0x73, 0x74, 0x69, - 0x63, 0x6b, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x13, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x48, 0x0b, 0x52, 0x05, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x12, 0x1a, 0x0a, 0x07, 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x17, - 0x20, 0x01, 0x28, 0x08, 0x48, 0x0c, 0x52, 0x07, 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6c, 0x12, - 0x1c, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x18, 0x18, 0x20, 0x01, 0x28, - 0x08, 0x48, 0x0d, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x12, 0x21, 0x0a, - 0x0b, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x18, 0x19, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x0e, 0x52, 0x0a, 0x71, 0x75, 0x65, 0x75, 0x65, 0x44, 0x65, 0x70, 0x74, 0x68, - 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x18, 0x1a, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, - 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x1e, 0x0a, 0x09, 0x6e, 0x6f, - 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x48, 0x0f, 0x52, - 0x09, 0x6e, 0x6f, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x69, 0x6f, - 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x49, 0x6f, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0a, 0x69, 0x6f, - 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x3e, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x48, 0x10, 0x52, 0x0a, 0x65, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1c, 0x0a, 0x08, 0x66, 0x61, 0x73, 0x74, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x08, 0x48, 0x11, 0x52, 0x08, 0x66, 0x61, - 0x73, 0x74, 0x70, 0x61, 0x74, 0x68, 0x12, 0x34, 0x0a, 0x05, 0x78, 0x61, 0x74, 0x74, 0x72, 0x18, - 0x1f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x58, 0x61, 0x74, 0x74, 0x72, 0x2e, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x48, 0x12, 0x52, 0x05, 0x78, 0x61, 0x74, 0x74, 0x72, 0x12, 0x3e, 0x0a, 0x0b, - 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x20, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x13, - 0x52, 0x0a, 0x73, 0x63, 0x61, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x45, 0x0a, 0x0e, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x21, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x48, 0x14, 0x52, 0x0c, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x53, - 0x70, 0x65, 0x63, 0x12, 0x56, 0x0a, 0x17, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x5f, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x22, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x48, 0x15, 0x52, 0x14, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x4d, - 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x21, 0x0a, 0x0b, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x23, 0x20, 0x01, 0x28, 0x08, - 0x48, 0x16, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x3b, - 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x24, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x70, 0x65, 0x63, 0x48, 0x17, - 0x52, 0x09, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5a, 0x0a, 0x15, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x73, 0x70, 0x65, 0x63, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x68, 0x61, - 0x72, 0x65, 0x64, 0x76, 0x34, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, - 0x48, 0x18, 0x52, 0x13, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x44, 0x0a, 0x0d, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x76, 0x34, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x53, 0x70, 0x65, 0x63, 0x48, 0x19, 0x52, - 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x53, 0x70, 0x65, 0x63, 0x12, 0x21, 0x0a, - 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x66, 0x73, 0x74, 0x72, 0x69, 0x6d, 0x18, 0x27, 0x20, 0x01, - 0x28, 0x08, 0x48, 0x1a, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x46, 0x73, 0x74, 0x72, 0x69, 0x6d, - 0x12, 0x3e, 0x0a, 0x0b, 0x69, 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x18, - 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6f, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, - 0x6c, 0x65, 0x48, 0x1b, 0x52, 0x0a, 0x69, 0x6f, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, - 0x12, 0x1e, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x61, 0x68, 0x65, 0x61, 0x64, 0x18, 0x29, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x1c, 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x61, 0x68, 0x65, 0x61, 0x64, - 0x12, 0x1c, 0x0a, 0x08, 0x77, 0x69, 0x6e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x2a, 0x20, 0x01, - 0x28, 0x08, 0x48, 0x1d, 0x52, 0x08, 0x77, 0x69, 0x6e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x12, 0x73, - 0x0a, 0x1e, 0x6e, 0x65, 0x61, 0x72, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, - 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4e, 0x65, 0x61, 0x72, 0x53, 0x79, 0x6e, - 0x63, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, - 0x74, 0x65, 0x67, 0x79, 0x48, 0x1e, 0x52, 0x1b, 0x6e, 0x65, 0x61, 0x72, 0x53, 0x79, 0x6e, 0x63, - 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, - 0x65, 0x67, 0x79, 0x12, 0x22, 0x0a, 0x0b, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x6d, - 0x65, 0x64, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x08, 0x48, 0x1f, 0x52, 0x0b, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x75, 0x6d, 0x6d, 0x65, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x73, 0x69, 0x7a, 0x65, 0x5f, - 0x6f, 0x70, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x68, 0x61, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, - 0x6f, 0x70, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x63, 0x6f, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x10, - 0x0a, 0x0e, 0x69, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6f, 0x70, 0x74, - 0x42, 0x0c, 0x0a, 0x0a, 0x64, 0x65, 0x64, 0x75, 0x70, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x17, - 0x0a, 0x15, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x70, 0x61, 0x73, 0x73, 0x70, 0x68, 0x72, - 0x61, 0x73, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x73, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x6f, 0x70, 0x74, - 0x42, 0x0b, 0x0a, 0x09, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x0c, 0x0a, - 0x0a, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x6a, 0x6f, 0x75, 0x72, - 0x6e, 0x61, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x76, 0x34, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x71, 0x75, 0x65, 0x75, 0x65, - 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x6e, 0x6f, - 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x65, - 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x0e, - 0x0a, 0x0c, 0x66, 0x61, 0x73, 0x74, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x0b, - 0x0a, 0x09, 0x78, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x73, - 0x63, 0x61, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x0b, - 0x0a, 0x09, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x5f, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6f, 0x70, - 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, - 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x73, 0x70, - 0x65, 0x63, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x1b, 0x0a, 0x19, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, - 0x76, 0x34, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, - 0x6f, 0x70, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x5f, - 0x73, 0x70, 0x65, 0x63, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x61, 0x75, 0x74, 0x6f, - 0x5f, 0x66, 0x73, 0x74, 0x72, 0x69, 0x6d, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x69, - 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x0f, - 0x0a, 0x0d, 0x72, 0x65, 0x61, 0x64, 0x61, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x42, - 0x0e, 0x0a, 0x0c, 0x77, 0x69, 0x6e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x42, - 0x24, 0x0a, 0x22, 0x6e, 0x65, 0x61, 0x72, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x72, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, - 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x6d, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x22, 0xc5, 0x14, 0x0a, 0x10, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x53, 0x70, 0x65, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x14, 0x0a, - 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x04, 0x73, - 0x69, 0x7a, 0x65, 0x12, 0x1b, 0x0a, 0x08, 0x68, 0x61, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x07, 0x68, 0x61, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x12, 0x2c, 0x0a, 0x03, 0x63, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x43, 0x6f, 0x73, 0x54, 0x79, 0x70, 0x65, 0x48, 0x02, 0x52, 0x03, 0x63, 0x6f, 0x73, 0x12, 0x3b, - 0x0a, 0x0a, 0x69, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6f, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x48, 0x03, - 0x52, 0x09, 0x69, 0x6f, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x06, 0x64, - 0x65, 0x64, 0x75, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x06, 0x64, - 0x65, 0x64, 0x75, 0x70, 0x65, 0x12, 0x2d, 0x0a, 0x11, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x05, 0x52, 0x10, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x12, 0x58, 0x0a, 0x0d, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x70, 0x65, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x18, - 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x48, 0x06, - 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x65, 0x74, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x53, 0x65, 0x74, 0x12, 0x20, 0x0a, 0x0a, 0x70, 0x61, 0x73, 0x73, 0x70, 0x68, - 0x72, 0x61, 0x73, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x07, 0x52, 0x0a, 0x70, 0x61, - 0x73, 0x73, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x11, 0x73, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x08, 0x52, 0x10, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x53, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x05, 0x73, 0x63, 0x61, 0x6c, 0x65, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x09, 0x52, 0x05, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x12, - 0x18, 0x0a, 0x06, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x48, - 0x0a, 0x52, 0x06, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x48, 0x0b, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1a, 0x0a, 0x07, 0x6a, 0x6f, 0x75, - 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x48, 0x0c, 0x52, 0x07, 0x6a, 0x6f, - 0x75, 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x1c, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, - 0x34, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x48, 0x0d, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x76, 0x34, 0x12, 0x21, 0x0a, 0x0b, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x64, 0x65, 0x70, - 0x74, 0x68, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x0e, 0x52, 0x0a, 0x71, 0x75, 0x65, 0x75, - 0x65, 0x44, 0x65, 0x70, 0x74, 0x68, 0x12, 0x1e, 0x0a, 0x09, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, - 0x74, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x48, 0x0f, 0x52, 0x09, 0x65, 0x6e, 0x63, - 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x12, 0x2d, 0x0a, 0x11, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x13, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x10, 0x52, 0x10, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x4f, 0x0a, 0x0d, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x70, 0x65, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4f, 0x70, 0x52, 0x0c, 0x73, 0x69, 0x7a, 0x65, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x56, 0x0a, 0x11, 0x68, 0x61, 0x5f, 0x6c, 0x65, 0x76, - 0x65, 0x6c, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x33, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x70, 0x65, 0x63, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4f, 0x70, 0x52, 0x0f, 0x68, - 0x61, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x51, - 0x0a, 0x0e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x18, 0x34, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, - 0x70, 0x65, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x4f, 0x70, 0x52, 0x0d, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x12, 0x68, 0x0a, 0x1a, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, - 0x35, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x70, - 0x65, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4f, - 0x70, 0x52, 0x18, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x09, 0x6e, - 0x6f, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x18, 0x36, 0x20, 0x01, 0x28, 0x08, 0x48, 0x11, - 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x69, - 0x6f, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x49, 0x6f, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0a, 0x69, - 0x6f, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x3e, 0x0a, 0x0b, 0x65, 0x78, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x38, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x48, 0x12, 0x52, 0x0a, 0x65, - 0x78, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3e, 0x0a, 0x0b, 0x73, 0x63, 0x61, - 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x39, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x13, 0x52, 0x0a, 0x73, - 0x63, 0x61, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x45, 0x0a, 0x0e, 0x6d, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x3a, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x48, 0x14, 0x52, 0x0c, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x53, 0x70, 0x65, 0x63, - 0x12, 0x56, 0x0a, 0x17, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x5f, 0x6d, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x3b, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x48, 0x15, 0x52, 0x14, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x4d, 0x6f, 0x75, 0x6e, - 0x74, 0x4f, 0x70, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x21, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x08, 0x48, 0x16, 0x52, - 0x0a, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x70, 0x65, 0x63, 0x48, 0x17, 0x52, 0x09, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1c, 0x0a, 0x08, 0x66, 0x61, 0x73, 0x74, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x08, 0x48, 0x18, 0x52, 0x08, 0x66, 0x61, - 0x73, 0x74, 0x70, 0x61, 0x74, 0x68, 0x12, 0x5a, 0x0a, 0x15, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, - 0x76, 0x34, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, - 0x3f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x19, 0x52, 0x13, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, - 0x65, 0x63, 0x12, 0x44, 0x0a, 0x0d, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x5f, 0x73, - 0x70, 0x65, 0x63, 0x18, 0x40, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x68, 0x61, 0x72, - 0x65, 0x64, 0x76, 0x34, 0x53, 0x70, 0x65, 0x63, 0x48, 0x1a, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x72, - 0x65, 0x64, 0x76, 0x34, 0x53, 0x70, 0x65, 0x63, 0x12, 0x21, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x6f, - 0x5f, 0x66, 0x73, 0x74, 0x72, 0x69, 0x6d, 0x18, 0x41, 0x20, 0x01, 0x28, 0x08, 0x48, 0x1b, 0x52, - 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x46, 0x73, 0x74, 0x72, 0x69, 0x6d, 0x12, 0x3e, 0x0a, 0x0b, 0x69, - 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x18, 0x42, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x49, 0x6f, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x48, 0x1c, 0x52, - 0x0a, 0x69, 0x6f, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x09, 0x72, - 0x65, 0x61, 0x64, 0x61, 0x68, 0x65, 0x61, 0x64, 0x18, 0x43, 0x20, 0x01, 0x28, 0x08, 0x48, 0x1d, - 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x61, 0x68, 0x65, 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x08, 0x77, - 0x69, 0x6e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x44, 0x20, 0x01, 0x28, 0x08, 0x48, 0x1e, 0x52, - 0x08, 0x77, 0x69, 0x6e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x1a, 0x3f, 0x0a, 0x11, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 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, 0x2f, 0x0a, 0x08, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x4f, 0x70, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x10, - 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x10, 0x01, 0x12, 0x0b, - 0x0a, 0x07, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x10, 0x02, 0x42, 0x0a, 0x0a, 0x08, 0x73, - 0x69, 0x7a, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x68, 0x61, 0x5f, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x63, 0x6f, 0x73, 0x5f, 0x6f, - 0x70, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x69, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x64, 0x65, 0x64, 0x75, 0x70, 0x65, 0x5f, 0x6f, - 0x70, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x70, 0x61, 0x73, - 0x73, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x73, - 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x6f, 0x70, - 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x42, - 0x0b, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x0d, 0x0a, 0x0b, - 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x71, - 0x75, 0x65, 0x75, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x0f, - 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x42, - 0x17, 0x0a, 0x15, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, - 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x69, - 0x73, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x65, 0x78, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x11, 0x0a, 0x0f, - 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x42, - 0x0b, 0x0a, 0x09, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x14, 0x0a, 0x12, - 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x5f, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6f, - 0x70, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x77, 0x72, 0x69, 0x74, - 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x73, - 0x70, 0x65, 0x63, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x66, 0x61, 0x73, 0x74, 0x70, - 0x61, 0x74, 0x68, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x1b, 0x0a, 0x19, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x76, 0x34, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, - 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, - 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x61, 0x75, 0x74, - 0x6f, 0x5f, 0x66, 0x73, 0x74, 0x72, 0x69, 0x6d, 0x5f, 0x6f, 0x70, 0x74, 0x42, 0x11, 0x0a, 0x0f, - 0x69, 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x42, - 0x0f, 0x0a, 0x0d, 0x72, 0x65, 0x61, 0x64, 0x61, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x70, 0x74, - 0x42, 0x0e, 0x0a, 0x0c, 0x77, 0x69, 0x6e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x6f, 0x70, 0x74, - 0x22, 0x51, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x65, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, - 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x75, 0x75, 0x69, - 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x55, 0x75, - 0x69, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x02, 0x69, 0x64, 0x22, 0xab, 0x01, 0x0a, 0x0f, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, 0x12, 0x57, 0x0a, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, - 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x0c, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x1a, 0x3f, 0x0a, 0x11, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x45, 0x6e, 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, 0xb5, 0x05, 0x0a, 0x09, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, - 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x04, 0x61, 0x63, 0x6c, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x2e, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x04, 0x61, - 0x63, 0x6c, 0x73, 0x1a, 0x50, 0x0a, 0x13, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x39, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, - 0x73, 0x68, 0x69, 0x70, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x1a, 0xd3, 0x03, 0x0a, 0x0d, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x4c, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, - 0x68, 0x69, 0x70, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x61, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, - 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x61, - 0x62, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x46, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, - 0x73, 0x68, 0x69, 0x70, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x1a, 0x60, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x2e, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x67, 0x0a, 0x12, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x77, 0x6e, 0x65, - 0x72, 0x73, 0x68, 0x69, 0x70, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2c, 0x0a, 0x0a, 0x41, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x65, 0x61, - 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x57, 0x72, 0x69, 0x74, 0x65, 0x10, 0x01, 0x12, 0x09, - 0x0a, 0x05, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x10, 0x02, 0x22, 0xdf, 0x0d, 0x0a, 0x06, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x12, - 0x38, 0x0a, 0x07, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, - 0x52, 0x07, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x30, 0x0a, 0x05, 0x63, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x63, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x73, - 0x70, 0x65, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x14, 0x0a, 0x05, - 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x75, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x2f, 0x0a, 0x06, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x53, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x35, 0x0a, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x74, 0x74, 0x61, 0x63, - 0x68, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x74, - 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x43, 0x0a, 0x0e, 0x61, 0x74, 0x74, 0x61, - 0x63, 0x68, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0d, - 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, - 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x2c, - 0x0a, 0x12, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x65, 0x63, 0x75, - 0x72, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, - 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x11, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x50, 0x61, 0x74, 0x68, 0x12, 0x48, 0x0a, - 0x0b, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x12, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x2e, 0x41, 0x74, 0x74, 0x61, - 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, - 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3e, 0x0a, 0x0c, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x65, 0x74, 0x52, 0x0b, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x53, 0x65, 0x74, 0x73, 0x12, 0x45, 0x0a, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x70, - 0x52, 0x0c, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x12, 0x4a, 0x0a, 0x10, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, - 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, - 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x73, - 0x12, 0x2c, 0x0a, 0x12, 0x66, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x72, 0x65, - 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x66, 0x73, - 0x52, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x3b, - 0x0a, 0x0b, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x18, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x64, - 0x65, 0x74, 0x61, 0x63, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x64, 0x65, - 0x74, 0x61, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x66, 0x70, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x61, 0x73, - 0x74, 0x70, 0x61, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x66, 0x70, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3e, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x63, - 0x61, 0x6e, 0x5f, 0x66, 0x69, 0x78, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x63, - 0x61, 0x6e, 0x46, 0x69, 0x78, 0x12, 0x51, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x63, - 0x61, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x48, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x63, - 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x42, 0x0a, 0x0d, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x53, 0x0a, 0x16, - 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x5f, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, - 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x14, 0x73, 0x68, 0x61, - 0x72, 0x65, 0x64, 0x76, 0x34, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x48, 0x0a, 0x12, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x69, 0x6f, 0x5f, - 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x49, 0x6f, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x10, 0x64, 0x65, 0x72, 0x69, 0x76, - 0x65, 0x64, 0x49, 0x6f, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, - 0x6e, 0x5f, 0x74, 0x72, 0x61, 0x73, 0x68, 0x63, 0x61, 0x6e, 0x18, 0x20, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0a, 0x69, 0x6e, 0x54, 0x72, 0x61, 0x73, 0x68, 0x63, 0x61, 0x6e, 0x1a, 0x3d, 0x0a, 0x0f, - 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x45, 0x6e, 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, 0xa4, 0x03, 0x0a, 0x05, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x72, - 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x65, - 0x61, 0x64, 0x4d, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x62, 0x79, 0x74, - 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x42, 0x79, - 0x74, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x06, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x77, - 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x77, - 0x72, 0x69, 0x74, 0x65, 0x4d, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, - 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x77, 0x72, 0x69, - 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6f, 0x5f, 0x70, 0x72, - 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x69, 0x6f, - 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x13, 0x0a, 0x05, 0x69, 0x6f, 0x5f, 0x6d, - 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x69, 0x6f, 0x4d, 0x73, 0x12, 0x1d, 0x0a, - 0x0a, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x09, 0x62, 0x79, 0x74, 0x65, 0x73, 0x55, 0x73, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x4d, 0x73, 0x12, 0x1a, 0x0a, - 0x08, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x08, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x69, 0x73, - 0x63, 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x64, - 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x4d, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x63, - 0x61, 0x72, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0c, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x23, 0x0a, - 0x0d, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x73, 0x22, 0x80, 0x01, 0x0a, 0x11, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x55, - 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x6c, - 0x75, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x42, 0x79, 0x74, 0x65, - 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x42, - 0x79, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xe4, 0x01, 0x0a, 0x0b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x75, 0x75, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x55, 0x75, 0x69, 0x64, - 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, - 0x73, 0x69, 0x76, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x6f, - 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x22, 0x54, 0x0a, 0x11, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x42, 0x79, 0x4e, 0x6f, 0x64, - 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x75, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x73, 0x61, - 0x67, 0x65, 0x22, 0x4f, 0x0a, 0x0f, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x42, 0x79, 0x74, 0x65, - 0x73, 0x55, 0x73, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79, - 0x74, 0x65, 0x73, 0x22, 0x6f, 0x0a, 0x15, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x42, 0x79, 0x74, - 0x65, 0x73, 0x55, 0x73, 0x65, 0x64, 0x42, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, - 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x5f, 0x75, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x55, 0x73, 0x65, 0x64, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x55, - 0x73, 0x61, 0x67, 0x65, 0x22, 0xbf, 0x01, 0x0a, 0x15, 0x46, 0x73, 0x74, 0x72, 0x69, 0x6d, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1f, - 0x0a, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1f, 0x0a, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x69, 0x7a, 0x65, - 0x12, 0x19, 0x0a, 0x08, 0x64, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x07, 0x64, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, - 0x78, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x70, - 0x78, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, - 0x6d, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x66, 0x73, 0x74, 0x72, 0x69, 0x6d, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x41, 0x75, 0x74, 0x6f, - 0x46, 0x73, 0x74, 0x72, 0x69, 0x6d, 0x22, 0x34, 0x0a, 0x13, 0x52, 0x65, 0x6c, 0x61, 0x78, 0x65, - 0x64, 0x52, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x75, 0x72, 0x67, 0x65, 0x12, 0x1d, 0x0a, - 0x0a, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x75, 0x72, 0x67, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x09, 0x6e, 0x75, 0x6d, 0x50, 0x75, 0x72, 0x67, 0x65, 0x64, 0x22, 0xd4, 0x01, 0x0a, - 0x10, 0x53, 0x64, 0x6b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x70, - 0x65, 0x63, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x6c, - 0x6c, 0x6f, 0x77, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x77, 0x6e, - 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, - 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, - 0x68, 0x69, 0x70, 0x22, 0xbd, 0x03, 0x0a, 0x05, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, - 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, - 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x6c, - 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1f, 0x0a, 0x0b, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x08, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x65, 0x61, 0x72, - 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x65, - 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, - 0x74, 0x74, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x74, 0x61, - 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x54, - 0x61, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x73, - 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x66, 0x69, 0x72, 0x73, 0x74, 0x53, - 0x65, 0x65, 0x6e, 0x22, 0x85, 0x01, 0x0a, 0x11, 0x53, 0x64, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x4e, 0x0a, 0x12, 0x53, - 0x64, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x70, 0x61, - 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, - 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8f, 0x02, 0x0a, 0x0f, - 0x53, 0x64, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x4b, 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x65, 0x76, - 0x65, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x69, 0x6e, - 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0a, - 0x69, 0x73, 0x5f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x48, 0x00, 0x52, 0x09, 0x69, 0x73, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x65, 0x64, 0x12, 0x41, 0x0a, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x54, 0x69, 0x6d, 0x65, - 0x53, 0x70, 0x61, 0x6e, 0x48, 0x00, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x6e, - 0x12, 0x44, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x70, 0x61, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x53, 0x70, 0x61, 0x6e, 0x42, 0x05, 0x0a, 0x03, 0x6f, 0x70, 0x74, 0x22, 0x60, 0x0a, - 0x1a, 0x53, 0x64, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x42, 0x0a, 0x0d, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, - 0x7c, 0x0a, 0x17, 0x53, 0x64, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x42, 0x0a, 0x0d, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, - 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x9e, 0x01, - 0x0a, 0x18, 0x53, 0x64, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x49, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x42, 0x0a, 0x0d, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, - 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, - 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x22, 0xdd, - 0x02, 0x0a, 0x0e, 0x53, 0x64, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x12, 0x5d, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x64, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x11, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x12, 0x54, 0x0a, 0x10, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x57, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0f, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, - 0x34, 0x0a, 0x04, 0x6f, 0x70, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x64, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x04, 0x6f, 0x70, 0x74, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x61, - 0x0a, 0x24, 0x53, 0x64, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, - 0x73, 0x22, 0x57, 0x0a, 0x25, 0x53, 0x64, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x45, 0x6e, - 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x61, 0x6c, - 0x65, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x52, 0x06, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x22, 0x53, 0x0a, 0x16, 0x53, 0x64, - 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x22, - 0x19, 0x0a, 0x17, 0x53, 0x64, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x0a, 0x06, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x05, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x05, 0x61, 0x6c, 0x65, - 0x72, 0x74, 0x22, 0xcc, 0x02, 0x0a, 0x0f, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, - 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, - 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x29, 0x0a, - 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, - 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, - 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, - 0x6e, 0x22, 0xb1, 0x01, 0x0a, 0x13, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x07, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x07, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x6f, 0x72, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, - 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x26, 0x0a, 0x0e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x70, 0x0a, - 0x14, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x48, 0x0a, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, - 0x0e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0xc9, 0x01, 0x0a, 0x11, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x06, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x06, 0x61, 0x74, 0x74, 0x61, 0x63, - 0x68, 0x12, 0x38, 0x0a, 0x05, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x52, 0x05, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x22, 0xbf, 0x02, 0x0a, 0x10, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x38, 0x0a, 0x07, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x6f, - 0x72, 0x52, 0x07, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2f, 0x0a, 0x04, 0x73, 0x70, - 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x3a, 0x0a, 0x06, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 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, 0x8e, 0x01, - 0x0a, 0x11, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x06, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0e, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x94, - 0x01, 0x0a, 0x11, 0x53, 0x6e, 0x61, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4c, 0x6f, - 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x07, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1a, - 0x0a, 0x08, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x6f, - 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6e, 0x6f, - 0x52, 0x65, 0x74, 0x72, 0x79, 0x22, 0x71, 0x0a, 0x12, 0x53, 0x6e, 0x61, 0x70, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x16, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x52, 0x14, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x74, 0x0a, 0x0a, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x35, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x22, 0xad, - 0x01, 0x0a, 0x0e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, - 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, - 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1d, 0x0a, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0xcf, - 0x01, 0x0a, 0x14, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x72, 0x76, 0x5f, 0x63, - 0x6d, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x72, 0x76, 0x43, 0x6d, 0x64, - 0x12, 0x5d, 0x0a, 0x0e, 0x73, 0x72, 0x76, 0x5f, 0x63, 0x6d, 0x64, 0x5f, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x53, 0x72, 0x76, 0x43, 0x6d, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0c, 0x73, 0x72, 0x76, 0x43, 0x6d, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, - 0x3f, 0x0a, 0x11, 0x53, 0x72, 0x76, 0x43, 0x6d, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, - 0x6e, 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, 0xc4, 0x01, 0x0a, 0x1d, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x52, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x39, 0x0a, 0x0b, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 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, 0x95, 0x01, 0x0a, 0x15, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x2c, 0x0a, 0x13, 0x76, 0x6f, 0x6c, 0x5f, 0x73, 0x72, 0x76, 0x5f, 0x72, 0x73, 0x70, - 0x5f, 0x6f, 0x62, 0x6a, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, - 0x76, 0x6f, 0x6c, 0x53, 0x72, 0x76, 0x52, 0x73, 0x70, 0x4f, 0x62, 0x6a, 0x43, 0x6e, 0x74, 0x12, - 0x4e, 0x0a, 0x0b, 0x76, 0x6f, 0x6c, 0x5f, 0x73, 0x72, 0x76, 0x5f, 0x72, 0x73, 0x70, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x76, 0x6f, 0x6c, 0x53, 0x72, 0x76, 0x52, 0x73, 0x70, 0x22, - 0x64, 0x0a, 0x12, 0x47, 0x72, 0x61, 0x70, 0x68, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x3a, 0x0a, 0x04, 0x6b, 0x69, 0x6e, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x44, - 0x72, 0x69, 0x76, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x27, 0x0a, 0x0f, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x96, - 0x01, 0x0a, 0x0d, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x48, 0x0a, 0x08, 0x52, 0x65, 0x71, 0x65, 0x73, 0x74, 0x4b, 0x56, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x65, 0x73, 0x74, 0x4b, 0x56, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x08, 0x52, 0x65, 0x71, 0x65, 0x73, 0x74, 0x4b, 0x56, 0x1a, 0x3b, 0x0a, 0x0d, 0x52, 0x65, - 0x71, 0x65, 0x73, 0x74, 0x4b, 0x56, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x7a, 0x0a, 0x0e, 0x41, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x44, 0x0a, - 0x0d, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x52, 0x0d, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x22, 0xfb, 0x01, 0x0a, 0x16, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, - 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x4b, - 0x0a, 0x06, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x06, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x6e, 0x46, - 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x45, 0x6e, 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, 0xe9, 0x01, 0x0a, 0x17, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, - 0x09, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x37, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x73, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x61, 0x0a, 0x0e, 0x53, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x39, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x6e, 0x61, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdc, 0x08, - 0x0a, 0x0b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, - 0x03, 0x63, 0x70, 0x75, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, - 0x1b, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x15, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x08, 0x63, 0x70, 0x75, 0x43, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, - 0x6d, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x08, 0x6d, 0x65, 0x6d, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x65, 0x6d, - 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x65, 0x6d, - 0x55, 0x73, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x65, 0x6d, 0x5f, 0x66, 0x72, 0x65, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x46, 0x72, 0x65, 0x65, 0x12, - 0x19, 0x0a, 0x08, 0x61, 0x76, 0x67, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x07, 0x61, 0x76, 0x67, 0x4c, 0x6f, 0x61, 0x64, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3d, 0x0a, 0x05, 0x64, - 0x69, 0x73, 0x6b, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x05, 0x64, 0x69, 0x73, 0x6b, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x70, 0x6f, - 0x6f, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x05, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x17, - 0x0a, 0x07, 0x6d, 0x67, 0x6d, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x6d, 0x67, 0x6d, 0x74, 0x49, 0x70, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x61, 0x74, 0x61, 0x5f, - 0x69, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x61, 0x74, 0x61, 0x49, 0x70, - 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4d, 0x0a, 0x0b, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x2e, - 0x4e, 0x6f, 0x64, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x48, - 0x57, 0x54, 0x79, 0x70, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, - 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x48, 0x57, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x54, 0x0a, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, - 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, - 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x51, 0x0a, 0x12, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x14, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, - 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x11, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x72, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x2a, 0x0a, 0x11, 0x6e, - 0x6f, 0x6e, 0x5f, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6e, 0x6f, 0x6e, 0x51, 0x75, 0x6f, 0x72, 0x75, - 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x1a, 0x5a, - 0x0a, 0x0a, 0x44, 0x69, 0x73, 0x6b, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3d, 0x0a, 0x0f, 0x4e, 0x6f, - 0x64, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 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, 0x61, 0x0a, 0x0e, 0x53, 0x65, 0x63, - 0x75, 0x72, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0f, 0x0a, 0x0b, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, - 0x55, 0x4e, 0x53, 0x45, 0x43, 0x55, 0x52, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x53, - 0x45, 0x43, 0x55, 0x52, 0x45, 0x44, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x45, 0x43, 0x55, - 0x52, 0x45, 0x44, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, - 0x54, 0x59, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x41, 0x4c, 0x10, 0x03, 0x22, 0x65, 0x0a, 0x0e, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2f, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0xc7, 0x01, 0x0a, 0x13, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x12, 0x68, 0x0a, 0x19, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, - 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, - 0x75, 0x73, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, - 0x64, 0x65, 0x52, 0x19, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x42, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x33, 0x0a, - 0x14, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x49, 0x64, 0x22, 0x89, 0x01, 0x0a, 0x13, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, - 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, - 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0b, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x16, - 0x0a, 0x14, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7f, 0x0a, 0x18, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x47, 0x72, 0x61, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, - 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x86, 0x01, 0x0a, 0x19, 0x42, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x4a, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x22, 0x57, 0x0a, 0x19, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, - 0x09, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x1c, 0x0a, 0x1a, 0x42, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x69, 0x0a, 0x17, 0x42, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, - 0x65, 0x79, 0x22, 0x6d, 0x0a, 0x21, 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x52, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x22, 0x24, 0x0a, 0x22, 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x0a, 0x24, 0x53, 0x64, 0x6b, 0x4f, 0x70, - 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, - 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x75, 0x0a, 0x25, 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x10, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x38, 0x0a, 0x22, 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, - 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x6f, 0x0a, 0x23, 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x52, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x22, 0x37, 0x0a, 0x21, 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x24, 0x0a, 0x22, 0x53, 0x64, - 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x6d, 0x0a, 0x21, 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x64, 0x6b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x52, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, - 0x24, 0x0a, 0x22, 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x0a, 0x25, 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, 0x6e, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x65, 0x74, - 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x28, 0x0a, 0x26, 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x0a, 0x22, - 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0x25, 0x0a, 0x23, 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x0a, 0x29, 0x53, 0x64, 0x6b, - 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x76, 0x0a, 0x2a, 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, - 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, - 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x6d, - 0x0a, 0x1e, 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x4b, 0x0a, 0x0f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x53, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0e, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x21, 0x0a, - 0x1f, 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x6d, 0x0a, 0x1e, 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x0f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, - 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, - 0x0e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, - 0x21, 0x0a, 0x1f, 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x23, 0x0a, 0x21, 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x64, 0x0a, 0x22, 0x53, 0x64, 0x6b, 0x53, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, 0x6e, 0x75, 0x6d, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, - 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x35, 0x0a, - 0x1f, 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5e, 0x0a, 0x20, 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x53, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x22, 0x34, 0x0a, 0x1e, 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x21, 0x0a, 0x1f, 0x53, 0x64, - 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x0a, - 0x1e, 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x12, - 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x68, - 0x6f, 0x75, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x22, 0x80, 0x01, 0x0a, 0x1f, - 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x57, 0x65, 0x65, 0x6b, 0x6c, 0x79, 0x12, - 0x31, 0x0a, 0x03, 0x64, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, 0x52, 0x03, 0x64, - 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x68, 0x6f, 0x75, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x22, 0x60, - 0x0a, 0x20, 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x4d, 0x6f, 0x6e, 0x74, 0x68, - 0x6c, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x03, 0x64, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x68, 0x6f, 0x75, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69, 0x6e, 0x75, - 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, - 0x22, 0x3d, 0x0a, 0x21, 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x50, 0x65, 0x72, - 0x69, 0x6f, 0x64, 0x69, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, - 0xfc, 0x02, 0x0a, 0x19, 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x16, 0x0a, - 0x06, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, - 0x65, 0x74, 0x61, 0x69, 0x6e, 0x12, 0x48, 0x0a, 0x05, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x18, 0xc8, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x48, 0x00, 0x52, 0x05, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x12, - 0x4b, 0x0a, 0x06, 0x77, 0x65, 0x65, 0x6b, 0x6c, 0x79, 0x18, 0xc9, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x30, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x57, 0x65, 0x65, 0x6b, - 0x6c, 0x79, 0x48, 0x00, 0x52, 0x06, 0x77, 0x65, 0x65, 0x6b, 0x6c, 0x79, 0x12, 0x4e, 0x0a, 0x07, - 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x18, 0xca, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, - 0x79, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x6c, 0x79, 0x12, 0x51, 0x0a, 0x08, - 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x18, 0xcb, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x32, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x69, 0x6f, - 0x64, 0x69, 0x63, 0x48, 0x00, 0x52, 0x08, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x42, - 0x0d, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x71, - 0x0a, 0x11, 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x73, 0x22, 0x81, 0x05, 0x0a, 0x1a, 0x53, 0x64, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x25, 0x0a, 0x0e, - 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x4b, 0x65, 0x79, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, - 0x69, 0x70, 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x1b, 0x0a, - 0x09, 0x75, 0x73, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x08, 0x75, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x61, - 0x6d, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x69, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x33, 0x5f, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x33, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x12, 0x52, 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0xc8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x41, 0x77, 0x73, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x61, 0x77, 0x73, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x58, 0x0a, 0x10, 0x61, 0x7a, 0x75, 0x72, 0x65, - 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0xc9, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, - 0x52, 0x0f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x12, 0x5b, 0x0a, 0x11, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0xca, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x64, 0x6b, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x10, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x52, - 0x0a, 0x0e, 0x6e, 0x66, 0x73, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x18, 0xcb, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4e, 0x66, 0x73, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x48, 0x00, 0x52, 0x0d, 0x6e, 0x66, 0x73, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x42, 0x11, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x42, 0x0a, 0x1b, 0x53, 0x64, 0x6b, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x22, 0x8d, 0x01, 0x0a, 0x1a, 0x53, 0x64, - 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x4a, 0x0a, - 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x09, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x22, 0x1d, 0x0a, 0x1b, 0x53, 0x64, 0x6b, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x90, 0x02, 0x0a, 0x17, 0x53, 0x64, 0x6b, - 0x41, 0x77, 0x73, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, - 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x16, - 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x73, 0x73, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x53, 0x73, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x10, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, - 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, - 0x73, 0x69, 0x64, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x69, 0x64, - 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5f, 0x0a, 0x19, 0x53, - 0x64, 0x6b, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x22, 0x56, 0x0a, 0x1a, - 0x53, 0x64, 0x6b, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6a, 0x73, 0x6f, - 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6a, 0x73, 0x6f, - 0x6e, 0x4b, 0x65, 0x79, 0x22, 0x94, 0x01, 0x0a, 0x17, 0x53, 0x64, 0x6b, 0x4e, 0x66, 0x73, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x5f, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x50, - 0x61, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x74, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, - 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x9c, 0x02, 0x0a, 0x18, - 0x53, 0x64, 0x6b, 0x41, 0x77, 0x73, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x73, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0a, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x73, 0x6c, 0x12, 0x2c, 0x0a, 0x12, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x79, - 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x50, 0x61, 0x74, 0x68, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x33, - 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x33, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, - 0x69, 0x64, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x69, 0x64, 0x65, - 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3f, 0x0a, 0x1a, 0x53, 0x64, - 0x6b, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x1b, 0x53, - 0x64, 0x6b, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x22, 0x95, 0x01, 0x0a, 0x18, 0x53, 0x64, - 0x6b, 0x4e, 0x66, 0x73, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x19, - 0x0a, 0x08, 0x73, 0x75, 0x62, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x73, 0x75, 0x62, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, - 0x73, 0x22, 0x1f, 0x0a, 0x1d, 0x53, 0x64, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0x47, 0x0a, 0x1e, 0x53, 0x64, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x73, 0x22, 0x42, 0x0a, 0x1b, 0x53, - 0x64, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x22, - 0xdb, 0x04, 0x0a, 0x1c, 0x53, 0x64, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, - 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x75, - 0x73, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, - 0x75, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x61, 0x6d, 0x5f, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x61, - 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x53, 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x63, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0xc8, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x41, 0x77, 0x73, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x61, - 0x77, 0x73, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x59, 0x0a, 0x10, - 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x18, 0xc9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x41, 0x7a, 0x75, - 0x72, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x5c, 0x0a, 0x11, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0xca, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x48, 0x00, 0x52, 0x10, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x53, 0x0a, 0x0e, 0x6e, 0x66, 0x73, 0x5f, 0x63, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0xcb, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x64, 0x6b, 0x4e, 0x66, 0x73, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x6e, 0x66, 0x73, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x42, 0x11, 0x0a, 0x0f, 0x63, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x41, 0x0a, - 0x1a, 0x53, 0x64, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x64, - 0x22, 0x1d, 0x0a, 0x1b, 0x53, 0x64, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x43, 0x0a, 0x1c, 0x53, 0x64, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x49, 0x64, 0x22, 0x1f, 0x0a, 0x1d, 0x53, 0x64, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x0a, 0x24, 0x53, 0x64, 0x6b, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, - 0x0d, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x49, 0x64, 0x22, 0x27, 0x0a, 0x25, 0x53, 0x64, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x16, - 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x1a, 0x0a, - 0x08, 0x66, 0x61, 0x73, 0x74, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x66, 0x61, 0x73, 0x74, 0x70, 0x61, 0x74, 0x68, 0x22, 0xba, 0x02, 0x0a, 0x15, 0x53, 0x64, - 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, - 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, - 0x41, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x74, 0x74, 0x61, - 0x63, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x60, 0x0a, 0x0e, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x40, 0x0a, 0x12, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 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, 0x18, 0x0a, 0x16, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x92, 0x01, 0x0a, 0x17, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x6e, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x11, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, - 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x4b, 0x0a, 0x23, 0x6e, 0x6f, 0x5f, 0x64, - 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1e, 0x6e, 0x6f, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x65, - 0x66, 0x6f, 0x72, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x75, 0x6e, - 0x74, 0x50, 0x61, 0x74, 0x68, 0x22, 0xbf, 0x02, 0x0a, 0x17, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x55, 0x6e, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1d, - 0x0a, 0x0a, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x42, 0x0a, - 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x6e, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x62, 0x0a, 0x0e, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x6e, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x40, 0x0a, 0x12, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 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, 0x1a, 0x0a, 0x18, 0x53, 0x64, 0x6b, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x6e, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x9d, 0x02, 0x0a, 0x16, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, - 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x07, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x61, - 0x0a, 0x0e, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x0d, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x1a, 0x40, 0x0a, 0x12, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x45, 0x6e, 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, 0x3a, 0x0a, 0x17, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, - 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x22, - 0x7e, 0x0a, 0x16, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, - 0x63, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, - 0x32, 0x0a, 0x15, 0x75, 0x6e, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, - 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, - 0x75, 0x6e, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x44, 0x65, 0x74, - 0x61, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x22, - 0x9d, 0x02, 0x0a, 0x16, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x65, 0x74, - 0x61, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x61, 0x0a, 0x0e, 0x64, 0x72, - 0x69, 0x76, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x65, - 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x72, 0x69, 0x76, - 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, - 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x40, 0x0a, - 0x12, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, - 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, - 0x19, 0x0a, 0x17, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, - 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe5, 0x01, 0x0a, 0x16, 0x53, - 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x73, 0x70, 0x65, - 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x4b, 0x0a, 0x06, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x45, 0x6e, 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, 0x36, 0x0a, 0x17, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, - 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x22, 0xf8, 0x01, 0x0a, 0x15, 0x53, - 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x69, 0x0a, 0x11, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x3c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6c, 0x6f, 0x6e, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, - 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x1a, 0x43, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 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, 0x35, 0x0a, 0x16, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x22, 0x35, 0x0a, 0x16, - 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x49, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x77, - 0x0a, 0x17, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe9, 0x01, 0x0a, 0x18, 0x53, 0x64, 0x6b, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x06, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4d, 0x0a, 0x06, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x45, 0x6e, 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, 0xf5, 0x02, 0x0a, 0x22, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x57, 0x69, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x57, - 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x74, 0x57, 0x69, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, - 0x73, 0x68, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x77, 0x6e, - 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, - 0x70, 0x12, 0x2c, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, - 0x3f, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 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, 0x6a, 0x0a, 0x23, 0x53, - 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x57, - 0x69, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x43, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x07, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x22, 0xf4, 0x01, 0x0a, 0x16, 0x53, 0x64, 0x6b, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, - 0x4b, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x33, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x35, 0x0a, 0x04, - 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x53, 0x70, 0x65, 0x63, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x04, 0x73, - 0x70, 0x65, 0x63, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 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, 0x19, - 0x0a, 0x17, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5b, 0x0a, 0x15, 0x53, 0x64, 0x6b, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, - 0x25, 0x0a, 0x0e, 0x6e, 0x6f, 0x74, 0x5f, 0x63, 0x75, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x43, 0x75, 0x6d, 0x75, - 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x22, 0x46, 0x0a, 0x16, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x2c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0x3c, - 0x0a, 0x1d, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, - 0x69, 0x74, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x22, 0x74, 0x0a, 0x1e, - 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, - 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, - 0x0a, 0x13, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x61, - 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x11, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x22, 0x1b, 0x0a, 0x19, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, - 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x3b, 0x0a, 0x1a, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x6e, 0x75, 0x6d, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, - 0x0a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x22, 0xb8, 0x02, 0x0a, - 0x24, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x06, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x57, 0x69, - 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, - 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, - 0x68, 0x69, 0x70, 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x2c, - 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x39, 0x0a, 0x0b, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 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, 0x46, 0x0a, 0x25, 0x53, 0x64, 0x6b, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, - 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x22, - 0xe1, 0x01, 0x0a, 0x1e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x53, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, - 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x45, 0x6e, 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, 0x42, 0x0a, 0x1f, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x22, 0x5f, 0x0a, 0x1f, 0x53, 0x64, 0x6b, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x22, 0x22, 0x0a, 0x20, 0x53, 0x64, 0x6b, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x0a, 0x21, - 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x22, 0x54, - 0x0a, 0x22, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, - 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x11, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x49, 0x64, 0x73, 0x22, 0xe9, 0x01, 0x0a, 0x2c, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x49, 0x64, 0x12, 0x61, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x57, - 0x69, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, - 0x6e, 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, 0x5f, 0x0a, 0x2d, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x57, 0x69, - 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, - 0x73, 0x22, 0x7d, 0x0a, 0x26, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x73, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x73, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x22, 0x29, 0x0a, 0x27, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6c, 0x0a, 0x0f, 0x53, - 0x64, 0x6b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, - 0x0a, 0x0c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0b, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x6e, 0x0a, 0x10, 0x53, 0x64, 0x6b, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, - 0x0c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0b, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x15, 0x53, 0x64, - 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, - 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 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, 0x5d, 0x0a, 0x16, 0x53, 0x64, - 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x06, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3a, 0x0a, 0x1f, 0x53, 0x64, 0x6b, - 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x42, - 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, - 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x72, 0x0a, 0x20, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, 0x65, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x42, 0x79, 0x4e, 0x6f, 0x64, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x11, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x73, 0x61, - 0x67, 0x65, 0x42, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x55, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x3c, 0x0a, 0x21, 0x53, 0x64, 0x6b, - 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x78, 0x65, 0x64, 0x52, 0x65, 0x63, 0x6c, 0x61, - 0x69, 0x6d, 0x50, 0x75, 0x72, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, - 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x62, 0x0a, 0x22, 0x53, 0x64, 0x6b, 0x4e, 0x6f, - 0x64, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x78, 0x65, 0x64, 0x52, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, - 0x50, 0x75, 0x72, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x52, 0x65, 0x6c, 0x61, 0x78, 0x65, 0x64, 0x52, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x75, - 0x72, 0x67, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x23, 0x0a, 0x21, 0x53, - 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, - 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x22, 0x56, 0x0a, 0x22, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x50, 0x0a, 0x1e, 0x53, 0x64, 0x6b, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x6e, 0x0a, 0x1f, 0x53, 0x64, - 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x49, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, - 0x13, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, - 0x09, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, 0x51, 0x0a, 0x1f, 0x53, 0x64, - 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x63, - 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, - 0x13, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x22, 0x0a, - 0x20, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x53, 0x0a, 0x21, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x24, 0x0a, 0x22, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x0a, 0x1f, - 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x5d, 0x0a, 0x20, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x30, - 0x0a, 0x15, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, - 0x22, 0x9a, 0x06, 0x0a, 0x03, 0x4a, 0x6f, 0x62, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4a, 0x6f, 0x62, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4a, 0x6f, 0x62, 0x2e, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x58, 0x0a, 0x11, 0x64, 0x72, 0x61, - 0x69, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x90, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x44, 0x72, 0x61, 0x69, - 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x4a, 0x6f, 0x62, 0x48, - 0x00, 0x52, 0x10, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x12, 0x5a, 0x0a, 0x13, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x64, 0x72, 0x69, 0x76, - 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x91, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x44, 0x72, 0x69, 0x76, 0x65, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4a, 0x6f, 0x62, 0x48, 0x00, 0x52, 0x12, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x64, 0x72, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, - 0x48, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x69, 0x61, 0x67, 0x73, - 0x18, 0x92, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x44, 0x69, 0x61, 0x67, 0x73, 0x4a, 0x6f, 0x62, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x44, 0x69, 0x61, 0x67, 0x73, 0x12, 0x35, 0x0a, 0x06, 0x64, 0x65, 0x66, - 0x72, 0x61, 0x67, 0x18, 0x93, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x66, - 0x72, 0x61, 0x67, 0x4a, 0x6f, 0x62, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x66, 0x72, 0x61, 0x67, - 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x44, 0x0a, - 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x22, 0x76, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, - 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x44, - 0x52, 0x41, 0x49, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x41, 0x43, 0x48, 0x4d, 0x45, 0x4e, 0x54, 0x53, - 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x44, 0x52, 0x49, 0x56, - 0x45, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, - 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x5f, 0x44, 0x49, 0x41, 0x47, 0x53, 0x10, 0x04, 0x12, - 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x46, 0x52, 0x41, 0x47, 0x10, 0x05, 0x22, 0x69, 0x0a, 0x05, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, - 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, - 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x12, - 0x0a, 0x0a, 0x06, 0x50, 0x41, 0x55, 0x53, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x43, - 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, - 0x49, 0x4c, 0x45, 0x44, 0x10, 0x06, 0x42, 0x05, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0x38, 0x0a, - 0x0e, 0x53, 0x64, 0x6b, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x26, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4a, - 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0x1c, 0x0a, 0x1a, 0x4e, 0x6f, 0x64, 0x65, 0x44, - 0x72, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xbd, 0x01, 0x0a, 0x1e, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, - 0x65, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, - 0x64, 0x12, 0x45, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, - 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x6e, 0x6c, 0x79, - 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0c, 0x6f, 0x6e, 0x6c, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x12, 0x16, 0x0a, - 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, - 0x73, 0x73, 0x75, 0x65, 0x72, 0x22, 0xb6, 0x02, 0x0a, 0x17, 0x4e, 0x6f, 0x64, 0x65, 0x44, 0x72, - 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x4a, 0x6f, - 0x62, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x0a, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, - 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, - 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, - 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, - 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x95, - 0x01, 0x0a, 0x15, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x44, 0x72, 0x69, 0x76, 0x65, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4a, 0x6f, 0x62, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x72, 0x69, 0x76, - 0x65, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x98, 0x01, 0x0a, 0x0f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x44, 0x69, 0x61, 0x67, 0x73, 0x4a, 0x6f, 0x62, 0x12, 0x41, 0x0a, 0x07, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, - 0x6b, 0x44, 0x69, 0x61, 0x67, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, - 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x44, 0x69, 0x61, 0x67, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, - 0x73, 0x22, 0xb0, 0x02, 0x0a, 0x09, 0x44, 0x65, 0x66, 0x72, 0x61, 0x67, 0x4a, 0x6f, 0x62, 0x12, - 0x2c, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x68, 0x6f, 0x75, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x6d, 0x61, 0x78, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x6f, 0x75, 0x72, 0x73, 0x12, 0x31, 0x0a, - 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x61, - 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x6d, 0x61, - 0x78, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, - 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x78, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x6f, - 0x64, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, - 0x32, 0x0a, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, - 0x6e, 0x67, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x4e, 0x6f, - 0x64, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x49, 0x64, 0x22, 0xf3, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x66, 0x72, 0x61, 0x67, 0x4e, - 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x52, 0x0a, 0x0b, 0x70, 0x6f, 0x6f, - 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x44, 0x65, 0x66, 0x72, 0x61, 0x67, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0a, 0x70, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x29, 0x0a, - 0x10, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, - 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x1a, 0x60, 0x0a, 0x0f, 0x50, 0x6f, 0x6f, 0x6c, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, - 0x65, 0x66, 0x72, 0x61, 0x67, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfc, 0x02, 0x0a, 0x10, 0x44, - 0x65, 0x66, 0x72, 0x61, 0x67, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x25, 0x0a, 0x0e, 0x6e, 0x75, 0x6d, 0x5f, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x49, 0x74, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, - 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x5f, - 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x10, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x5f, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6c, 0x61, - 0x73, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x2f, 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, - 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x22, 0xd3, 0x01, 0x0a, 0x15, 0x44, 0x69, - 0x61, 0x67, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x42, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x69, 0x61, 0x67, 0x73, 0x43, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x48, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0f, - 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, - 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x4f, 0x4e, - 0x45, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x22, - 0x9c, 0x02, 0x0a, 0x16, 0x53, 0x64, 0x6b, 0x44, 0x69, 0x61, 0x67, 0x73, 0x43, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x04, 0x6e, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x69, 0x61, 0x67, 0x73, - 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x04, 0x6e, 0x6f, - 0x64, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x69, 0x61, 0x67, 0x73, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4f, - 0x6e, 0x6c, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6d, 0x69, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4d, 0x69, 0x6e, 0x73, 0x12, 0x12, - 0x0a, 0x04, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x6c, 0x69, - 0x76, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x41, - 0x0a, 0x17, 0x53, 0x64, 0x6b, 0x44, 0x69, 0x61, 0x67, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x03, 0x6a, 0x6f, 0x62, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, - 0x62, 0x22, 0x9b, 0x01, 0x0a, 0x11, 0x44, 0x69, 0x61, 0x67, 0x73, 0x4e, 0x6f, 0x64, 0x65, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x59, 0x0a, 0x13, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x11, 0x6e, 0x6f, 0x64, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x73, 0x12, 0x10, 0x0a, - 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, - 0x93, 0x01, 0x0a, 0x13, 0x44, 0x69, 0x61, 0x67, 0x73, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x5d, 0x0a, 0x15, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x52, 0x13, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x49, 0x64, 0x73, 0x22, 0x48, 0x0a, 0x17, 0x53, 0x64, 0x6b, 0x45, 0x6e, 0x75, 0x6d, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x4a, 0x6f, 0x62, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, - 0x44, 0x0a, 0x18, 0x53, 0x64, 0x6b, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4a, - 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x6a, - 0x6f, 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4a, 0x6f, 0x62, 0x52, - 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x22, 0x86, 0x01, 0x0a, 0x13, 0x53, 0x64, 0x6b, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2d, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4a, 0x6f, - 0x62, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4a, 0x6f, - 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x16, - 0x0a, 0x14, 0x53, 0x64, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x57, 0x0a, 0x16, 0x53, 0x64, 0x6b, 0x47, 0x65, 0x74, - 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x4a, 0x6f, 0x62, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, - 0x45, 0x0a, 0x08, 0x4a, 0x6f, 0x62, 0x41, 0x75, 0x64, 0x69, 0x74, 0x12, 0x39, 0x0a, 0x07, 0x73, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4a, - 0x6f, 0x62, 0x57, 0x6f, 0x72, 0x6b, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x07, 0x73, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x83, 0x01, 0x0a, 0x0e, 0x4a, 0x6f, 0x62, 0x57, 0x6f, - 0x72, 0x6b, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x66, 0x0a, 0x19, 0x64, 0x72, 0x61, - 0x69, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x73, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, - 0x72, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x17, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x41, - 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x42, 0x09, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x98, 0x01, 0x0a, - 0x0a, 0x4a, 0x6f, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, - 0x46, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4a, 0x6f, 0x62, 0x57, 0x6f, 0x72, - 0x6b, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x22, 0x78, 0x0a, 0x17, 0x53, 0x64, 0x6b, 0x47, 0x65, - 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x26, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x12, 0x35, 0x0a, 0x07, 0x73, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4a, 0x6f, - 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x22, 0x9f, 0x01, 0x0a, 0x17, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, - 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x2a, 0x0a, - 0x11, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6e, 0x75, 0x6d, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x73, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x75, 0x6d, - 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x5f, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6e, 0x75, 0x6d, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x44, - 0x6f, 0x6e, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x73, 0x5f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x11, 0x6e, 0x75, 0x6d, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x22, 0x3a, 0x0a, 0x1f, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, - 0x72, 0x64, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, - 0x22, 0x0a, 0x20, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x72, 0x64, 0x6f, 0x6e, - 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x0a, 0x21, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x55, 0x6e, - 0x63, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, - 0x64, 0x22, 0x24, 0x0a, 0x22, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x55, 0x6e, 0x63, 0x6f, - 0x72, 0x64, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x96, 0x02, 0x0a, 0x1b, 0x53, 0x64, 0x6b, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x69, 0x7a, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x04, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0xc8, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x04, 0x73, 0x69, - 0x7a, 0x65, 0x12, 0x21, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, - 0x18, 0xc9, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, - 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x5a, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x64, 0x6b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x2e, 0x52, - 0x65, 0x73, 0x69, 0x7a, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x3c, 0x0a, 0x1b, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x66, - 0x6f, 0x72, 0x5f, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x73, 0x6b, 0x69, 0x70, 0x57, 0x61, 0x69, 0x74, - 0x46, 0x6f, 0x72, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x42, - 0x0f, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x22, 0xa5, 0x03, 0x0a, 0x20, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x4a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x12, 0x50, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x38, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x68, 0x72, 0x65, 0x73, - 0x68, 0x6f, 0x6c, 0x64, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x06, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x12, 0x3d, 0x0a, 0x1b, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x61, 0x64, - 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, - 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x18, 0x6f, 0x76, 0x65, 0x72, 0x4c, 0x6f, - 0x61, 0x64, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, - 0x6c, 0x64, 0x12, 0x3f, 0x0a, 0x1c, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x61, 0x64, - 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, - 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x19, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x4c, - 0x6f, 0x61, 0x64, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, - 0x6f, 0x6c, 0x64, 0x22, 0x34, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x41, - 0x42, 0x53, 0x4f, 0x4c, 0x55, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x52, 0x43, 0x45, 0x4e, 0x54, 0x10, - 0x00, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x45, 0x4c, 0x54, 0x41, 0x5f, 0x4d, 0x45, 0x41, 0x4e, 0x5f, - 0x50, 0x45, 0x52, 0x43, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x22, 0x2d, 0x0a, 0x06, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, - 0x5f, 0x53, 0x50, 0x41, 0x43, 0x45, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x55, 0x53, 0x45, 0x44, - 0x5f, 0x53, 0x50, 0x41, 0x43, 0x45, 0x10, 0x01, 0x22, 0xbd, 0x04, 0x0a, 0x1a, 0x53, 0x64, 0x6b, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x60, 0x0a, 0x12, 0x74, 0x72, 0x69, 0x67, 0x67, - 0x65, 0x72, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x52, 0x11, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, - 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x72, 0x69, - 0x61, 0x6c, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, 0x72, - 0x69, 0x61, 0x6c, 0x52, 0x75, 0x6e, 0x12, 0x5b, 0x0a, 0x14, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x12, 0x5b, 0x0a, 0x14, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, - 0x6f, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x12, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x12, 0x30, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, - 0x6d, 0x61, 0x78, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x75, 0x74, - 0x65, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x72, 0x65, 0x70, - 0x6c, 0x5f, 0x31, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x14, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x31, - 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x12, 0x44, 0x0a, 0x04, 0x6d, 0x6f, 0x64, - 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x53, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, - 0x37, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x4f, 0x52, 0x41, - 0x47, 0x45, 0x5f, 0x52, 0x45, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x00, 0x12, 0x18, - 0x0a, 0x14, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x4d, 0x45, - 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x58, 0x10, 0x01, 0x22, 0xdb, 0x01, 0x0a, 0x1b, 0x53, 0x64, 0x6b, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62, - 0x12, 0x42, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x07, 0x73, 0x75, 0x6d, - 0x6d, 0x61, 0x72, 0x79, 0x12, 0x40, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x75, 0x64, 0x69, 0x74, 0x52, 0x07, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xce, 0x02, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x4b, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, - 0x6b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x44, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x17, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x12, 0x33, 0x0a, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x75, 0x6e, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x75, 0x6e, 0x54, 0x69, 0x6d, - 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x4f, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, - 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0b, 0x77, 0x6f, - 0x72, 0x6b, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x89, 0x02, 0x0a, 0x1b, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x57, 0x6f, - 0x72, 0x6b, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x45, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x53, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, - 0x64, 0x6f, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x75, - 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x6e, 0x62, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x64, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x55, - 0x6e, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, - 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x55, 0x6e, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x64, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x53, 0x70, 0x61, 0x63, 0x65, - 0x42, 0x79, 0x74, 0x65, 0x73, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x55, 0x6e, 0x62, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x64, 0x55, 0x73, 0x65, 0x64, 0x53, 0x70, 0x61, 0x63, 0x65, 0x42, 0x79, - 0x74, 0x65, 0x73, 0x10, 0x03, 0x22, 0xb8, 0x04, 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x75, 0x64, 0x69, 0x74, 0x12, - 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x55, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x3d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x41, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x6f, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x12, - 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, - 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x4f, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x53, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x79, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x49, 0x64, - 0x12, 0x3f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x22, 0x3d, 0x0a, 0x16, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x0a, 0x0b, 0x41, - 0x44, 0x44, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, - 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x10, 0x01, - 0x22, 0x6f, 0x0a, 0x1c, 0x53, 0x64, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x62, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x3f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x53, 0x64, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x31, 0x0a, 0x1f, 0x53, 0x64, 0x6b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x62, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xe0, 0x01, 0x0a, 0x20, 0x53, 0x64, 0x6b, 0x47, 0x65, 0x74, - 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x03, 0x6a, 0x6f, - 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, - 0x6f, 0x62, 0x12, 0x42, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x07, 0x73, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x40, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x75, 0x64, 0x69, 0x74, 0x52, - 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x22, 0x0a, 0x20, 0x53, 0x64, 0x6b, 0x45, - 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x5d, 0x0a, 0x21, - 0x53, 0x64, 0x6b, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x62, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x38, 0x0a, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x22, 0xcc, 0x01, 0x0a, 0x15, - 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x12, 0x5a, 0x0a, 0x12, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x64, 0x6b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x11, 0x72, 0x65, 0x62, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x3b, 0x0a, - 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x21, 0x53, - 0x64, 0x6b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x5a, 0x0a, 0x12, - 0x72, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x11, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0x70, 0x0a, 0x22, 0x53, 0x64, 0x6b, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, - 0x0a, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x20, 0x0a, 0x1e, 0x53, 0x64, - 0x6b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x6d, 0x0a, 0x1f, - 0x53, 0x64, 0x6b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x53, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x4a, 0x0a, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x23, 0x0a, 0x21, 0x53, - 0x64, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x22, 0x24, 0x0a, 0x22, 0x53, 0x64, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x62, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x90, 0x02, 0x0a, 0x0e, 0x53, 0x64, 0x6b, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x22, 0x73, 0x0a, 0x0f, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x15, 0x0a, 0x11, - 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, - 0x47, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x18, - 0x0a, 0x14, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x55, 0x43, 0x43, - 0x45, 0x53, 0x53, 0x46, 0x55, 0x4c, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x45, 0x52, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x22, 0x25, - 0x0a, 0x0d, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, - 0x49, 0x5a, 0x45, 0x10, 0x00, 0x22, 0x62, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, - 0x52, 0x45, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x55, 0x54, 0x4f, - 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x52, 0x45, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, - 0x52, 0x45, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x49, - 0x5a, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x10, 0x02, 0x22, 0x1e, 0x0a, 0x1c, 0x53, 0x64, 0x6b, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x69, 0x7a, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x0a, 0x16, 0x53, 0x64, 0x6b, - 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x1e, 0x0a, 0x1c, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, 0x65, - 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x51, 0x0a, 0x1d, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, 0x65, - 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4e, 0x6f, - 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x53, 0x64, 0x6b, 0x4e, - 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x22, 0x35, 0x0a, 0x18, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x6e, - 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x19, 0x0a, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x73, 0x22, 0x24, 0x0a, 0x22, 0x53, 0x64, - 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x57, 0x69, - 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x22, 0x59, 0x0a, 0x23, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x45, 0x0a, 0x1c, 0x53, - 0x64, 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x49, 0x64, 0x22, 0x70, 0x0a, 0x1d, 0x53, 0x64, 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x12, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x11, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x22, 0x3a, 0x0a, 0x1b, 0x53, 0x64, 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, - 0x22, 0x6f, 0x0a, 0x1c, 0x53, 0x64, 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x4f, 0x0a, 0x12, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x11, - 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x22, 0x44, 0x0a, 0x1b, 0x53, 0x64, 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x64, 0x22, 0x1e, 0x0a, 0x1c, 0x53, 0x64, 0x6b, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5c, 0x0a, 0x1b, 0x53, 0x64, 0x6b, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x64, 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, 0x1e, 0x0a, 0x1c, 0x53, 0x64, 0x6b, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x03, 0x0a, 0x1b, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x75, 0x6c, 0x6c, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x66, 0x75, 0x6c, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x74, - 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, - 0x73, 0x6b, 0x49, 0x64, 0x12, 0x50, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x62, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x66, 0x75, 0x6c, 0x6c, 0x42, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x12, 0x2a, 0x0a, - 0x11, 0x6e, 0x65, 0x61, 0x72, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, - 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6e, 0x65, 0x61, 0x72, 0x53, 0x79, - 0x6e, 0x63, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x45, 0x6e, 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, 0x37, 0x0a, 0x1c, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0xca, 0x02, - 0x0a, 0x20, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, - 0x0a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, - 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x49, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x75, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x04, 0x66, 0x75, 0x6c, 0x6c, 0x12, 0x55, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x0c, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x1a, - 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 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, 0x71, 0x0a, 0x21, 0x53, 0x64, - 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x31, 0x0a, 0x15, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x62, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x73, 0x22, 0xb4, 0x02, - 0x0a, 0x1c, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, - 0x0a, 0x09, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x72, - 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x63, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x64, - 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, - 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, - 0x49, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x38, 0x0a, 0x07, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x07, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x6f, 0x72, 0x22, 0x64, 0x0a, 0x1d, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, - 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x8d, 0x01, 0x0a, 0x1b, 0x53, - 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, - 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x1e, 0x0a, 0x1c, 0x53, 0x64, - 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x69, 0x0a, 0x1e, 0x53, 0x64, - 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0d, - 0x73, 0x72, 0x63, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x72, 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, - 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x49, 0x64, 0x22, 0x21, 0x0a, 0x1f, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd9, 0x04, 0x0a, 0x29, 0x53, 0x64, 0x6b, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x45, 0x6e, 0x75, 0x6d, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x72, 0x63, 0x5f, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, - 0x72, 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x10, - 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, - 0x12, 0x4e, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x12, 0x77, 0x0a, 0x0f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, - 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, - 0x6d, 0x61, 0x78, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, - 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, - 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x72, 0x63, - 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x53, 0x72, 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x73, 0x1a, 0x41, 0x0a, 0x13, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x45, 0x6e, 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, 0xe6, 0x03, 0x0a, 0x12, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x73, - 0x72, 0x63, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x73, 0x72, 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, - 0x26, 0x0a, 0x0f, 0x73, 0x72, 0x63, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x72, 0x63, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x12, 0x4d, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x41, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x4d, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 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, 0x9a, 0x01, - 0x0a, 0x2a, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x07, - 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x63, - 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa5, 0x04, 0x0a, 0x14, 0x53, - 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x64, - 0x12, 0x3d, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x79, 0x70, 0x65, 0x12, - 0x41, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x64, 0x6f, 0x6e, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, 0x79, 0x74, 0x65, 0x73, 0x44, 0x6f, 0x6e, - 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x0e, - 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x72, 0x63, 0x5f, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x73, 0x72, 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, - 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, - 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x74, 0x61, 0x5f, 0x73, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x65, 0x74, 0x61, - 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x49, 0x64, 0x22, 0x95, 0x01, 0x0a, 0x1b, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, - 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x2a, - 0x0a, 0x11, 0x6e, 0x65, 0x61, 0x72, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x6d, 0x69, 0x67, 0x72, - 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6e, 0x65, 0x61, 0x72, 0x53, - 0x79, 0x6e, 0x63, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x22, 0xdb, 0x01, 0x0a, 0x1c, 0x53, - 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x08, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x65, 0x73, 0x1a, 0x62, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x60, 0x0a, 0x1c, 0x53, 0x64, 0x6b, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x22, 0x3b, 0x0a, 0x1d, 0x53, 0x64, - 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x61, 0x74, 0x61, - 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xbc, 0x01, 0x0a, 0x19, 0x53, 0x64, 0x6b, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, - 0x79, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x72, 0x63, 0x5f, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x72, - 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x12, 0x41, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x42, 0x0a, 0x1c, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x72, 0x63, 0x5f, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, - 0x72, 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x22, 0x6e, 0x0a, 0x1d, 0x53, 0x64, - 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0c, 0x68, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0b, 0x68, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x93, 0x01, 0x0a, 0x20, 0x53, - 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x56, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x22, 0x23, 0x0a, 0x21, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb2, 0x03, 0x0a, 0x1a, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x72, 0x63, 0x5f, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x72, 0x63, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x48, 0x0a, - 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x09, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x62, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x6d, 0x61, - 0x78, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x75, 0x6c, 0x6c, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x66, 0x75, 0x6c, 0x6c, 0x12, 0x25, 0x0a, 0x0e, - 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x79, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x79, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x4f, - 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, - 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 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, 0x79, 0x0a, 0x20, 0x53, 0x64, - 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, - 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x55, - 0x0a, 0x10, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x69, 0x6e, - 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x63, 0x68, 0x65, - 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x51, 0x0a, 0x21, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x98, 0x01, 0x0a, 0x20, 0x53, 0x64, 0x6b, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x55, 0x0a, - 0x10, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x66, - 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x63, 0x68, 0x65, 0x64, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x75, 0x75, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x55, - 0x75, 0x69, 0x64, 0x22, 0x23, 0x0a, 0x21, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x0a, 0x20, 0x53, 0x64, 0x6b, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x12, - 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x23, 0x0a, 0x21, 0x53, 0x64, - 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, - 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x25, 0x0a, 0x23, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x8b, 0x02, 0x0a, 0x24, 0x53, 0x64, 0x6b, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x45, 0x6e, - 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x73, 0x0a, 0x10, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x6c, - 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x45, - 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x63, 0x68, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x63, 0x68, 0x65, 0x64, - 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x6e, 0x0a, 0x13, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x63, 0x68, - 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x41, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5d, 0x0a, 0x19, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x64, 0x12, 0x23, - 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x49, 0x64, 0x22, 0xdd, 0x01, 0x0a, 0x1a, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, - 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x44, 0x6f, 0x77, 0x6e, 0x6c, - 0x6f, 0x61, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x15, 0x63, 0x6f, 0x6d, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x12, 0x41, 0x0a, 0x1d, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x71, - 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1a, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, - 0x79, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x22, 0x39, 0x0a, 0x07, 0x53, 0x64, 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x70, - 0x69, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x61, 0x70, 0x69, 0x73, 0x22, 0x4d, - 0x0a, 0x07, 0x53, 0x64, 0x6b, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, - 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x44, 0x0a, - 0x14, 0x53, 0x64, 0x6b, 0x52, 0x6f, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, - 0x6f, 0x6c, 0x65, 0x22, 0x45, 0x0a, 0x15, 0x53, 0x64, 0x6b, 0x52, 0x6f, 0x6c, 0x65, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x04, - 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x53, 0x64, - 0x6b, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x30, 0x0a, 0x18, 0x53, 0x64, 0x6b, 0x52, 0x6f, 0x6c, 0x65, - 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x2b, 0x0a, 0x15, 0x53, 0x64, 0x6b, 0x52, 0x6f, - 0x6c, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x46, 0x0a, 0x16, 0x53, 0x64, 0x6b, 0x52, 0x6f, 0x6c, 0x65, 0x49, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, - 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x2a, 0x0a, 0x14, - 0x53, 0x64, 0x6b, 0x52, 0x6f, 0x6c, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x53, 0x64, 0x6b, 0x52, - 0x6f, 0x6c, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x44, 0x0a, 0x14, 0x53, 0x64, 0x6b, 0x52, 0x6f, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x04, 0x72, 0x6f, 0x6c, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x52, 0x6f, 0x6c, - 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x45, 0x0a, 0x15, 0x53, 0x64, 0x6b, 0x52, 0x6f, - 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x2c, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x64, 0x6b, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0xc4, - 0x01, 0x0a, 0x0e, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x72, 0x69, - 0x6d, 0x22, 0xb1, 0x01, 0x0a, 0x14, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x54, 0x72, 0x69, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x13, 0x0a, 0x0f, 0x46, 0x53, - 0x5f, 0x54, 0x52, 0x49, 0x4d, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, - 0x17, 0x0a, 0x13, 0x46, 0x53, 0x5f, 0x54, 0x52, 0x49, 0x4d, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x52, - 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x46, 0x53, 0x5f, 0x54, - 0x52, 0x49, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x16, 0x0a, - 0x12, 0x46, 0x53, 0x5f, 0x54, 0x52, 0x49, 0x4d, 0x5f, 0x49, 0x4e, 0x50, 0x52, 0x4f, 0x47, 0x52, - 0x45, 0x53, 0x53, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x46, 0x53, 0x5f, 0x54, 0x52, 0x49, 0x4d, - 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x53, - 0x5f, 0x54, 0x52, 0x49, 0x4d, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, - 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x53, 0x5f, 0x54, 0x52, 0x49, 0x4d, 0x5f, 0x46, 0x41, 0x49, - 0x4c, 0x45, 0x44, 0x10, 0x06, 0x22, 0x5b, 0x0a, 0x1d, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x72, 0x69, 0x6d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, - 0x74, 0x68, 0x22, 0x88, 0x01, 0x0a, 0x1e, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x54, 0x72, 0x69, 0x6d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x54, 0x72, 0x69, 0x6d, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x54, 0x72, 0x69, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x5c, 0x0a, - 0x1e, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x72, - 0x69, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, 0x74, 0x68, 0x22, 0x89, 0x01, 0x0a, 0x1f, - 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x72, 0x69, - 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x4c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x34, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x72, 0x69, 0x6d, - 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x72, 0x69, 0x6d, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x53, 0x64, 0x6b, 0x41, 0x75, - 0x74, 0x6f, 0x46, 0x53, 0x54, 0x72, 0x69, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x8b, 0x02, 0x0a, 0x1b, 0x53, 0x64, 0x6b, 0x41, 0x75, 0x74, - 0x6f, 0x46, 0x53, 0x54, 0x72, 0x69, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x0b, 0x74, 0x72, 0x69, 0x6d, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x41, 0x75, 0x74, 0x6f, 0x46, 0x53, 0x54, 0x72, 0x69, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x72, 0x69, 0x6d, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x74, 0x72, 0x69, 0x6d, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x73, - 0x0a, 0x0f, 0x54, 0x72, 0x69, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x4a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, - 0x72, 0x69, 0x6d, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x72, - 0x69, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0x1b, 0x0a, 0x19, 0x53, 0x64, 0x6b, 0x41, 0x75, 0x74, 0x6f, 0x46, 0x53, - 0x54, 0x72, 0x69, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x22, 0xe6, 0x01, 0x0a, 0x1a, 0x53, 0x64, 0x6b, 0x41, 0x75, 0x74, 0x6f, 0x46, 0x53, 0x54, 0x72, - 0x69, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x4c, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x64, 0x6b, 0x41, 0x75, 0x74, 0x6f, 0x46, 0x53, 0x54, 0x72, 0x69, 0x6d, 0x55, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x55, 0x73, 0x61, 0x67, - 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x60, 0x0a, 0x0a, 0x55, 0x73, 0x61, 0x67, 0x65, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x73, 0x74, 0x72, 0x69, 0x6d, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5a, 0x0a, 0x1c, 0x53, 0x64, 0x6b, - 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x72, 0x69, 0x6d, 0x53, 0x74, - 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x50, 0x61, 0x74, 0x68, 0x22, 0x68, 0x0a, 0x1a, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x55, 0x73, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0d, 0x76, 0x6f, 0x6c, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x5f, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x55, 0x73, 0x65, 0x64, 0x42, 0x79, 0x4e, 0x6f, - 0x64, 0x65, 0x52, 0x0b, 0x76, 0x6f, 0x6c, 0x55, 0x74, 0x69, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x22, - 0x46, 0x0a, 0x19, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x42, 0x79, 0x74, 0x65, - 0x73, 0x55, 0x73, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, - 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x04, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x1f, 0x0a, 0x1d, 0x53, 0x64, 0x6b, 0x46, 0x69, - 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x72, 0x69, 0x6d, 0x53, 0x74, 0x6f, 0x70, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x0a, 0x18, 0x53, 0x64, 0x6b, 0x41, - 0x75, 0x74, 0x6f, 0x46, 0x53, 0x54, 0x72, 0x69, 0x6d, 0x50, 0x75, 0x73, 0x68, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, - 0x64, 0x22, 0x35, 0x0a, 0x19, 0x53, 0x64, 0x6b, 0x41, 0x75, 0x74, 0x6f, 0x46, 0x53, 0x54, 0x72, - 0x69, 0x6d, 0x50, 0x75, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x36, 0x0a, 0x17, 0x53, 0x64, 0x6b, 0x41, - 0x75, 0x74, 0x6f, 0x46, 0x53, 0x54, 0x72, 0x69, 0x6d, 0x50, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, - 0x22, 0x34, 0x0a, 0x18, 0x53, 0x64, 0x6b, 0x41, 0x75, 0x74, 0x6f, 0x46, 0x53, 0x54, 0x72, 0x69, - 0x6d, 0x50, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xcd, 0x01, 0x0a, 0x0f, 0x46, 0x69, 0x6c, 0x65, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x22, 0xb9, 0x01, 0x0a, 0x15, 0x46, - 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x53, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, - 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x46, 0x53, - 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, - 0x4e, 0x47, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x53, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, - 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x46, 0x53, - 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x49, 0x4e, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, - 0x53, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x53, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, - 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x46, 0x53, 0x5f, - 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, - 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x46, 0x53, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x46, 0x41, - 0x49, 0x4c, 0x45, 0x44, 0x10, 0x06, 0x22, 0x4b, 0x0a, 0x17, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x6e, 0x61, 0x70, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x30, 0x0a, 0x14, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x12, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x22, 0xab, 0x01, 0x0a, 0x16, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x56, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1f, - 0x0a, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x4c, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x0c, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, - 0x0d, 0x66, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x73, - 0x67, 0x22, 0x51, 0x0a, 0x1e, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1f, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x22, 0x3e, 0x0a, 0x1f, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x49, 0x64, 0x22, 0xee, 0x01, 0x0a, 0x20, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4c, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x6c, 0x74, - 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x48, 0x65, 0x61, 0x6c, 0x74, - 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x22, 0x3c, 0x0a, 0x1d, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, - 0x64, 0x22, 0x20, 0x0a, 0x1e, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x5e, 0x0a, 0x26, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, - 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, - 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, - 0x65, 0x49, 0x64, 0x22, 0xf8, 0x01, 0x0a, 0x27, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x65, 0x0a, 0x09, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x73, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x1a, 0x66, 0x0a, 0x0e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3e, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x69, 0x6c, 0x65, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x6e, 0x61, 0x70, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x60, - 0x0a, 0x28, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, - 0x22, 0x2b, 0x0a, 0x29, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x0a, - 0x24, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0xeb, - 0x01, 0x0a, 0x25, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x46, - 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x69, - 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x1a, 0x63, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3d, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x56, 0x6f, 0x6c, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x20, 0x0a, 0x1e, - 0x53, 0x64, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x43, 0x61, 0x70, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x6c, - 0x0a, 0x1f, 0x53, 0x64, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x43, 0x61, 0x70, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x49, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0c, - 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0x1b, 0x0a, 0x19, - 0x53, 0x64, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x1a, 0x53, 0x64, - 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x73, 0x64, 0x6b, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x73, 0x64, 0x6b, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x22, 0xbe, 0x03, 0x0a, 0x14, 0x53, 0x64, 0x6b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x54, 0x0a, 0x07, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, - 0x6b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x48, 0x00, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x1a, 0xc7, 0x02, 0x0a, 0x12, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x51, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x65, - 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x04, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, - 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x01, 0x12, 0x10, 0x0a, - 0x0c, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x02, 0x12, - 0x0f, 0x0a, 0x0b, 0x43, 0x52, 0x45, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x53, 0x10, 0x03, - 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x42, - 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x10, 0x05, 0x12, 0x13, - 0x0a, 0x0f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, - 0x59, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10, 0x07, 0x12, - 0x0a, 0x0a, 0x06, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x53, 0x10, 0x08, 0x12, 0x10, 0x0a, 0x0c, 0x4d, - 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x41, 0x43, 0x48, 0x10, 0x09, 0x12, 0x08, 0x0a, - 0x04, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4c, 0x55, 0x53, 0x54, - 0x45, 0x52, 0x5f, 0x50, 0x41, 0x49, 0x52, 0x10, 0x0b, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x49, 0x47, - 0x52, 0x41, 0x54, 0x45, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, - 0x45, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x0d, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x22, 0xb3, 0x01, 0x0a, 0x0a, 0x53, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x12, 0x14, 0x0a, - 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, 0x61, - 0x74, 0x63, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x49, 0x0a, - 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x55, 0x53, 0x54, - 0x5f, 0x48, 0x41, 0x56, 0x45, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, - 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x61, 0x6a, 0x6f, 0x72, 0x10, 0x00, 0x12, 0x0a, 0x0a, - 0x05, 0x4d, 0x69, 0x6e, 0x6f, 0x72, 0x10, 0xb0, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x61, 0x74, - 0x63, 0x68, 0x10, 0x00, 0x1a, 0x02, 0x10, 0x01, 0x22, 0xc6, 0x01, 0x0a, 0x0e, 0x53, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x64, - 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x72, 0x69, - 0x76, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, - 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x64, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x45, 0x6e, 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, 0xb1, 0x02, 0x0a, 0x0c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, - 0x74, 0x65, 0x22, 0x5f, 0x0a, 0x0d, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x54, 0x79, - 0x70, 0x65, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x69, 0x67, 0x72, - 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x4d, - 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x10, 0x03, 0x22, 0x4e, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x0c, - 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x53, 0x74, 0x61, 0x67, 0x65, 0x10, 0x00, 0x12, 0x0a, - 0x0a, 0x06, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x65, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x6f, 0x6e, - 0x65, 0x10, 0x04, 0x22, 0x70, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x11, 0x0a, - 0x0d, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x00, - 0x12, 0x0a, 0x0a, 0x06, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, - 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x10, 0x02, 0x12, 0x0e, 0x0a, - 0x0a, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x10, 0x03, 0x12, 0x0a, 0x0a, - 0x06, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x74, 0x65, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x61, 0x6e, 0x63, 0x65, - 0x6c, 0x65, 0x64, 0x10, 0x06, 0x22, 0xba, 0x01, 0x0a, 0x18, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, - 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x49, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x69, 0x67, - 0x72, 0x61, 0x74, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, - 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, - 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, - 0x49, 0x64, 0x22, 0xf2, 0x03, 0x0a, 0x1b, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, - 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, - 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x55, 0x0a, 0x06, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x18, 0xc8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, - 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, - 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x12, 0x65, 0x0a, 0x0c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x18, 0xc9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x48, 0x00, 0x52, 0x0b, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x62, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x5f, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0xca, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x69, 0x67, - 0x72, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x48, 0x00, - 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x1a, 0x2c, 0x0a, 0x0d, - 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1b, 0x0a, - 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x1a, 0x2f, 0x0a, 0x12, 0x4d, 0x69, - 0x67, 0x72, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x1a, 0x13, 0x0a, 0x11, 0x4d, - 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, - 0x42, 0x05, 0x0a, 0x03, 0x6f, 0x70, 0x74, 0x22, 0x34, 0x0a, 0x19, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x62, 0x0a, - 0x1c, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, - 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0x34, 0x0a, 0x19, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, - 0x65, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, - 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x64, 0x0a, 0x1c, 0x53, 0x64, 0x6b, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x1f, 0x0a, - 0x1d, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, - 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb6, - 0x05, 0x0a, 0x10, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6c, - 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, - 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x28, 0x0a, 0x10, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x64, - 0x12, 0x48, 0x0a, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x67, - 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, - 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, - 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x72, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, - 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x62, 0x79, 0x74, - 0x65, 0x73, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x79, 0x74, 0x65, 0x73, - 0x5f, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, 0x79, 0x74, - 0x65, 0x73, 0x44, 0x6f, 0x6e, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x74, 0x61, 0x5f, 0x73, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x65, 0x74, 0x61, - 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x4d, 0x0a, 0x14, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x35, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x64, 0x0a, 0x1c, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, - 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x53, 0x0a, 0x19, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, - 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, - 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, - 0x64, 0x22, 0xc7, 0x01, 0x0a, 0x1a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, - 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x49, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x6e, 0x66, 0x6f, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x1a, 0x5e, 0x0a, 0x09, 0x49, - 0x6e, 0x66, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x64, 0x0a, 0x1d, 0x53, - 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x06, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0x52, 0x0a, 0x0f, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, - 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x3f, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, - 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x69, 0x73, - 0x61, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x10, 0x01, 0x12, - 0x14, 0x0a, 0x10, 0x4f, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x10, 0x02, 0x22, 0xa9, 0x02, 0x0a, 0x18, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x50, 0x61, 0x69, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x70, 0x12, 0x2e, - 0x0a, 0x13, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x30, - 0x0a, 0x14, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x72, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x4d, 0x6f, 0x64, - 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, - 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x49, - 0x64, 0x22, 0x77, 0x0a, 0x19, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, - 0x0a, 0x11, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x62, 0x0a, 0x1b, 0x53, 0x64, - 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x07, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x62, - 0x0a, 0x1c, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, - 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x22, 0xd9, 0x01, 0x0a, 0x19, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, - 0x69, 0x72, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x72, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39, - 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x2e, 0x4d, - 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x22, 0xc2, - 0x02, 0x0a, 0x1a, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x50, 0x72, - 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, - 0x11, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x12, 0x52, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, - 0x69, 0x72, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x45, 0x6e, 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, 0x3c, 0x0a, 0x1b, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x50, 0x61, 0x69, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, - 0x64, 0x22, 0x1e, 0x0a, 0x1c, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, - 0x61, 0x69, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x33, 0x0a, 0x1b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x1f, 0x0a, 0x1d, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x66, 0x0a, 0x1e, 0x53, 0x64, 0x6b, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x65, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, - 0x21, 0x0a, 0x1f, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, - 0x72, 0x52, 0x65, 0x73, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0x68, 0x0a, 0x20, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x50, 0x61, 0x69, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xec, 0x02, 0x0a, - 0x0f, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, - 0x65, 0x63, 0x75, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x47, 0x0a, 0x07, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, - 0x4d, 0x6f, 0x64, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x1a, - 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 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, 0x2e, 0x0a, 0x1c, 0x53, - 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x49, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x57, 0x0a, 0x16, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x70, 0x61, 0x69, 0x72, 0x5f, 0x69, 0x6e, - 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x69, 0x72, - 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x60, 0x0a, 0x1d, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, - 0x61, 0x69, 0x72, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x06, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x20, 0x0a, 0x1e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xeb, 0x01, 0x0a, 0x1d, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x05, 0x70, 0x61, 0x69, - 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x1a, 0x5a, 0x0a, 0x0a, 0x50, 0x61, - 0x69, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x69, 0x0a, 0x1f, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0xcf, 0x01, 0x0a, 0x07, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x3e, 0x0a, - 0x0c, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x0c, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x34, 0x0a, - 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, - 0x72, 0x65, 0x6e, 0x22, 0x40, 0x0a, 0x06, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x20, 0x0a, - 0x0b, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0b, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x70, 0x0a, 0x0f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, - 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x12, 0x2f, 0x0a, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, - 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x9c, 0x02, 0x0a, 0x0e, 0x4c, 0x6f, 0x63, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, - 0x4c, 0x0a, 0x09, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x69, 0x64, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x09, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x69, 0x64, 0x73, 0x1a, 0x39, 0x0a, - 0x0b, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 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, 0x1a, 0x3c, 0x0a, 0x0e, 0x44, 0x6f, 0x63, 0x6b, - 0x65, 0x72, 0x69, 0x64, 0x73, 0x45, 0x6e, 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, 0xed, 0x02, 0x0a, 0x17, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, - 0x67, 0x79, 0x12, 0x50, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x61, 0x66, - 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, - 0x70, 0x65, 0x63, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x41, 0x66, 0x66, 0x69, - 0x6e, 0x69, 0x74, 0x79, 0x12, 0x59, 0x0a, 0x15, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, - 0x61, 0x6e, 0x74, 0x69, 0x5f, 0x61, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x50, 0x6c, 0x61, - 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x13, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x41, 0x6e, 0x74, 0x69, 0x41, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x12, - 0x4d, 0x0a, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x61, 0x66, 0x66, 0x69, 0x6e, 0x69, - 0x74, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0e, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x56, - 0x0a, 0x14, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x61, 0x6e, 0x74, 0x69, 0x5f, 0x61, 0x66, - 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x70, - 0x65, 0x63, 0x52, 0x12, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x6e, 0x74, 0x69, 0x41, 0x66, - 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x22, 0x9a, 0x02, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, - 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x42, 0x0a, 0x0b, 0x65, 0x6e, 0x66, 0x6f, 0x72, - 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x45, - 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, - 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x61, - 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, - 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x70, 0x6f, - 0x6c, 0x6f, 0x67, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x56, 0x0a, 0x11, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x52, 0x10, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x22, 0xec, 0x01, 0x0a, 0x13, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x50, 0x6c, - 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x77, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x77, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x12, 0x42, 0x0a, 0x0b, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x6e, 0x66, 0x6f, 0x72, - 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x65, 0x6e, 0x66, 0x6f, - 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x70, 0x6f, 0x6c, - 0x6f, 0x67, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, - 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x56, 0x0a, 0x11, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x10, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0xe1, 0x01, 0x0a, 0x18, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x4e, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x4b, 0x0a, 0x08, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x06, 0x0a, 0x02, 0x49, 0x6e, 0x10, 0x00, 0x12, 0x09, 0x0a, - 0x05, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x78, 0x69, 0x73, - 0x74, 0x73, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x6f, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x45, - 0x78, 0x69, 0x73, 0x74, 0x10, 0x03, 0x12, 0x06, 0x0a, 0x02, 0x47, 0x74, 0x10, 0x04, 0x12, 0x06, - 0x0a, 0x02, 0x4c, 0x74, 0x10, 0x05, 0x22, 0x37, 0x0a, 0x19, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x56, 0x6f, 0x6c, 0x53, 0x6e, 0x61, 0x73, 0x68, 0x6f, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x22, - 0x31, 0x0a, 0x17, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x56, 0x6f, 0x6c, 0x53, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x22, 0xa3, 0x0f, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x61, 0x5f, 0x6c, - 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x68, 0x61, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x2a, 0x0a, 0x03, 0x63, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x18, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x03, 0x63, 0x6f, 0x73, 0x12, - 0x39, 0x0a, 0x0a, 0x69, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6f, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, - 0x09, 0x69, 0x6f, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x3d, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x42, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, - 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x65, 0x74, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x53, 0x65, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x10, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x12, 0x57, 0x0a, 0x11, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, - 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x56, 0x6f, 0x6c, 0x53, 0x6e, 0x61, 0x73, 0x68, 0x6f, 0x74, - 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x10, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x73, 0x74, - 0x69, 0x63, 0x6b, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x42, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x06, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x25, 0x0a, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x12, 0x3f, - 0x0a, 0x07, 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x42, 0x6f, - 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6c, 0x12, - 0x41, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x42, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, - 0x76, 0x34, 0x12, 0x1f, 0x0a, 0x0b, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x74, - 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x71, 0x75, 0x65, 0x75, 0x65, 0x44, 0x65, - 0x70, 0x74, 0x68, 0x12, 0x43, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, - 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x42, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x6e, - 0x6f, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x69, 0x6f, 0x5f, 0x73, - 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x49, 0x6f, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0a, 0x69, 0x6f, 0x53, 0x74, - 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x57, 0x0a, 0x12, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x50, 0x6c, 0x61, 0x63, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x11, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, - 0x4f, 0x0a, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x56, 0x6f, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x52, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x18, 0x13, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, - 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x3c, 0x0a, 0x0b, 0x65, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0a, 0x65, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4a, 0x0a, 0x0d, 0x66, 0x70, 0x5f, 0x70, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x42, 0x6f, - 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x66, 0x70, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x6f, - 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x53, 0x0a, 0x16, 0x73, 0x68, 0x61, 0x72, - 0x65, 0x64, 0x76, 0x34, 0x5f, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x6f, 0x75, 0x6e, 0x74, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x14, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, - 0x34, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x46, 0x0a, - 0x0b, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x18, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x42, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x78, 0x79, - 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x13, 0x69, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x5f, 0x62, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x72, 0x63, 0x18, 0x19, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x10, 0x69, 0x6f, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x6b, 0x75, - 0x70, 0x53, 0x72, 0x63, 0x12, 0x39, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x73, 0x70, - 0x65, 0x63, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, - 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, - 0x58, 0x0a, 0x15, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x5f, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x53, 0x70, 0x65, 0x63, 0x52, 0x13, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x42, 0x0a, 0x0d, 0x73, 0x68, 0x61, - 0x72, 0x65, 0x64, 0x76, 0x34, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x53, 0x70, 0x65, 0x63, 0x52, - 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x76, 0x34, 0x53, 0x70, 0x65, 0x63, 0x12, 0x46, 0x0a, - 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x66, 0x73, 0x74, 0x72, 0x69, 0x6d, 0x18, 0x1d, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x42, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x46, - 0x73, 0x74, 0x72, 0x69, 0x6d, 0x12, 0x3c, 0x0a, 0x0b, 0x69, 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x6f, - 0x74, 0x74, 0x6c, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6f, 0x54, - 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x0a, 0x69, 0x6f, 0x54, 0x68, 0x72, 0x6f, 0x74, - 0x74, 0x6c, 0x65, 0x12, 0x43, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x61, 0x68, 0x65, 0x61, 0x64, - 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x42, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x72, - 0x65, 0x61, 0x64, 0x61, 0x68, 0x65, 0x61, 0x64, 0x22, 0x60, 0x0a, 0x17, 0x53, 0x64, 0x6b, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x70, 0x74, 0x68, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x70, 0x74, 0x68, 0x22, 0x56, 0x0a, 0x18, 0x53, 0x64, - 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, - 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, - 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x07, 0x63, 0x61, 0x74, 0x61, 0x6c, - 0x6f, 0x67, 0x22, 0xdc, 0x01, 0x0a, 0x0e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0xc9, 0x01, 0x0a, 0x14, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, - 0x0a, 0x17, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, - 0x4d, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x56, - 0x45, 0x52, 0x49, 0x46, 0x59, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x4e, - 0x4f, 0x54, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, - 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, - 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x56, 0x45, 0x52, - 0x49, 0x46, 0x59, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x53, 0x54, 0x4f, - 0x50, 0x50, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, - 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, - 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x5f, - 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, - 0x05, 0x22, 0x3c, 0x0a, 0x1d, 0x53, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x22, - 0x88, 0x01, 0x0a, 0x1e, 0x53, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x75, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3d, 0x0a, 0x1e, 0x53, 0x64, - 0x6b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x22, 0x89, 0x01, 0x0a, 0x1f, 0x53, 0x64, - 0x6b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x56, - 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3b, 0x0a, 0x1c, 0x53, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x69, - 0x66, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x49, 0x64, 0x22, 0x39, 0x0a, 0x1d, 0x53, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2a, 0x8a, 0x03, - 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x41, 0x54, - 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x54, - 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4f, 0x4b, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x5f, 0x4f, 0x46, 0x46, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x03, 0x12, 0x10, 0x0a, - 0x0c, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, - 0x18, 0x0a, 0x14, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, - 0x5f, 0x51, 0x55, 0x4f, 0x52, 0x55, 0x4d, 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, - 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4d, 0x41, 0x49, - 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x54, - 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x44, 0x4f, 0x57, - 0x4e, 0x10, 0x08, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x54, - 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x44, 0x45, 0x47, 0x52, 0x41, 0x44, 0x45, 0x44, 0x10, 0x09, - 0x12, 0x17, 0x0a, 0x13, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x45, 0x45, 0x44, 0x53, - 0x5f, 0x52, 0x45, 0x42, 0x4f, 0x4f, 0x54, 0x10, 0x0a, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x45, 0x42, 0x41, - 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x0b, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x54, 0x41, 0x54, 0x55, - 0x53, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x44, 0x52, 0x49, 0x56, 0x45, 0x5f, - 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x0c, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x51, 0x55, 0x4f, 0x52, 0x55, - 0x4d, 0x5f, 0x4e, 0x4f, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x10, 0x0d, 0x12, 0x1a, - 0x0a, 0x16, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x4d, 0x41, 0x49, - 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x0e, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x54, - 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0x0f, 0x2a, 0x99, 0x01, 0x0a, 0x0a, 0x44, - 0x72, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x52, 0x49, - 0x56, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, - 0x14, 0x0a, 0x10, 0x44, 0x52, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, - 0x49, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x52, 0x49, 0x56, 0x45, 0x52, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, - 0x44, 0x52, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x42, 0x4a, 0x45, - 0x43, 0x54, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x52, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x45, 0x44, 0x10, 0x04, 0x12, - 0x15, 0x0a, 0x11, 0x44, 0x52, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, - 0x52, 0x41, 0x50, 0x48, 0x10, 0x05, 0x2a, 0xa8, 0x01, 0x0a, 0x06, 0x46, 0x53, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, - 0x45, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, - 0x54, 0x52, 0x46, 0x53, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x53, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x45, 0x58, 0x54, 0x34, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x53, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x46, 0x55, 0x53, 0x45, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x53, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x46, 0x53, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x46, - 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x46, 0x53, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, - 0x46, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x58, 0x46, 0x53, 0x10, 0x06, 0x12, 0x0f, 0x0a, - 0x0b, 0x46, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x5a, 0x46, 0x53, 0x10, 0x07, 0x12, 0x11, - 0x0a, 0x0d, 0x46, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x58, 0x46, 0x53, 0x76, 0x32, 0x10, - 0x08, 0x2a, 0xab, 0x01, 0x0a, 0x15, 0x47, 0x72, 0x61, 0x70, 0x68, 0x44, 0x72, 0x69, 0x76, 0x65, - 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x47, - 0x52, 0x41, 0x50, 0x48, 0x5f, 0x44, 0x52, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x43, 0x48, 0x41, 0x4e, - 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x25, - 0x0a, 0x21, 0x47, 0x52, 0x41, 0x50, 0x48, 0x5f, 0x44, 0x52, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x43, - 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x47, 0x52, 0x41, 0x50, 0x48, 0x5f, 0x44, - 0x52, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, 0x47, 0x52, 0x41, - 0x50, 0x48, 0x5f, 0x44, 0x52, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x03, 0x2a, - 0x74, 0x0a, 0x0c, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x16, 0x0a, 0x12, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x45, 0x56, 0x45, 0x52, - 0x49, 0x54, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4c, 0x41, 0x52, 0x4d, 0x10, 0x01, - 0x12, 0x19, 0x0a, 0x15, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x53, - 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x54, - 0x49, 0x46, 0x59, 0x10, 0x03, 0x2a, 0xa4, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, - 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x18, - 0x0a, 0x14, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x53, 0x4f, - 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x02, - 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x52, - 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x52, 0x49, - 0x56, 0x45, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x05, 0x2a, 0x87, 0x01, 0x0a, - 0x0f, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, - 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x4c, - 0x45, 0x52, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x4c, 0x45, 0x52, - 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x50, - 0x44, 0x41, 0x54, 0x45, 0x10, 0x03, 0x2a, 0x6a, 0x0a, 0x11, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x1c, 0x0a, 0x18, 0x56, - 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x52, - 0x41, 0x4d, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x56, 0x4f, 0x4c, - 0x55, 0x4d, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, - 0x5f, 0x4f, 0x46, 0x46, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, - 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x4f, 0x4e, - 0x10, 0x02, 0x2a, 0x32, 0x0a, 0x07, 0x43, 0x6f, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, - 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x4f, 0x57, 0x10, 0x01, - 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x45, 0x44, 0x49, 0x55, 0x4d, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, - 0x48, 0x49, 0x47, 0x48, 0x10, 0x03, 0x2a, 0xf9, 0x01, 0x0a, 0x09, 0x49, 0x6f, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x49, 0x4f, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, - 0x4c, 0x45, 0x5f, 0x53, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x00, 0x12, - 0x15, 0x0a, 0x11, 0x49, 0x4f, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x52, 0x41, - 0x4e, 0x44, 0x4f, 0x4d, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x49, 0x4f, 0x5f, 0x50, 0x52, 0x4f, - 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x44, 0x42, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x4f, 0x5f, - 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x44, 0x42, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, - 0x45, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4f, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, - 0x45, 0x5f, 0x43, 0x4d, 0x53, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4f, 0x5f, 0x50, 0x52, - 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, - 0x44, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4f, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, - 0x45, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4f, 0x5f, 0x50, - 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x07, 0x12, 0x16, 0x0a, - 0x12, 0x49, 0x4f, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x4a, 0x4f, 0x55, 0x52, - 0x4e, 0x41, 0x4c, 0x10, 0x08, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x4f, 0x5f, 0x50, 0x52, 0x4f, 0x46, - 0x49, 0x4c, 0x45, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x4a, 0x4f, 0x55, 0x52, 0x4e, 0x41, 0x4c, - 0x10, 0x09, 0x2a, 0x99, 0x02, 0x0a, 0x0b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x56, 0x4f, 0x4c, - 0x55, 0x4d, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, - 0x47, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x45, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, - 0x19, 0x0a, 0x15, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, - 0x41, 0x54, 0x54, 0x41, 0x43, 0x48, 0x45, 0x44, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x56, 0x4f, - 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x45, 0x54, 0x41, 0x43, - 0x48, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x45, 0x54, 0x41, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, - 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x06, 0x12, 0x18, 0x0a, 0x14, 0x56, 0x4f, - 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, - 0x45, 0x44, 0x10, 0x07, 0x12, 0x1e, 0x0a, 0x1a, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x52, 0x59, 0x5f, 0x44, 0x45, 0x54, 0x41, 0x43, 0x48, 0x49, - 0x4e, 0x47, 0x10, 0x08, 0x12, 0x18, 0x0a, 0x14, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x10, 0x09, 0x2a, 0x8f, - 0x01, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x16, 0x0a, 0x12, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, - 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x56, 0x4f, 0x4c, 0x55, 0x4d, - 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x50, 0x52, 0x45, - 0x53, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x50, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, - 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x4f, - 0x57, 0x4e, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x47, 0x52, 0x41, 0x44, 0x45, 0x44, 0x10, 0x04, - 0x2a, 0x9d, 0x01, 0x0a, 0x16, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x18, 0x46, - 0x53, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, - 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x53, 0x5f, - 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x48, 0x45, - 0x41, 0x4c, 0x54, 0x48, 0x59, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x46, 0x53, 0x5f, 0x48, 0x45, - 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x41, 0x46, 0x45, - 0x5f, 0x54, 0x4f, 0x5f, 0x46, 0x49, 0x58, 0x10, 0x02, 0x12, 0x25, 0x0a, 0x21, 0x46, 0x53, 0x5f, - 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x45, - 0x45, 0x44, 0x53, 0x5f, 0x49, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, - 0x2a, 0x5d, 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x75, - 0x6d, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x4d, 0x45, 0x44, - 0x49, 0x55, 0x4d, 0x5f, 0x4d, 0x41, 0x47, 0x4e, 0x45, 0x54, 0x49, 0x43, 0x10, 0x00, 0x12, 0x16, - 0x0a, 0x12, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x55, 0x4d, - 0x5f, 0x53, 0x53, 0x44, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, - 0x45, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x55, 0x4d, 0x5f, 0x4e, 0x56, 0x4d, 0x45, 0x10, 0x02, 0x2a, - 0x65, 0x0a, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x19, - 0x0a, 0x15, 0x41, 0x54, 0x54, 0x41, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, - 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x54, 0x54, - 0x41, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, - 0x41, 0x4c, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x54, 0x54, 0x41, 0x43, 0x48, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x53, 0x57, - 0x49, 0x54, 0x43, 0x48, 0x10, 0x02, 0x2a, 0x54, 0x0a, 0x0e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x5f, 0x46, - 0x4c, 0x41, 0x47, 0x53, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x11, - 0x0a, 0x0d, 0x4f, 0x50, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x53, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, - 0x01, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x53, 0x5f, 0x44, 0x45, - 0x54, 0x41, 0x43, 0x48, 0x5f, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x10, 0x02, 0x2a, 0x4c, 0x0a, 0x0c, - 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, - 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x10, 0x00, - 0x12, 0x12, 0x0a, 0x0e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x65, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x42, 0x61, 0x72, 0x65, 0x4d, 0x65, 0x74, 0x61, - 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x10, 0x02, 0x2a, 0x46, 0x0a, 0x0e, 0x45, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x0b, 0x0a, 0x07, - 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x58, 0x44, - 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x53, 0x43, 0x53, 0x49, 0x10, 0x02, 0x12, 0x07, 0x0a, - 0x03, 0x4e, 0x46, 0x53, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, - 0x10, 0x04, 0x2a, 0xaf, 0x01, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x50, 0x52, - 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, - 0x12, 0x16, 0x0a, 0x12, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, - 0x4f, 0x4c, 0x5f, 0x4e, 0x46, 0x53, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x58, - 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x53, 0x33, 0x10, 0x02, 0x12, - 0x16, 0x0a, 0x12, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, - 0x4c, 0x5f, 0x50, 0x58, 0x44, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x52, 0x4f, 0x58, 0x59, - 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x50, 0x55, 0x52, 0x45, 0x5f, 0x42, - 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, - 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x50, 0x55, 0x52, 0x45, 0x5f, 0x46, 0x49, - 0x4c, 0x45, 0x10, 0x05, 0x2a, 0x98, 0x01, 0x0a, 0x0e, 0x46, 0x61, 0x73, 0x74, 0x70, 0x61, 0x74, - 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x41, 0x53, 0x54, 0x50, - 0x41, 0x54, 0x48, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, - 0x0f, 0x46, 0x41, 0x53, 0x54, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, - 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x41, 0x53, 0x54, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x49, - 0x4e, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x46, 0x41, 0x53, - 0x54, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x55, 0x4e, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, - 0x44, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x41, 0x53, 0x54, 0x50, 0x41, 0x54, 0x48, 0x5f, - 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x41, 0x53, - 0x54, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x45, 0x44, 0x10, 0x05, 0x2a, - 0x81, 0x01, 0x0a, 0x10, 0x46, 0x61, 0x73, 0x74, 0x70, 0x61, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x16, 0x46, 0x41, 0x53, 0x54, 0x50, 0x41, 0x54, 0x48, - 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, - 0x12, 0x1d, 0x0a, 0x19, 0x46, 0x41, 0x53, 0x54, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x50, 0x52, 0x4f, - 0x54, 0x4f, 0x5f, 0x4e, 0x56, 0x4d, 0x45, 0x4f, 0x46, 0x5f, 0x54, 0x43, 0x50, 0x10, 0x01, 0x12, - 0x18, 0x0a, 0x14, 0x46, 0x41, 0x53, 0x54, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x50, 0x52, 0x4f, 0x54, - 0x4f, 0x5f, 0x49, 0x53, 0x43, 0x53, 0x49, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x46, 0x41, 0x53, - 0x54, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x5f, 0x4c, 0x4f, 0x43, 0x41, - 0x4c, 0x10, 0x03, 0x2a, 0x7f, 0x0a, 0x1b, 0x4e, 0x65, 0x61, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x52, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, - 0x67, 0x79, 0x12, 0x1b, 0x0a, 0x17, 0x4e, 0x45, 0x41, 0x52, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, - 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, - 0x21, 0x0a, 0x1d, 0x4e, 0x45, 0x41, 0x52, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x53, 0x54, 0x52, - 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x41, 0x47, 0x47, 0x52, 0x45, 0x53, 0x53, 0x49, 0x56, 0x45, - 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x4e, 0x45, 0x41, 0x52, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, - 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, - 0x45, 0x44, 0x10, 0x02, 0x2a, 0x71, 0x0a, 0x19, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, - 0x73, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, - 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x42, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x10, 0x00, 0x12, 0x0b, - 0x0a, 0x07, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, - 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x57, 0x72, 0x69, - 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x65, 0x61, 0x64, - 0x57, 0x72, 0x69, 0x74, 0x65, 0x10, 0x04, 0x2a, 0xce, 0x01, 0x0a, 0x0e, 0x53, 0x64, 0x6b, 0x54, - 0x69, 0x6d, 0x65, 0x57, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x64, - 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, 0x53, 0x75, 0x6e, 0x64, - 0x61, 0x79, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x64, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x57, - 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, 0x4d, 0x6f, 0x6e, 0x64, 0x61, 0x79, 0x10, 0x01, 0x12, 0x19, - 0x0a, 0x15, 0x53, 0x64, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, - 0x54, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x64, 0x6b, - 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, 0x57, 0x65, 0x64, 0x6e, 0x65, - 0x73, 0x64, 0x61, 0x79, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x64, 0x6b, 0x54, 0x69, 0x6d, - 0x65, 0x57, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, 0x54, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, - 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x64, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x65, - 0x6b, 0x64, 0x61, 0x79, 0x46, 0x72, 0x69, 0x64, 0x61, 0x79, 0x10, 0x05, 0x12, 0x1a, 0x0a, 0x16, - 0x53, 0x64, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, 0x53, 0x61, - 0x74, 0x75, 0x72, 0x64, 0x61, 0x79, 0x10, 0x06, 0x2a, 0x59, 0x0a, 0x18, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4a, 0x6f, 0x62, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, - 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, - 0x0a, 0x04, 0x44, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x41, 0x55, 0x53, - 0x45, 0x44, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, - 0x44, 0x10, 0x04, 0x2a, 0x7f, 0x0a, 0x19, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, - 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x74, 0x68, - 0x65, 0x72, 0x10, 0x02, 0x2a, 0xda, 0x01, 0x0a, 0x14, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, - 0x1b, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4f, - 0x70, 0x54, 0x79, 0x70, 0x65, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x20, - 0x0a, 0x1c, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4f, 0x70, 0x10, 0x01, - 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, - 0x70, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x64, 0x6b, 0x4e, 0x65, 0x61, 0x72, 0x53, 0x79, - 0x6e, 0x63, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x4f, 0x70, 0x10, - 0x03, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x64, 0x6b, 0x4e, 0x65, 0x61, 0x72, 0x53, 0x79, 0x6e, 0x63, - 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x41, 0x64, 0x64, 0x4f, 0x70, 0x10, - 0x04, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x64, 0x6b, 0x4e, 0x65, 0x61, 0x72, 0x53, 0x79, 0x6e, 0x63, - 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x70, 0x10, - 0x05, 0x2a, 0xf3, 0x04, 0x0a, 0x18, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, - 0x0a, 0x1f, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, - 0x6e, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x4e, - 0x6f, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x53, - 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x44, 0x6f, 0x6e, 0x65, 0x10, 0x02, 0x12, 0x23, 0x0a, - 0x1f, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x65, 0x64, - 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x50, 0x61, - 0x75, 0x73, 0x65, 0x64, 0x10, 0x04, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, - 0x70, 0x65, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x10, 0x05, 0x12, 0x22, 0x0a, 0x1e, 0x53, - 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x10, 0x06, 0x12, - 0x22, 0x0a, 0x1e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x10, 0x07, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x51, - 0x75, 0x65, 0x75, 0x65, 0x64, 0x10, 0x08, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x64, 0x6b, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, - 0x79, 0x70, 0x65, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x10, 0x09, 0x12, 0x23, 0x0a, 0x1f, - 0x53, 0x64, 0x6b, 0x4e, 0x65, 0x61, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x6f, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x10, - 0x0a, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x64, 0x6b, 0x4e, 0x65, 0x61, 0x72, 0x53, 0x79, 0x6e, 0x63, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x44, 0x6f, 0x6e, 0x65, 0x10, 0x0b, - 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x64, 0x6b, 0x4e, 0x65, 0x61, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x64, 0x10, - 0x0c, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x64, 0x6b, 0x4e, 0x65, 0x61, 0x72, 0x53, 0x79, 0x6e, 0x63, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, - 0x64, 0x10, 0x0d, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x64, 0x6b, 0x4e, 0x65, 0x61, 0x72, 0x53, 0x79, - 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x10, 0x0e, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x64, 0x6b, 0x4e, 0x65, 0x61, 0x72, 0x53, - 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x46, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x10, 0x0f, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x64, 0x6b, 0x4e, 0x65, 0x61, 0x72, - 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x10, 0x10, 0x2a, 0xa8, 0x02, 0x0a, 0x1c, 0x53, 0x64, 0x6b, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x64, 0x6b, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, - 0x00, 0x12, 0x25, 0x0a, 0x21, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x10, 0x01, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x64, 0x6b, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x10, 0x02, - 0x12, 0x24, 0x0a, 0x20, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x53, 0x74, 0x6f, 0x70, 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x64, 0x6b, 0x4e, 0x65, 0x61, - 0x72, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x10, 0x04, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x64, - 0x6b, 0x4e, 0x65, 0x61, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x10, 0x05, 0x12, - 0x21, 0x0a, 0x1d, 0x53, 0x64, 0x6b, 0x4e, 0x65, 0x61, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x70, - 0x10, 0x06, 0x2a, 0x2e, 0x0a, 0x0f, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, - 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, - 0x10, 0x01, 0x2a, 0x4a, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x42, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x41, - 0x52, 0x41, 0x4d, 0x5f, 0x42, 0x4b, 0x55, 0x50, 0x53, 0x52, 0x43, 0x10, 0x00, 0x12, 0x0f, 0x0a, - 0x0b, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x46, 0x41, 0x4c, 0x53, 0x45, 0x10, 0x01, 0x12, 0x0e, - 0x0a, 0x0a, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x55, 0x45, 0x10, 0x02, 0x32, 0xb0, - 0x02, 0x0a, 0x11, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x73, 0x12, 0xa6, 0x01, 0x0a, 0x14, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x35, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x64, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, - 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, - 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x30, 0x01, 0x12, 0x72, 0x0a, - 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x0f, 0x22, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x3a, 0x01, - 0x2a, 0x32, 0xd5, 0x04, 0x0a, 0x0f, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x6d, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, - 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x52, 0x6f, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x52, 0x6f, 0x6c, 0x65, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x22, 0x09, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, - 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x73, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x12, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, - 0x6b, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, - 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x7c, 0x0a, 0x07, 0x49, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x74, 0x12, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, - 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x71, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x12, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x52, 0x6f, 0x6c, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x52, 0x6f, - 0x6c, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x2a, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, - 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x6d, 0x0a, 0x06, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x12, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x52, 0x6f, 0x6c, 0x65, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, - 0x6b, 0x52, 0x6f, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x1a, 0x09, 0x2f, 0x76, 0x31, - 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x32, 0xb9, 0x08, 0x0a, 0x19, 0x4f, 0x70, - 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x54, 0x72, 0x69, 0x6d, 0x12, 0x8e, 0x01, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x12, 0x2e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x54, 0x72, 0x69, 0x6d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x54, 0x72, 0x69, 0x6d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x22, 0x19, 0x2f, 0x76, 0x31, 0x2f, - 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2d, 0x74, 0x72, 0x69, 0x6d, 0x2f, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x8f, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x2f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x54, 0x72, 0x69, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x54, 0x72, 0x69, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, - 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2d, 0x74, - 0x72, 0x69, 0x6d, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x9d, 0x01, 0x0a, 0x10, 0x41, - 0x75, 0x74, 0x6f, 0x46, 0x53, 0x54, 0x72, 0x69, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x41, 0x75, 0x74, 0x6f, 0x46, 0x53, 0x54, 0x72, 0x69, 0x6d, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x41, 0x75, 0x74, 0x6f, 0x46, 0x53, 0x54, 0x72, 0x69, 0x6d, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x28, 0x12, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x2d, 0x74, 0x72, 0x69, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x6f, 0x2d, 0x66, 0x73, 0x74, - 0x72, 0x69, 0x6d, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x99, 0x01, 0x0a, 0x0f, 0x41, - 0x75, 0x74, 0x6f, 0x46, 0x53, 0x54, 0x72, 0x69, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x64, 0x6b, 0x41, 0x75, 0x74, 0x6f, 0x46, 0x53, 0x54, 0x72, 0x69, 0x6d, 0x55, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x41, 0x75, 0x74, 0x6f, 0x46, 0x53, 0x54, 0x72, 0x69, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, - 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2d, - 0x74, 0x72, 0x69, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x6f, 0x2d, 0x66, 0x73, 0x74, 0x72, 0x69, 0x6d, - 0x2d, 0x75, 0x73, 0x61, 0x67, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, - 0x2d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, - 0x72, 0x69, 0x6d, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x72, - 0x69, 0x6d, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x6c, 0x65, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2d, 0x74, 0x72, 0x69, 0x6d, 0x2f, 0x73, 0x74, 0x6f, 0x70, - 0x3a, 0x01, 0x2a, 0x12, 0x98, 0x01, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x6f, 0x46, 0x53, 0x54, 0x72, - 0x69, 0x6d, 0x50, 0x75, 0x73, 0x68, 0x12, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x41, 0x75, 0x74, 0x6f, - 0x46, 0x53, 0x54, 0x72, 0x69, 0x6d, 0x50, 0x75, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x41, 0x75, 0x74, 0x6f, 0x46, 0x53, 0x54, 0x72, 0x69, - 0x6d, 0x50, 0x75, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x22, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2d, 0x74, 0x72, 0x69, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x6f, 0x2d, - 0x66, 0x73, 0x74, 0x72, 0x69, 0x6d, 0x2d, 0x70, 0x75, 0x73, 0x68, 0x3a, 0x01, 0x2a, 0x12, 0x94, - 0x01, 0x0a, 0x0d, 0x41, 0x75, 0x74, 0x6f, 0x46, 0x53, 0x54, 0x72, 0x69, 0x6d, 0x50, 0x6f, 0x70, - 0x12, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x41, 0x75, 0x74, 0x6f, 0x46, 0x53, 0x54, 0x72, 0x69, 0x6d, - 0x50, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x41, 0x75, 0x74, 0x6f, 0x46, 0x53, 0x54, 0x72, 0x69, 0x6d, 0x50, 0x6f, 0x70, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x22, 0x23, 0x2f, - 0x76, 0x31, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2d, 0x74, 0x72, - 0x69, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x6f, 0x2d, 0x66, 0x73, 0x74, 0x72, 0x69, 0x6d, 0x2d, 0x70, - 0x6f, 0x70, 0x3a, 0x01, 0x2a, 0x32, 0xee, 0x07, 0x0a, 0x1a, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x12, 0x91, 0x01, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x2f, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x30, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x66, - 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2f, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x92, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x30, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, - 0x12, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x2d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x8d, 0x01, - 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x2e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x6f, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x6f, 0x70, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x22, - 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2d, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x3a, 0x01, 0x2a, 0x12, 0xaf, 0x01, - 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x12, - 0x37, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x46, 0x69, - 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x69, 0x73, - 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x76, 0x31, 0x2f, - 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2d, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x2d, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x12, - 0xba, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x73, 0x12, 0x39, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x2a, 0x22, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x2d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x2d, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xa7, 0x01, 0x0a, - 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x12, 0x35, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x2d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x2d, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x32, 0xb3, 0x02, 0x0a, 0x13, 0x4f, 0x70, 0x65, 0x6e, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x96, - 0x01, 0x0a, 0x0c, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, - 0x2f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x43, 0x61, 0x70, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x30, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x43, 0x61, - 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x31, 0x2f, - 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2f, 0x63, 0x61, 0x70, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x82, 0x01, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x69, 0x65, 0x73, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0xb1, 0x01, 0x0a, - 0x12, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x12, 0x9a, 0x01, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, - 0x32, 0xee, 0x06, 0x0a, 0x16, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x12, 0x82, 0x01, 0x0a, 0x06, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x50, 0x61, 0x69, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x76, 0x31, - 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x70, 0x61, 0x69, 0x72, 0x73, 0x3a, 0x01, 0x2a, - 0x12, 0x8f, 0x01, 0x0a, 0x07, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x12, 0x2d, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x49, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, - 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x49, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x70, 0x61, 0x69, 0x72, 0x73, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x2f, 0x7b, 0x69, - 0x64, 0x7d, 0x12, 0x88, 0x01, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x12, 0x2f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, - 0x72, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x30, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, - 0x69, 0x72, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x76, 0x31, - 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x70, 0x61, 0x69, 0x72, 0x73, 0x12, 0x8b, 0x01, - 0x0a, 0x08, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2e, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x47, 0x65, 0x74, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x47, 0x65, 0x74, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x70, 0x61, 0x69, 0x72, 0x73, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x94, 0x01, 0x0a, 0x0a, - 0x52, 0x65, 0x73, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x30, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x65, 0x74, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, - 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x22, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x70, 0x61, 0x69, 0x72, 0x73, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x3a, - 0x01, 0x2a, 0x12, 0x8c, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x2c, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, - 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x69, 0x72, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x1f, 0x2a, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x70, - 0x61, 0x69, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x7d, 0x32, 0xb9, 0x05, 0x0a, 0x19, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, - 0x90, 0x01, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x12, 0x32, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x33, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, - 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x64, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x73, 0x12, 0xa6, 0x01, 0x0a, 0x07, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x12, 0x2f, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x30, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x2f, 0x69, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x74, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x64, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xaa, 0x01, 0x0a, 0x08, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x12, 0x30, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x76, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x41, 0x63, 0x74, - 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x22, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, - 0x74, 0x65, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xb2, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x61, - 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x12, 0x32, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, - 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x44, 0x65, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x22, 0x33, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x2f, 0x64, 0x65, 0x61, - 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x32, 0xb9, 0x0a, - 0x0a, 0x0f, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6f, - 0x6c, 0x12, 0x8d, 0x01, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x2c, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, - 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x69, 0x7a, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x20, 0x1a, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x70, 0x6f, - 0x6f, 0x6c, 0x73, 0x2f, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x2f, 0x7b, 0x75, 0x75, 0x69, 0x64, - 0x7d, 0x12, 0x8a, 0x01, 0x0a, 0x09, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, - 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x1c, 0x1a, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x70, - 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0xa5, - 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4a, - 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4a, 0x6f, - 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x25, 0x1a, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x70, 0x6f, - 0x6f, 0x6c, 0x73, 0x2f, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x6a, 0x6f, - 0x62, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xa9, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x30, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, - 0x76, 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, - 0x72, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x6a, 0x6f, 0x62, 0x2f, 0x7b, 0x69, - 0x64, 0x7d, 0x12, 0xa7, 0x01, 0x0a, 0x16, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x31, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x64, 0x6b, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x62, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x32, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, - 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x72, - 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x6a, 0x6f, 0x62, 0x12, 0xaf, 0x01, 0x0a, - 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x32, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x72, 0x65, 0x62, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0xa6, - 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x53, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x2f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x47, 0x65, 0x74, - 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x25, 0x12, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x70, - 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0xaf, 0x01, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x12, 0x32, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, - 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x25, 0x2a, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x32, 0x86, 0x01, 0x0a, 0x10, 0x4f, 0x70, - 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x44, 0x69, 0x61, 0x67, 0x73, 0x12, 0x72, - 0x0a, 0x07, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x44, - 0x69, 0x61, 0x67, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x44, 0x69, 0x61, 0x67, 0x73, 0x43, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x0e, 0x22, 0x09, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x69, 0x61, 0x67, 0x73, 0x3a, - 0x01, 0x2a, 0x32, 0xec, 0x02, 0x0a, 0x0e, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x6f, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, - 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x12, 0x1a, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, - 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x75, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, - 0x2f, 0x76, 0x31, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x72, 0x0a, - 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x12, 0x28, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x10, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x6a, 0x6f, 0x62, - 0x73, 0x32, 0x8b, 0x0c, 0x0a, 0x0f, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x7f, 0x0a, 0x07, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, - 0x12, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4e, 0x6f, - 0x64, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x6e, - 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x2f, 0x7b, 0x6e, 0x6f, - 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x91, 0x01, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4e, - 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4e, 0x6f, - 0x64, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, - 0x12, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x74, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x73, 0x0a, 0x09, 0x45, 0x6e, - 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x12, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, - 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, - 0x9c, 0x01, 0x0a, 0x14, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, - 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x33, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4e, 0x6f, - 0x64, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x57, 0x69, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x31, - 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x9b, - 0x01, 0x0a, 0x11, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x42, 0x79, - 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x30, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x42, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, 0x65, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x42, 0x79, 0x4e, 0x6f, 0x64, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1b, 0x12, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x75, 0x73, 0x61, - 0x67, 0x65, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa1, 0x01, 0x0a, - 0x13, 0x52, 0x65, 0x6c, 0x61, 0x78, 0x65, 0x64, 0x52, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x50, - 0x75, 0x72, 0x67, 0x65, 0x12, 0x32, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, - 0x6c, 0x61, 0x78, 0x65, 0x64, 0x52, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x75, 0x72, 0x67, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4e, 0x6f, - 0x64, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x78, 0x65, 0x64, 0x52, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, - 0x50, 0x75, 0x72, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x73, - 0x2f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, - 0x12, 0x96, 0x01, 0x0a, 0x10, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x44, - 0x72, 0x61, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4a, 0x6f, 0x62, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x1a, - 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x61, 0x74, 0x74, 0x61, 0x63, - 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x2f, 0x7b, 0x6e, 0x6f, - 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0xac, 0x01, 0x0a, 0x11, 0x43, 0x6f, - 0x72, 0x64, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, - 0x30, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x41, - 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x31, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x72, 0x64, 0x6f, - 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x1a, 0x27, 0x2f, 0x76, - 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x2f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0xb1, 0x01, 0x0a, 0x13, 0x55, 0x6e, 0x63, - 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x12, 0x32, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x55, 0x6e, 0x63, 0x6f, 0x72, 0x64, - 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x55, 0x6e, - 0x63, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x2b, 0x1a, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x61, 0x74, 0x74, - 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x2f, - 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x90, 0x01, 0x0a, - 0x15, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x55, 0x73, 0x65, 0x64, - 0x42, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x55, 0x73, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x42, 0x79, - 0x74, 0x65, 0x73, 0x55, 0x73, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, - 0x65, 0x73, 0x2f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x75, 0x73, 0x65, 0x64, 0x3a, 0x01, 0x2a, 0x32, - 0x9d, 0x04, 0x0a, 0x11, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x6c, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, - 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x0f, 0x22, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x3a, 0x01, 0x2a, 0x12, 0x75, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x24, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x18, 0x2a, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2f, 0x7b, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x8e, 0x01, 0x0a, 0x0b, 0x47, - 0x72, 0x61, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x29, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x47, 0x72, - 0x61, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2f, 0x7b, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x91, 0x01, 0x0a, 0x0c, - 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x2a, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, 0x1d, 0x2f, - 0x76, 0x31, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2f, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, - 0x2f, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x32, - 0xee, 0x12, 0x0a, 0x11, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x73, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, - 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x22, 0x0b, 0x2f, 0x76, 0x31, 0x2f, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x76, 0x0a, 0x05, 0x43, 0x6c, - 0x6f, 0x6e, 0x65, 0x12, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, - 0x6c, 0x6f, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, - 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x76, - 0x31, 0x2f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x3a, - 0x01, 0x2a, 0x12, 0x7c, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x27, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x2a, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x73, 0x2f, 0x7b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x7d, - 0x12, 0x87, 0x01, 0x0a, 0x07, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x12, 0x28, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x76, 0x31, 0x2f, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x2f, 0x7b, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xaa, 0x01, 0x0a, 0x12, 0x49, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x57, 0x69, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x73, 0x12, 0x33, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x74, 0x57, 0x69, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x57, 0x69, 0x74, 0x68, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x23, 0x22, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x73, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x77, 0x69, 0x74, 0x68, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x7f, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x12, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x1a, 0x17, 0x2f, 0x76, - 0x31, 0x2f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2f, 0x7b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x7f, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x12, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x76, 0x31, 0x2f, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2f, 0x7b, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x97, 0x01, 0x0a, 0x0d, 0x43, 0x61, - 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, - 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x55, - 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, - 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x55, - 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x73, 0x2f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2f, 0x7b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, - 0x69, 0x64, 0x7d, 0x12, 0x79, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x12, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x6e, 0x75, 0x6d, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x0d, 0x12, 0x0b, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x12, 0xa5, - 0x01, 0x0a, 0x14, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x35, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, - 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2f, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x95, 0x01, 0x0a, 0x0e, 0x53, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x73, 0x2f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xa0, - 0x01, 0x0a, 0x0f, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x12, 0x30, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, - 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2f, 0x73, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x3a, 0x01, - 0x2a, 0x12, 0x9b, 0x01, 0x0a, 0x11, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x45, 0x6e, - 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x12, 0x32, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, - 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x45, - 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x12, - 0xd3, 0x01, 0x0a, 0x1c, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x45, 0x6e, 0x75, 0x6d, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, - 0x12, 0x3d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, - 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x3e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x22, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x73, 0x2f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x2f, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, - 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0xc2, 0x01, 0x0a, 0x16, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x12, 0x37, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x53, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x22, 0x2a, 0x2f, 0x76, 0x31, - 0x2f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x83, 0x01, 0x0a, 0x0d, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x28, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x3a, 0x01, 0x2a, - 0x32, 0x78, 0x0a, 0x10, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x12, 0x64, 0x0a, 0x05, 0x57, 0x61, 0x74, 0x63, 0x68, 0x12, 0x20, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x64, 0x6b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x22, 0x09, 0x2f, 0x76, 0x31, 0x2f, - 0x77, 0x61, 0x74, 0x63, 0x68, 0x3a, 0x01, 0x2a, 0x30, 0x01, 0x32, 0x99, 0x04, 0x0a, 0x16, 0x4f, - 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x41, - 0x74, 0x74, 0x61, 0x63, 0x68, 0x12, 0x7e, 0x0a, 0x06, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x12, - 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, - 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x22, 0x16, 0x2f, 0x76, 0x31, 0x2f, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x2f, 0x61, 0x74, 0x74, 0x61, - 0x63, 0x68, 0x3a, 0x01, 0x2a, 0x12, 0x7e, 0x0a, 0x06, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x12, - 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x63, - 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x22, 0x16, 0x2f, 0x76, 0x31, 0x2f, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x2f, 0x64, 0x65, 0x74, 0x61, - 0x63, 0x68, 0x3a, 0x01, 0x2a, 0x12, 0x7a, 0x0a, 0x05, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x75, - 0x6e, 0x74, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x2f, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x01, - 0x2a, 0x12, 0x82, 0x01, 0x0a, 0x07, 0x55, 0x6e, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x6e, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x55, 0x6e, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x2f, 0x75, 0x6e, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x3a, 0x01, 0x2a, 0x32, 0xad, 0x03, 0x0a, 0x12, 0x4f, 0x70, 0x65, 0x6e, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x12, 0x82, 0x01, - 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x2c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x76, - 0x31, 0x2f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x3a, - 0x01, 0x2a, 0x12, 0x8c, 0x01, 0x0a, 0x06, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x12, 0x2d, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x43, - 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x43, 0x61, - 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x3a, 0x01, - 0x2a, 0x12, 0x82, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2d, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, - 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x6d, - 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x32, 0xe4, 0x04, 0x0a, 0x16, 0x4f, 0x70, 0x65, 0x6e, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x07, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x12, 0x2d, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x64, 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x2f, 0x7b, - 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, - 0x82, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, - 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x90, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, - 0x2c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x64, 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x23, 0x2a, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x93, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x12, 0x2c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x1a, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x32, 0xb2, 0x08, - 0x0a, 0x16, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x7f, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x12, 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x22, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x8f, 0x01, 0x0a, 0x06, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x1a, 0x1f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x2f, 0x7b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x85, 0x01, 0x0a, 0x09, - 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x12, 0x97, 0x01, 0x0a, 0x07, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x12, - 0x2c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x49, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x64, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x2f, 0x7b, 0x63, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x8c, 0x01, - 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x2a, 0x1f, 0x2f, 0x76, 0x31, - 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x2f, 0x7b, 0x63, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x9b, 0x01, 0x0a, - 0x08, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, - 0x12, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x7b, 0x63, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xb5, 0x01, 0x0a, 0x10, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, - 0x35, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x2a, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x73, 0x2f, 0x7b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, - 0x64, 0x7d, 0x32, 0xff, 0x05, 0x0a, 0x19, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x12, 0x8c, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2f, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, - 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, - 0x8c, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2f, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, - 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x1a, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x92, - 0x01, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x12, 0x32, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x33, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, - 0x76, 0x31, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x69, 0x65, 0x73, 0x12, 0x9b, 0x01, 0x0a, 0x07, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x12, - 0x30, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x31, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x76, - 0x31, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, - 0x65, 0x73, 0x2f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x7d, 0x12, 0x90, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x2f, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x64, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x2a, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x32, 0x9e, 0x12, 0x0a, 0x16, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, - 0x82, 0x01, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, - 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x97, 0x01, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x1b, 0x22, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x62, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3a, 0x01, 0x2a, 0x12, 0x8d, - 0x01, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x2d, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1d, 0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x62, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x73, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x92, - 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x2c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x2a, 0x23, - 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, - 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2f, 0x7b, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, - 0x69, 0x64, 0x7d, 0x12, 0x95, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, - 0x6c, 0x12, 0x2f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1a, 0x2f, 0x76, - 0x31, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x64, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x61, 0x6c, 0x6c, 0x3a, 0x01, 0x2a, 0x12, 0xbe, 0x01, 0x0a, 0x14, - 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x73, 0x12, 0x3a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x57, 0x69, - 0x74, 0x68, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x3b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x22, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x89, 0x01, 0x0a, - 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x17, 0x2f, 0x76, - 0x31, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x8d, 0x01, 0x0a, 0x07, 0x43, 0x61, 0x74, - 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x2d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x18, 0x2f, 0x76, 0x31, - 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x63, 0x61, - 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x3a, 0x01, 0x2a, 0x12, 0x9a, 0x01, 0x0a, 0x07, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x31, - 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x68, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x7b, 0x73, 0x72, 0x63, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x9d, 0x01, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x31, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x62, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x9b, 0x01, 0x0a, 0x0b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x62, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, - 0x3a, 0x01, 0x2a, 0x12, 0x9b, 0x01, 0x0a, 0x0b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x1f, 0x1a, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x62, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x3a, 0x01, - 0x2a, 0x12, 0xad, 0x01, 0x0a, 0x0b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x12, 0x31, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, - 0x2a, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x73, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x62, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, - 0x7d, 0x12, 0xa1, 0x01, 0x0a, 0x0e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, - 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x7e, 0x0a, 0x04, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2a, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x64, 0x6b, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x69, - 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, - 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, - 0x2f, 0x73, 0x69, 0x7a, 0x65, 0x32, 0x8f, 0x0a, 0x0a, 0x11, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x91, 0x01, 0x0a, 0x06, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x32, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, 0x6e, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, - 0x97, 0x01, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x12, 0x35, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x07, 0x49, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x69, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x74, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x91, 0x01, 0x0a, - 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x32, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, - 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, - 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x1a, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x3a, 0x01, 0x2a, - 0x12, 0x95, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x32, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, - 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x33, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, 0x2f, 0x76, - 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, - 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xac, 0x01, 0x0a, 0x0a, 0x53, 0x65, 0x74, - 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x36, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, - 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x65, - 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x37, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, - 0x22, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0xae, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x12, 0x3a, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, - 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, 0x6e, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x31, - 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, - 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x9c, 0x01, 0x0a, 0x07, 0x52, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x12, 0x33, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x6c, 0x65, 0x61, - 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x4f, - 0x70, 0x65, 0x6e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x22, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x72, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x3a, 0x01, 0x2a, 0x32, 0xcb, 0x03, 0x0a, 0x19, 0x4f, 0x70, 0x65, 0x6e, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x8e, 0x01, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, - 0x2e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x22, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x65, - 0x72, 0x69, 0x66, 0x79, 0x2d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2f, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x8f, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x2f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x76, - 0x31, 0x2f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x2d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x8a, 0x01, 0x0a, 0x04, 0x53, 0x74, 0x6f, - 0x70, 0x12, 0x2d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x75, 0x6d, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x65, - 0x72, 0x69, 0x66, 0x79, 0x2d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2f, 0x73, 0x74, - 0x6f, 0x70, 0x3a, 0x01, 0x2a, 0x42, 0x22, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x50, 0x01, 0x5a, 0x09, - 0x2e, 0x2f, 0x61, 0x70, 0x69, 0x3b, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, -} - -var ( - file_api_api_proto_rawDescOnce sync.Once - file_api_api_proto_rawDescData = file_api_api_proto_rawDesc -) - -func file_api_api_proto_rawDescGZIP() []byte { - file_api_api_proto_rawDescOnce.Do(func() { - file_api_api_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_api_proto_rawDescData) - }) - return file_api_api_proto_rawDescData -} - -var file_api_api_proto_enumTypes = make([]protoimpl.EnumInfo, 60) -var file_api_api_proto_msgTypes = make([]protoimpl.MessageInfo, 465) -var file_api_api_proto_goTypes = []interface{}{ - (Status)(0), // 0: openstorage.api.Status - (DriverType)(0), // 1: openstorage.api.DriverType - (FSType)(0), // 2: openstorage.api.FSType - (GraphDriverChangeType)(0), // 3: openstorage.api.GraphDriverChangeType - (SeverityType)(0), // 4: openstorage.api.SeverityType - (ResourceType)(0), // 5: openstorage.api.ResourceType - (AlertActionType)(0), // 6: openstorage.api.AlertActionType - (VolumeActionParam)(0), // 7: openstorage.api.VolumeActionParam - (CosType)(0), // 8: openstorage.api.CosType - (IoProfile)(0), // 9: openstorage.api.IoProfile - (VolumeState)(0), // 10: openstorage.api.VolumeState - (VolumeStatus)(0), // 11: openstorage.api.VolumeStatus - (FilesystemHealthStatus)(0), // 12: openstorage.api.FilesystemHealthStatus - (StorageMedium)(0), // 13: openstorage.api.StorageMedium - (AttachState)(0), // 14: openstorage.api.AttachState - (OperationFlags)(0), // 15: openstorage.api.OperationFlags - (HardwareType)(0), // 16: openstorage.api.HardwareType - (ExportProtocol)(0), // 17: openstorage.api.ExportProtocol - (ProxyProtocol)(0), // 18: openstorage.api.ProxyProtocol - (FastpathStatus)(0), // 19: openstorage.api.FastpathStatus - (FastpathProtocol)(0), // 20: openstorage.api.FastpathProtocol - (NearSyncReplicationStrategy)(0), // 21: openstorage.api.NearSyncReplicationStrategy - (AnonymousBucketAccessMode)(0), // 22: openstorage.api.AnonymousBucketAccessMode - (SdkTimeWeekday)(0), // 23: openstorage.api.SdkTimeWeekday - (StorageRebalanceJobState)(0), // 24: openstorage.api.StorageRebalanceJobState - (SdkCloudBackupClusterType)(0), // 25: openstorage.api.SdkCloudBackupClusterType - (SdkCloudBackupOpType)(0), // 26: openstorage.api.SdkCloudBackupOpType - (SdkCloudBackupStatusType)(0), // 27: openstorage.api.SdkCloudBackupStatusType - (SdkCloudBackupRequestedState)(0), // 28: openstorage.api.SdkCloudBackupRequestedState - (EnforcementType)(0), // 29: openstorage.api.EnforcementType - (RestoreParamBoolType)(0), // 30: openstorage.api.RestoreParamBoolType - (Xattr_Value)(0), // 31: openstorage.api.Xattr.Value - (Sharedv4ServiceSpec_ServiceType)(0), // 32: openstorage.api.Sharedv4ServiceSpec.ServiceType - (Sharedv4FailoverStrategy_Value)(0), // 33: openstorage.api.Sharedv4FailoverStrategy.Value - (ScanPolicy_ScanTrigger)(0), // 34: openstorage.api.ScanPolicy.ScanTrigger - (ScanPolicy_ScanAction)(0), // 35: openstorage.api.ScanPolicy.ScanAction - (VolumeSpecPolicy_PolicyOp)(0), // 36: openstorage.api.VolumeSpecPolicy.PolicyOp - (Ownership_AccessType)(0), // 37: openstorage.api.Ownership.AccessType - (StorageNode_SecurityStatus)(0), // 38: openstorage.api.StorageNode.SecurityStatus - (Job_Type)(0), // 39: openstorage.api.Job.Type - (Job_State)(0), // 40: openstorage.api.Job.State - (DiagsCollectionStatus_State)(0), // 41: openstorage.api.DiagsCollectionStatus.State - (StorageRebalanceTriggerThreshold_Type)(0), // 42: openstorage.api.StorageRebalanceTriggerThreshold.Type - (StorageRebalanceTriggerThreshold_Metric)(0), // 43: openstorage.api.StorageRebalanceTriggerThreshold.Metric - (SdkStorageRebalanceRequest_Mode)(0), // 44: openstorage.api.SdkStorageRebalanceRequest.Mode - (StorageRebalanceWorkSummary_Type)(0), // 45: openstorage.api.StorageRebalanceWorkSummary.Type - (StorageRebalanceAudit_StorageRebalanceAction)(0), // 46: openstorage.api.StorageRebalanceAudit.StorageRebalanceAction - (SdkStoragePool_OperationStatus)(0), // 47: openstorage.api.SdkStoragePool.OperationStatus - (SdkStoragePool_OperationType)(0), // 48: openstorage.api.SdkStoragePool.OperationType - (SdkStoragePool_ResizeOperationType)(0), // 49: openstorage.api.SdkStoragePool.ResizeOperationType - (FilesystemTrim_FilesystemTrimStatus)(0), // 50: openstorage.api.FilesystemTrim.FilesystemTrimStatus - (FilesystemCheck_FilesystemCheckStatus)(0), // 51: openstorage.api.FilesystemCheck.FilesystemCheckStatus - (SdkServiceCapability_OpenStorageService_Type)(0), // 52: openstorage.api.SdkServiceCapability.OpenStorageService.Type - (SdkVersion_Version)(0), // 53: openstorage.api.SdkVersion.Version - (CloudMigrate_OperationType)(0), // 54: openstorage.api.CloudMigrate.OperationType - (CloudMigrate_Stage)(0), // 55: openstorage.api.CloudMigrate.Stage - (CloudMigrate_Status)(0), // 56: openstorage.api.CloudMigrate.Status - (ClusterPairMode_Mode)(0), // 57: openstorage.api.ClusterPairMode.Mode - (LabelSelectorRequirement_Operator)(0), // 58: openstorage.api.LabelSelectorRequirement.Operator - (VerifyChecksum_VerifyChecksumStatus)(0), // 59: openstorage.api.VerifyChecksum.VerifyChecksumStatus - (*StorageResource)(nil), // 60: openstorage.api.StorageResource - (*StoragePool)(nil), // 61: openstorage.api.StoragePool - (*SchedulerTopology)(nil), // 62: openstorage.api.SchedulerTopology - (*StoragePoolOperation)(nil), // 63: openstorage.api.StoragePoolOperation - (*TopologyRequirement)(nil), // 64: openstorage.api.TopologyRequirement - (*VolumeLocator)(nil), // 65: openstorage.api.VolumeLocator - (*VolumeInspectOptions)(nil), // 66: openstorage.api.VolumeInspectOptions - (*Source)(nil), // 67: openstorage.api.Source - (*Group)(nil), // 68: openstorage.api.Group - (*IoStrategy)(nil), // 69: openstorage.api.IoStrategy - (*Xattr)(nil), // 70: openstorage.api.Xattr - (*ExportSpec)(nil), // 71: openstorage.api.ExportSpec - (*NFSProxySpec)(nil), // 72: openstorage.api.NFSProxySpec - (*S3ProxySpec)(nil), // 73: openstorage.api.S3ProxySpec - (*PXDProxySpec)(nil), // 74: openstorage.api.PXDProxySpec - (*PureBlockSpec)(nil), // 75: openstorage.api.PureBlockSpec - (*PureFileSpec)(nil), // 76: openstorage.api.PureFileSpec - (*ProxySpec)(nil), // 77: openstorage.api.ProxySpec - (*Sharedv4ServiceSpec)(nil), // 78: openstorage.api.Sharedv4ServiceSpec - (*Sharedv4FailoverStrategy)(nil), // 79: openstorage.api.Sharedv4FailoverStrategy - (*Sharedv4Spec)(nil), // 80: openstorage.api.Sharedv4Spec - (*MountOptions)(nil), // 81: openstorage.api.MountOptions - (*FastpathReplState)(nil), // 82: openstorage.api.FastpathReplState - (*FastpathConfig)(nil), // 83: openstorage.api.FastpathConfig - (*ScanPolicy)(nil), // 84: openstorage.api.ScanPolicy - (*IoThrottle)(nil), // 85: openstorage.api.IoThrottle - (*VolumeSpec)(nil), // 86: openstorage.api.VolumeSpec - (*VolumeSpecUpdate)(nil), // 87: openstorage.api.VolumeSpecUpdate - (*VolumeSpecPolicy)(nil), // 88: openstorage.api.VolumeSpecPolicy - (*ReplicaSet)(nil), // 89: openstorage.api.ReplicaSet - (*RuntimeStateMap)(nil), // 90: openstorage.api.RuntimeStateMap - (*Ownership)(nil), // 91: openstorage.api.Ownership - (*Volume)(nil), // 92: openstorage.api.Volume - (*Stats)(nil), // 93: openstorage.api.Stats - (*CapacityUsageInfo)(nil), // 94: openstorage.api.CapacityUsageInfo - (*VolumeUsage)(nil), // 95: openstorage.api.VolumeUsage - (*VolumeUsageByNode)(nil), // 96: openstorage.api.VolumeUsageByNode - (*VolumeBytesUsed)(nil), // 97: openstorage.api.VolumeBytesUsed - (*VolumeBytesUsedByNode)(nil), // 98: openstorage.api.VolumeBytesUsedByNode - (*FstrimVolumeUsageInfo)(nil), // 99: openstorage.api.FstrimVolumeUsageInfo - (*RelaxedReclaimPurge)(nil), // 100: openstorage.api.RelaxedReclaimPurge - (*SdkStoragePolicy)(nil), // 101: openstorage.api.SdkStoragePolicy - (*Alert)(nil), // 102: openstorage.api.Alert - (*SdkAlertsTimeSpan)(nil), // 103: openstorage.api.SdkAlertsTimeSpan - (*SdkAlertsCountSpan)(nil), // 104: openstorage.api.SdkAlertsCountSpan - (*SdkAlertsOption)(nil), // 105: openstorage.api.SdkAlertsOption - (*SdkAlertsResourceTypeQuery)(nil), // 106: openstorage.api.SdkAlertsResourceTypeQuery - (*SdkAlertsAlertTypeQuery)(nil), // 107: openstorage.api.SdkAlertsAlertTypeQuery - (*SdkAlertsResourceIdQuery)(nil), // 108: openstorage.api.SdkAlertsResourceIdQuery - (*SdkAlertsQuery)(nil), // 109: openstorage.api.SdkAlertsQuery - (*SdkAlertsEnumerateWithFiltersRequest)(nil), // 110: openstorage.api.SdkAlertsEnumerateWithFiltersRequest - (*SdkAlertsEnumerateWithFiltersResponse)(nil), // 111: openstorage.api.SdkAlertsEnumerateWithFiltersResponse - (*SdkAlertsDeleteRequest)(nil), // 112: openstorage.api.SdkAlertsDeleteRequest - (*SdkAlertsDeleteResponse)(nil), // 113: openstorage.api.SdkAlertsDeleteResponse - (*Alerts)(nil), // 114: openstorage.api.Alerts - (*ObjectstoreInfo)(nil), // 115: openstorage.api.ObjectstoreInfo - (*VolumeCreateRequest)(nil), // 116: openstorage.api.VolumeCreateRequest - (*VolumeResponse)(nil), // 117: openstorage.api.VolumeResponse - (*VolumeCreateResponse)(nil), // 118: openstorage.api.VolumeCreateResponse - (*VolumeStateAction)(nil), // 119: openstorage.api.VolumeStateAction - (*VolumeSetRequest)(nil), // 120: openstorage.api.VolumeSetRequest - (*VolumeSetResponse)(nil), // 121: openstorage.api.VolumeSetResponse - (*SnapCreateRequest)(nil), // 122: openstorage.api.SnapCreateRequest - (*SnapCreateResponse)(nil), // 123: openstorage.api.SnapCreateResponse - (*VolumeInfo)(nil), // 124: openstorage.api.VolumeInfo - (*VolumeConsumer)(nil), // 125: openstorage.api.VolumeConsumer - (*VolumeServiceRequest)(nil), // 126: openstorage.api.VolumeServiceRequest - (*VolumeServiceInstanceResponse)(nil), // 127: openstorage.api.VolumeServiceInstanceResponse - (*VolumeServiceResponse)(nil), // 128: openstorage.api.VolumeServiceResponse - (*GraphDriverChanges)(nil), // 129: openstorage.api.GraphDriverChanges - (*ClusterResponse)(nil), // 130: openstorage.api.ClusterResponse - (*ActiveRequest)(nil), // 131: openstorage.api.ActiveRequest - (*ActiveRequests)(nil), // 132: openstorage.api.ActiveRequests - (*GroupSnapCreateRequest)(nil), // 133: openstorage.api.GroupSnapCreateRequest - (*GroupSnapCreateResponse)(nil), // 134: openstorage.api.GroupSnapCreateResponse - (*StorageNode)(nil), // 135: openstorage.api.StorageNode - (*StorageCluster)(nil), // 136: openstorage.api.StorageCluster - (*BucketCreateRequest)(nil), // 137: openstorage.api.BucketCreateRequest - (*BucketCreateResponse)(nil), // 138: openstorage.api.BucketCreateResponse - (*BucketDeleteRequest)(nil), // 139: openstorage.api.BucketDeleteRequest - (*BucketDeleteResponse)(nil), // 140: openstorage.api.BucketDeleteResponse - (*BucketGrantAccessRequest)(nil), // 141: openstorage.api.BucketGrantAccessRequest - (*BucketGrantAccessResponse)(nil), // 142: openstorage.api.BucketGrantAccessResponse - (*BucketRevokeAccessRequest)(nil), // 143: openstorage.api.BucketRevokeAccessRequest - (*BucketRevokeAccessResponse)(nil), // 144: openstorage.api.BucketRevokeAccessResponse - (*BucketAccessCredentials)(nil), // 145: openstorage.api.BucketAccessCredentials - (*SdkOpenStoragePolicyCreateRequest)(nil), // 146: openstorage.api.SdkOpenStoragePolicyCreateRequest - (*SdkOpenStoragePolicyCreateResponse)(nil), // 147: openstorage.api.SdkOpenStoragePolicyCreateResponse - (*SdkOpenStoragePolicyEnumerateRequest)(nil), // 148: openstorage.api.SdkOpenStoragePolicyEnumerateRequest - (*SdkOpenStoragePolicyEnumerateResponse)(nil), // 149: openstorage.api.SdkOpenStoragePolicyEnumerateResponse - (*SdkOpenStoragePolicyInspectRequest)(nil), // 150: openstorage.api.SdkOpenStoragePolicyInspectRequest - (*SdkOpenStoragePolicyInspectResponse)(nil), // 151: openstorage.api.SdkOpenStoragePolicyInspectResponse - (*SdkOpenStoragePolicyDeleteRequest)(nil), // 152: openstorage.api.SdkOpenStoragePolicyDeleteRequest - (*SdkOpenStoragePolicyDeleteResponse)(nil), // 153: openstorage.api.SdkOpenStoragePolicyDeleteResponse - (*SdkOpenStoragePolicyUpdateRequest)(nil), // 154: openstorage.api.SdkOpenStoragePolicyUpdateRequest - (*SdkOpenStoragePolicyUpdateResponse)(nil), // 155: openstorage.api.SdkOpenStoragePolicyUpdateResponse - (*SdkOpenStoragePolicySetDefaultRequest)(nil), // 156: openstorage.api.SdkOpenStoragePolicySetDefaultRequest - (*SdkOpenStoragePolicySetDefaultResponse)(nil), // 157: openstorage.api.SdkOpenStoragePolicySetDefaultResponse - (*SdkOpenStoragePolicyReleaseRequest)(nil), // 158: openstorage.api.SdkOpenStoragePolicyReleaseRequest - (*SdkOpenStoragePolicyReleaseResponse)(nil), // 159: openstorage.api.SdkOpenStoragePolicyReleaseResponse - (*SdkOpenStoragePolicyDefaultInspectRequest)(nil), // 160: openstorage.api.SdkOpenStoragePolicyDefaultInspectRequest - (*SdkOpenStoragePolicyDefaultInspectResponse)(nil), // 161: openstorage.api.SdkOpenStoragePolicyDefaultInspectResponse - (*SdkSchedulePolicyCreateRequest)(nil), // 162: openstorage.api.SdkSchedulePolicyCreateRequest - (*SdkSchedulePolicyCreateResponse)(nil), // 163: openstorage.api.SdkSchedulePolicyCreateResponse - (*SdkSchedulePolicyUpdateRequest)(nil), // 164: openstorage.api.SdkSchedulePolicyUpdateRequest - (*SdkSchedulePolicyUpdateResponse)(nil), // 165: openstorage.api.SdkSchedulePolicyUpdateResponse - (*SdkSchedulePolicyEnumerateRequest)(nil), // 166: openstorage.api.SdkSchedulePolicyEnumerateRequest - (*SdkSchedulePolicyEnumerateResponse)(nil), // 167: openstorage.api.SdkSchedulePolicyEnumerateResponse - (*SdkSchedulePolicyInspectRequest)(nil), // 168: openstorage.api.SdkSchedulePolicyInspectRequest - (*SdkSchedulePolicyInspectResponse)(nil), // 169: openstorage.api.SdkSchedulePolicyInspectResponse - (*SdkSchedulePolicyDeleteRequest)(nil), // 170: openstorage.api.SdkSchedulePolicyDeleteRequest - (*SdkSchedulePolicyDeleteResponse)(nil), // 171: openstorage.api.SdkSchedulePolicyDeleteResponse - (*SdkSchedulePolicyIntervalDaily)(nil), // 172: openstorage.api.SdkSchedulePolicyIntervalDaily - (*SdkSchedulePolicyIntervalWeekly)(nil), // 173: openstorage.api.SdkSchedulePolicyIntervalWeekly - (*SdkSchedulePolicyIntervalMonthly)(nil), // 174: openstorage.api.SdkSchedulePolicyIntervalMonthly - (*SdkSchedulePolicyIntervalPeriodic)(nil), // 175: openstorage.api.SdkSchedulePolicyIntervalPeriodic - (*SdkSchedulePolicyInterval)(nil), // 176: openstorage.api.SdkSchedulePolicyInterval - (*SdkSchedulePolicy)(nil), // 177: openstorage.api.SdkSchedulePolicy - (*SdkCredentialCreateRequest)(nil), // 178: openstorage.api.SdkCredentialCreateRequest - (*SdkCredentialCreateResponse)(nil), // 179: openstorage.api.SdkCredentialCreateResponse - (*SdkCredentialUpdateRequest)(nil), // 180: openstorage.api.SdkCredentialUpdateRequest - (*SdkCredentialUpdateResponse)(nil), // 181: openstorage.api.SdkCredentialUpdateResponse - (*SdkAwsCredentialRequest)(nil), // 182: openstorage.api.SdkAwsCredentialRequest - (*SdkAzureCredentialRequest)(nil), // 183: openstorage.api.SdkAzureCredentialRequest - (*SdkGoogleCredentialRequest)(nil), // 184: openstorage.api.SdkGoogleCredentialRequest - (*SdkNfsCredentialRequest)(nil), // 185: openstorage.api.SdkNfsCredentialRequest - (*SdkAwsCredentialResponse)(nil), // 186: openstorage.api.SdkAwsCredentialResponse - (*SdkAzureCredentialResponse)(nil), // 187: openstorage.api.SdkAzureCredentialResponse - (*SdkGoogleCredentialResponse)(nil), // 188: openstorage.api.SdkGoogleCredentialResponse - (*SdkNfsCredentialResponse)(nil), // 189: openstorage.api.SdkNfsCredentialResponse - (*SdkCredentialEnumerateRequest)(nil), // 190: openstorage.api.SdkCredentialEnumerateRequest - (*SdkCredentialEnumerateResponse)(nil), // 191: openstorage.api.SdkCredentialEnumerateResponse - (*SdkCredentialInspectRequest)(nil), // 192: openstorage.api.SdkCredentialInspectRequest - (*SdkCredentialInspectResponse)(nil), // 193: openstorage.api.SdkCredentialInspectResponse - (*SdkCredentialDeleteRequest)(nil), // 194: openstorage.api.SdkCredentialDeleteRequest - (*SdkCredentialDeleteResponse)(nil), // 195: openstorage.api.SdkCredentialDeleteResponse - (*SdkCredentialValidateRequest)(nil), // 196: openstorage.api.SdkCredentialValidateRequest - (*SdkCredentialValidateResponse)(nil), // 197: openstorage.api.SdkCredentialValidateResponse - (*SdkCredentialDeleteReferencesRequest)(nil), // 198: openstorage.api.SdkCredentialDeleteReferencesRequest - (*SdkCredentialDeleteReferencesResponse)(nil), // 199: openstorage.api.SdkCredentialDeleteReferencesResponse - (*SdkVolumeAttachOptions)(nil), // 200: openstorage.api.SdkVolumeAttachOptions - (*SdkVolumeMountRequest)(nil), // 201: openstorage.api.SdkVolumeMountRequest - (*SdkVolumeMountResponse)(nil), // 202: openstorage.api.SdkVolumeMountResponse - (*SdkVolumeUnmountOptions)(nil), // 203: openstorage.api.SdkVolumeUnmountOptions - (*SdkVolumeUnmountRequest)(nil), // 204: openstorage.api.SdkVolumeUnmountRequest - (*SdkVolumeUnmountResponse)(nil), // 205: openstorage.api.SdkVolumeUnmountResponse - (*SdkVolumeAttachRequest)(nil), // 206: openstorage.api.SdkVolumeAttachRequest - (*SdkVolumeAttachResponse)(nil), // 207: openstorage.api.SdkVolumeAttachResponse - (*SdkVolumeDetachOptions)(nil), // 208: openstorage.api.SdkVolumeDetachOptions - (*SdkVolumeDetachRequest)(nil), // 209: openstorage.api.SdkVolumeDetachRequest - (*SdkVolumeDetachResponse)(nil), // 210: openstorage.api.SdkVolumeDetachResponse - (*SdkVolumeCreateRequest)(nil), // 211: openstorage.api.SdkVolumeCreateRequest - (*SdkVolumeCreateResponse)(nil), // 212: openstorage.api.SdkVolumeCreateResponse - (*SdkVolumeCloneRequest)(nil), // 213: openstorage.api.SdkVolumeCloneRequest - (*SdkVolumeCloneResponse)(nil), // 214: openstorage.api.SdkVolumeCloneResponse - (*SdkVolumeDeleteRequest)(nil), // 215: openstorage.api.SdkVolumeDeleteRequest - (*SdkVolumeDeleteResponse)(nil), // 216: openstorage.api.SdkVolumeDeleteResponse - (*SdkVolumeInspectRequest)(nil), // 217: openstorage.api.SdkVolumeInspectRequest - (*SdkVolumeInspectResponse)(nil), // 218: openstorage.api.SdkVolumeInspectResponse - (*SdkVolumeInspectWithFiltersRequest)(nil), // 219: openstorage.api.SdkVolumeInspectWithFiltersRequest - (*SdkVolumeInspectWithFiltersResponse)(nil), // 220: openstorage.api.SdkVolumeInspectWithFiltersResponse - (*SdkVolumeUpdateRequest)(nil), // 221: openstorage.api.SdkVolumeUpdateRequest - (*SdkVolumeUpdateResponse)(nil), // 222: openstorage.api.SdkVolumeUpdateResponse - (*SdkVolumeStatsRequest)(nil), // 223: openstorage.api.SdkVolumeStatsRequest - (*SdkVolumeStatsResponse)(nil), // 224: openstorage.api.SdkVolumeStatsResponse - (*SdkVolumeCapacityUsageRequest)(nil), // 225: openstorage.api.SdkVolumeCapacityUsageRequest - (*SdkVolumeCapacityUsageResponse)(nil), // 226: openstorage.api.SdkVolumeCapacityUsageResponse - (*SdkVolumeEnumerateRequest)(nil), // 227: openstorage.api.SdkVolumeEnumerateRequest - (*SdkVolumeEnumerateResponse)(nil), // 228: openstorage.api.SdkVolumeEnumerateResponse - (*SdkVolumeEnumerateWithFiltersRequest)(nil), // 229: openstorage.api.SdkVolumeEnumerateWithFiltersRequest - (*SdkVolumeEnumerateWithFiltersResponse)(nil), // 230: openstorage.api.SdkVolumeEnumerateWithFiltersResponse - (*SdkVolumeSnapshotCreateRequest)(nil), // 231: openstorage.api.SdkVolumeSnapshotCreateRequest - (*SdkVolumeSnapshotCreateResponse)(nil), // 232: openstorage.api.SdkVolumeSnapshotCreateResponse - (*SdkVolumeSnapshotRestoreRequest)(nil), // 233: openstorage.api.SdkVolumeSnapshotRestoreRequest - (*SdkVolumeSnapshotRestoreResponse)(nil), // 234: openstorage.api.SdkVolumeSnapshotRestoreResponse - (*SdkVolumeSnapshotEnumerateRequest)(nil), // 235: openstorage.api.SdkVolumeSnapshotEnumerateRequest - (*SdkVolumeSnapshotEnumerateResponse)(nil), // 236: openstorage.api.SdkVolumeSnapshotEnumerateResponse - (*SdkVolumeSnapshotEnumerateWithFiltersRequest)(nil), // 237: openstorage.api.SdkVolumeSnapshotEnumerateWithFiltersRequest - (*SdkVolumeSnapshotEnumerateWithFiltersResponse)(nil), // 238: openstorage.api.SdkVolumeSnapshotEnumerateWithFiltersResponse - (*SdkVolumeSnapshotScheduleUpdateRequest)(nil), // 239: openstorage.api.SdkVolumeSnapshotScheduleUpdateRequest - (*SdkVolumeSnapshotScheduleUpdateResponse)(nil), // 240: openstorage.api.SdkVolumeSnapshotScheduleUpdateResponse - (*SdkWatchRequest)(nil), // 241: openstorage.api.SdkWatchRequest - (*SdkWatchResponse)(nil), // 242: openstorage.api.SdkWatchResponse - (*SdkVolumeWatchRequest)(nil), // 243: openstorage.api.SdkVolumeWatchRequest - (*SdkVolumeWatchResponse)(nil), // 244: openstorage.api.SdkVolumeWatchResponse - (*SdkNodeVolumeUsageByNodeRequest)(nil), // 245: openstorage.api.SdkNodeVolumeUsageByNodeRequest - (*SdkNodeVolumeUsageByNodeResponse)(nil), // 246: openstorage.api.SdkNodeVolumeUsageByNodeResponse - (*SdkNodeRelaxedReclaimPurgeRequest)(nil), // 247: openstorage.api.SdkNodeRelaxedReclaimPurgeRequest - (*SdkNodeRelaxedReclaimPurgeResponse)(nil), // 248: openstorage.api.SdkNodeRelaxedReclaimPurgeResponse - (*SdkClusterDomainsEnumerateRequest)(nil), // 249: openstorage.api.SdkClusterDomainsEnumerateRequest - (*SdkClusterDomainsEnumerateResponse)(nil), // 250: openstorage.api.SdkClusterDomainsEnumerateResponse - (*SdkClusterDomainInspectRequest)(nil), // 251: openstorage.api.SdkClusterDomainInspectRequest - (*SdkClusterDomainInspectResponse)(nil), // 252: openstorage.api.SdkClusterDomainInspectResponse - (*SdkClusterDomainActivateRequest)(nil), // 253: openstorage.api.SdkClusterDomainActivateRequest - (*SdkClusterDomainActivateResponse)(nil), // 254: openstorage.api.SdkClusterDomainActivateResponse - (*SdkClusterDomainDeactivateRequest)(nil), // 255: openstorage.api.SdkClusterDomainDeactivateRequest - (*SdkClusterDomainDeactivateResponse)(nil), // 256: openstorage.api.SdkClusterDomainDeactivateResponse - (*SdkClusterInspectCurrentRequest)(nil), // 257: openstorage.api.SdkClusterInspectCurrentRequest - (*SdkClusterInspectCurrentResponse)(nil), // 258: openstorage.api.SdkClusterInspectCurrentResponse - (*SdkNodeInspectRequest)(nil), // 259: openstorage.api.SdkNodeInspectRequest - (*Job)(nil), // 260: openstorage.api.Job - (*SdkJobResponse)(nil), // 261: openstorage.api.SdkJobResponse - (*NodeDrainAttachmentOptions)(nil), // 262: openstorage.api.NodeDrainAttachmentOptions - (*SdkNodeDrainAttachmentsRequest)(nil), // 263: openstorage.api.SdkNodeDrainAttachmentsRequest - (*NodeDrainAttachmentsJob)(nil), // 264: openstorage.api.NodeDrainAttachmentsJob - (*CloudDriveTransferJob)(nil), // 265: openstorage.api.CloudDriveTransferJob - (*CollectDiagsJob)(nil), // 266: openstorage.api.CollectDiagsJob - (*DefragJob)(nil), // 267: openstorage.api.DefragJob - (*DefragNodeStatus)(nil), // 268: openstorage.api.DefragNodeStatus - (*DefragPoolStatus)(nil), // 269: openstorage.api.DefragPoolStatus - (*DiagsCollectionStatus)(nil), // 270: openstorage.api.DiagsCollectionStatus - (*SdkDiagsCollectRequest)(nil), // 271: openstorage.api.SdkDiagsCollectRequest - (*SdkDiagsCollectResponse)(nil), // 272: openstorage.api.SdkDiagsCollectResponse - (*DiagsNodeSelector)(nil), // 273: openstorage.api.DiagsNodeSelector - (*DiagsVolumeSelector)(nil), // 274: openstorage.api.DiagsVolumeSelector - (*SdkEnumerateJobsRequest)(nil), // 275: openstorage.api.SdkEnumerateJobsRequest - (*SdkEnumerateJobsResponse)(nil), // 276: openstorage.api.SdkEnumerateJobsResponse - (*SdkUpdateJobRequest)(nil), // 277: openstorage.api.SdkUpdateJobRequest - (*SdkUpdateJobResponse)(nil), // 278: openstorage.api.SdkUpdateJobResponse - (*SdkGetJobStatusRequest)(nil), // 279: openstorage.api.SdkGetJobStatusRequest - (*JobAudit)(nil), // 280: openstorage.api.JobAudit - (*JobWorkSummary)(nil), // 281: openstorage.api.JobWorkSummary - (*JobSummary)(nil), // 282: openstorage.api.JobSummary - (*SdkGetJobStatusResponse)(nil), // 283: openstorage.api.SdkGetJobStatusResponse - (*DrainAttachmentsSummary)(nil), // 284: openstorage.api.DrainAttachmentsSummary - (*SdkNodeCordonAttachmentsRequest)(nil), // 285: openstorage.api.SdkNodeCordonAttachmentsRequest - (*SdkNodeCordonAttachmentsResponse)(nil), // 286: openstorage.api.SdkNodeCordonAttachmentsResponse - (*SdkNodeUncordonAttachmentsRequest)(nil), // 287: openstorage.api.SdkNodeUncordonAttachmentsRequest - (*SdkNodeUncordonAttachmentsResponse)(nil), // 288: openstorage.api.SdkNodeUncordonAttachmentsResponse - (*SdkStoragePoolResizeRequest)(nil), // 289: openstorage.api.SdkStoragePoolResizeRequest - (*StorageRebalanceTriggerThreshold)(nil), // 290: openstorage.api.StorageRebalanceTriggerThreshold - (*SdkStorageRebalanceRequest)(nil), // 291: openstorage.api.SdkStorageRebalanceRequest - (*SdkStorageRebalanceResponse)(nil), // 292: openstorage.api.SdkStorageRebalanceResponse - (*StorageRebalanceJob)(nil), // 293: openstorage.api.StorageRebalanceJob - (*StorageRebalanceSummary)(nil), // 294: openstorage.api.StorageRebalanceSummary - (*StorageRebalanceWorkSummary)(nil), // 295: openstorage.api.StorageRebalanceWorkSummary - (*StorageRebalanceAudit)(nil), // 296: openstorage.api.StorageRebalanceAudit - (*SdkUpdateRebalanceJobRequest)(nil), // 297: openstorage.api.SdkUpdateRebalanceJobRequest - (*SdkUpdateRebalanceJobResponse)(nil), // 298: openstorage.api.SdkUpdateRebalanceJobResponse - (*SdkGetRebalanceJobStatusRequest)(nil), // 299: openstorage.api.SdkGetRebalanceJobStatusRequest - (*SdkGetRebalanceJobStatusResponse)(nil), // 300: openstorage.api.SdkGetRebalanceJobStatusResponse - (*SdkEnumerateRebalanceJobsRequest)(nil), // 301: openstorage.api.SdkEnumerateRebalanceJobsRequest - (*SdkEnumerateRebalanceJobsResponse)(nil), // 302: openstorage.api.SdkEnumerateRebalanceJobsResponse - (*RebalanceScheduleInfo)(nil), // 303: openstorage.api.RebalanceScheduleInfo - (*SdkCreateRebalanceScheduleRequest)(nil), // 304: openstorage.api.SdkCreateRebalanceScheduleRequest - (*SdkCreateRebalanceScheduleResponse)(nil), // 305: openstorage.api.SdkCreateRebalanceScheduleResponse - (*SdkGetRebalanceScheduleRequest)(nil), // 306: openstorage.api.SdkGetRebalanceScheduleRequest - (*SdkGetRebalanceScheduleResponse)(nil), // 307: openstorage.api.SdkGetRebalanceScheduleResponse - (*SdkDeleteRebalanceScheduleRequest)(nil), // 308: openstorage.api.SdkDeleteRebalanceScheduleRequest - (*SdkDeleteRebalanceScheduleResponse)(nil), // 309: openstorage.api.SdkDeleteRebalanceScheduleResponse - (*SdkStoragePool)(nil), // 310: openstorage.api.SdkStoragePool - (*SdkStoragePoolResizeResponse)(nil), // 311: openstorage.api.SdkStoragePoolResizeResponse - (*SdkNodeInspectResponse)(nil), // 312: openstorage.api.SdkNodeInspectResponse - (*SdkNodeInspectCurrentRequest)(nil), // 313: openstorage.api.SdkNodeInspectCurrentRequest - (*SdkNodeInspectCurrentResponse)(nil), // 314: openstorage.api.SdkNodeInspectCurrentResponse - (*SdkNodeEnumerateRequest)(nil), // 315: openstorage.api.SdkNodeEnumerateRequest - (*SdkNodeEnumerateResponse)(nil), // 316: openstorage.api.SdkNodeEnumerateResponse - (*SdkNodeEnumerateWithFiltersRequest)(nil), // 317: openstorage.api.SdkNodeEnumerateWithFiltersRequest - (*SdkNodeEnumerateWithFiltersResponse)(nil), // 318: openstorage.api.SdkNodeEnumerateWithFiltersResponse - (*SdkObjectstoreInspectRequest)(nil), // 319: openstorage.api.SdkObjectstoreInspectRequest - (*SdkObjectstoreInspectResponse)(nil), // 320: openstorage.api.SdkObjectstoreInspectResponse - (*SdkObjectstoreCreateRequest)(nil), // 321: openstorage.api.SdkObjectstoreCreateRequest - (*SdkObjectstoreCreateResponse)(nil), // 322: openstorage.api.SdkObjectstoreCreateResponse - (*SdkObjectstoreDeleteRequest)(nil), // 323: openstorage.api.SdkObjectstoreDeleteRequest - (*SdkObjectstoreDeleteResponse)(nil), // 324: openstorage.api.SdkObjectstoreDeleteResponse - (*SdkObjectstoreUpdateRequest)(nil), // 325: openstorage.api.SdkObjectstoreUpdateRequest - (*SdkObjectstoreUpdateResponse)(nil), // 326: openstorage.api.SdkObjectstoreUpdateResponse - (*SdkCloudBackupCreateRequest)(nil), // 327: openstorage.api.SdkCloudBackupCreateRequest - (*SdkCloudBackupCreateResponse)(nil), // 328: openstorage.api.SdkCloudBackupCreateResponse - (*SdkCloudBackupGroupCreateRequest)(nil), // 329: openstorage.api.SdkCloudBackupGroupCreateRequest - (*SdkCloudBackupGroupCreateResponse)(nil), // 330: openstorage.api.SdkCloudBackupGroupCreateResponse - (*SdkCloudBackupRestoreRequest)(nil), // 331: openstorage.api.SdkCloudBackupRestoreRequest - (*SdkCloudBackupRestoreResponse)(nil), // 332: openstorage.api.SdkCloudBackupRestoreResponse - (*SdkCloudBackupDeleteRequest)(nil), // 333: openstorage.api.SdkCloudBackupDeleteRequest - (*SdkCloudBackupDeleteResponse)(nil), // 334: openstorage.api.SdkCloudBackupDeleteResponse - (*SdkCloudBackupDeleteAllRequest)(nil), // 335: openstorage.api.SdkCloudBackupDeleteAllRequest - (*SdkCloudBackupDeleteAllResponse)(nil), // 336: openstorage.api.SdkCloudBackupDeleteAllResponse - (*SdkCloudBackupEnumerateWithFiltersRequest)(nil), // 337: openstorage.api.SdkCloudBackupEnumerateWithFiltersRequest - (*SdkCloudBackupInfo)(nil), // 338: openstorage.api.SdkCloudBackupInfo - (*SdkCloudBackupEnumerateWithFiltersResponse)(nil), // 339: openstorage.api.SdkCloudBackupEnumerateWithFiltersResponse - (*SdkCloudBackupStatus)(nil), // 340: openstorage.api.SdkCloudBackupStatus - (*SdkCloudBackupStatusRequest)(nil), // 341: openstorage.api.SdkCloudBackupStatusRequest - (*SdkCloudBackupStatusResponse)(nil), // 342: openstorage.api.SdkCloudBackupStatusResponse - (*SdkCloudBackupCatalogRequest)(nil), // 343: openstorage.api.SdkCloudBackupCatalogRequest - (*SdkCloudBackupCatalogResponse)(nil), // 344: openstorage.api.SdkCloudBackupCatalogResponse - (*SdkCloudBackupHistoryItem)(nil), // 345: openstorage.api.SdkCloudBackupHistoryItem - (*SdkCloudBackupHistoryRequest)(nil), // 346: openstorage.api.SdkCloudBackupHistoryRequest - (*SdkCloudBackupHistoryResponse)(nil), // 347: openstorage.api.SdkCloudBackupHistoryResponse - (*SdkCloudBackupStateChangeRequest)(nil), // 348: openstorage.api.SdkCloudBackupStateChangeRequest - (*SdkCloudBackupStateChangeResponse)(nil), // 349: openstorage.api.SdkCloudBackupStateChangeResponse - (*SdkCloudBackupScheduleInfo)(nil), // 350: openstorage.api.SdkCloudBackupScheduleInfo - (*SdkCloudBackupSchedCreateRequest)(nil), // 351: openstorage.api.SdkCloudBackupSchedCreateRequest - (*SdkCloudBackupSchedCreateResponse)(nil), // 352: openstorage.api.SdkCloudBackupSchedCreateResponse - (*SdkCloudBackupSchedUpdateRequest)(nil), // 353: openstorage.api.SdkCloudBackupSchedUpdateRequest - (*SdkCloudBackupSchedUpdateResponse)(nil), // 354: openstorage.api.SdkCloudBackupSchedUpdateResponse - (*SdkCloudBackupSchedDeleteRequest)(nil), // 355: openstorage.api.SdkCloudBackupSchedDeleteRequest - (*SdkCloudBackupSchedDeleteResponse)(nil), // 356: openstorage.api.SdkCloudBackupSchedDeleteResponse - (*SdkCloudBackupSchedEnumerateRequest)(nil), // 357: openstorage.api.SdkCloudBackupSchedEnumerateRequest - (*SdkCloudBackupSchedEnumerateResponse)(nil), // 358: openstorage.api.SdkCloudBackupSchedEnumerateResponse - (*SdkCloudBackupSizeRequest)(nil), // 359: openstorage.api.SdkCloudBackupSizeRequest - (*SdkCloudBackupSizeResponse)(nil), // 360: openstorage.api.SdkCloudBackupSizeResponse - (*SdkRule)(nil), // 361: openstorage.api.SdkRule - (*SdkRole)(nil), // 362: openstorage.api.SdkRole - (*SdkRoleCreateRequest)(nil), // 363: openstorage.api.SdkRoleCreateRequest - (*SdkRoleCreateResponse)(nil), // 364: openstorage.api.SdkRoleCreateResponse - (*SdkRoleEnumerateRequest)(nil), // 365: openstorage.api.SdkRoleEnumerateRequest - (*SdkRoleEnumerateResponse)(nil), // 366: openstorage.api.SdkRoleEnumerateResponse - (*SdkRoleInspectRequest)(nil), // 367: openstorage.api.SdkRoleInspectRequest - (*SdkRoleInspectResponse)(nil), // 368: openstorage.api.SdkRoleInspectResponse - (*SdkRoleDeleteRequest)(nil), // 369: openstorage.api.SdkRoleDeleteRequest - (*SdkRoleDeleteResponse)(nil), // 370: openstorage.api.SdkRoleDeleteResponse - (*SdkRoleUpdateRequest)(nil), // 371: openstorage.api.SdkRoleUpdateRequest - (*SdkRoleUpdateResponse)(nil), // 372: openstorage.api.SdkRoleUpdateResponse - (*FilesystemTrim)(nil), // 373: openstorage.api.FilesystemTrim - (*SdkFilesystemTrimStartRequest)(nil), // 374: openstorage.api.SdkFilesystemTrimStartRequest - (*SdkFilesystemTrimStartResponse)(nil), // 375: openstorage.api.SdkFilesystemTrimStartResponse - (*SdkFilesystemTrimStatusRequest)(nil), // 376: openstorage.api.SdkFilesystemTrimStatusRequest - (*SdkFilesystemTrimStatusResponse)(nil), // 377: openstorage.api.SdkFilesystemTrimStatusResponse - (*SdkAutoFSTrimStatusRequest)(nil), // 378: openstorage.api.SdkAutoFSTrimStatusRequest - (*SdkAutoFSTrimStatusResponse)(nil), // 379: openstorage.api.SdkAutoFSTrimStatusResponse - (*SdkAutoFSTrimUsageRequest)(nil), // 380: openstorage.api.SdkAutoFSTrimUsageRequest - (*SdkAutoFSTrimUsageResponse)(nil), // 381: openstorage.api.SdkAutoFSTrimUsageResponse - (*SdkFilesystemTrimStopRequest)(nil), // 382: openstorage.api.SdkFilesystemTrimStopRequest - (*SdkVolumeBytesUsedResponse)(nil), // 383: openstorage.api.SdkVolumeBytesUsedResponse - (*SdkVolumeBytesUsedRequest)(nil), // 384: openstorage.api.SdkVolumeBytesUsedRequest - (*SdkFilesystemTrimStopResponse)(nil), // 385: openstorage.api.SdkFilesystemTrimStopResponse - (*SdkAutoFSTrimPushRequest)(nil), // 386: openstorage.api.SdkAutoFSTrimPushRequest - (*SdkAutoFSTrimPushResponse)(nil), // 387: openstorage.api.SdkAutoFSTrimPushResponse - (*SdkAutoFSTrimPopRequest)(nil), // 388: openstorage.api.SdkAutoFSTrimPopRequest - (*SdkAutoFSTrimPopResponse)(nil), // 389: openstorage.api.SdkAutoFSTrimPopResponse - (*FilesystemCheck)(nil), // 390: openstorage.api.FilesystemCheck - (*FilesystemCheckSnapInfo)(nil), // 391: openstorage.api.FilesystemCheckSnapInfo - (*FilesystemCheckVolInfo)(nil), // 392: openstorage.api.FilesystemCheckVolInfo - (*SdkFilesystemCheckStartRequest)(nil), // 393: openstorage.api.SdkFilesystemCheckStartRequest - (*SdkFilesystemCheckStartResponse)(nil), // 394: openstorage.api.SdkFilesystemCheckStartResponse - (*SdkFilesystemCheckStatusRequest)(nil), // 395: openstorage.api.SdkFilesystemCheckStatusRequest - (*SdkFilesystemCheckStatusResponse)(nil), // 396: openstorage.api.SdkFilesystemCheckStatusResponse - (*SdkFilesystemCheckStopRequest)(nil), // 397: openstorage.api.SdkFilesystemCheckStopRequest - (*SdkFilesystemCheckStopResponse)(nil), // 398: openstorage.api.SdkFilesystemCheckStopResponse - (*SdkFilesystemCheckListSnapshotsRequest)(nil), // 399: openstorage.api.SdkFilesystemCheckListSnapshotsRequest - (*SdkFilesystemCheckListSnapshotsResponse)(nil), // 400: openstorage.api.SdkFilesystemCheckListSnapshotsResponse - (*SdkFilesystemCheckDeleteSnapshotsRequest)(nil), // 401: openstorage.api.SdkFilesystemCheckDeleteSnapshotsRequest - (*SdkFilesystemCheckDeleteSnapshotsResponse)(nil), // 402: openstorage.api.SdkFilesystemCheckDeleteSnapshotsResponse - (*SdkFilesystemCheckListVolumesRequest)(nil), // 403: openstorage.api.SdkFilesystemCheckListVolumesRequest - (*SdkFilesystemCheckListVolumesResponse)(nil), // 404: openstorage.api.SdkFilesystemCheckListVolumesResponse - (*SdkIdentityCapabilitiesRequest)(nil), // 405: openstorage.api.SdkIdentityCapabilitiesRequest - (*SdkIdentityCapabilitiesResponse)(nil), // 406: openstorage.api.SdkIdentityCapabilitiesResponse - (*SdkIdentityVersionRequest)(nil), // 407: openstorage.api.SdkIdentityVersionRequest - (*SdkIdentityVersionResponse)(nil), // 408: openstorage.api.SdkIdentityVersionResponse - (*SdkServiceCapability)(nil), // 409: openstorage.api.SdkServiceCapability - (*SdkVersion)(nil), // 410: openstorage.api.SdkVersion - (*StorageVersion)(nil), // 411: openstorage.api.StorageVersion - (*CloudMigrate)(nil), // 412: openstorage.api.CloudMigrate - (*CloudMigrateStartRequest)(nil), // 413: openstorage.api.CloudMigrateStartRequest - (*SdkCloudMigrateStartRequest)(nil), // 414: openstorage.api.SdkCloudMigrateStartRequest - (*CloudMigrateStartResponse)(nil), // 415: openstorage.api.CloudMigrateStartResponse - (*SdkCloudMigrateStartResponse)(nil), // 416: openstorage.api.SdkCloudMigrateStartResponse - (*CloudMigrateCancelRequest)(nil), // 417: openstorage.api.CloudMigrateCancelRequest - (*SdkCloudMigrateCancelRequest)(nil), // 418: openstorage.api.SdkCloudMigrateCancelRequest - (*SdkCloudMigrateCancelResponse)(nil), // 419: openstorage.api.SdkCloudMigrateCancelResponse - (*CloudMigrateInfo)(nil), // 420: openstorage.api.CloudMigrateInfo - (*CloudMigrateInfoList)(nil), // 421: openstorage.api.CloudMigrateInfoList - (*SdkCloudMigrateStatusRequest)(nil), // 422: openstorage.api.SdkCloudMigrateStatusRequest - (*CloudMigrateStatusRequest)(nil), // 423: openstorage.api.CloudMigrateStatusRequest - (*CloudMigrateStatusResponse)(nil), // 424: openstorage.api.CloudMigrateStatusResponse - (*SdkCloudMigrateStatusResponse)(nil), // 425: openstorage.api.SdkCloudMigrateStatusResponse - (*ClusterPairMode)(nil), // 426: openstorage.api.ClusterPairMode - (*ClusterPairCreateRequest)(nil), // 427: openstorage.api.ClusterPairCreateRequest - (*ClusterPairCreateResponse)(nil), // 428: openstorage.api.ClusterPairCreateResponse - (*SdkClusterPairCreateRequest)(nil), // 429: openstorage.api.SdkClusterPairCreateRequest - (*SdkClusterPairCreateResponse)(nil), // 430: openstorage.api.SdkClusterPairCreateResponse - (*ClusterPairProcessRequest)(nil), // 431: openstorage.api.ClusterPairProcessRequest - (*ClusterPairProcessResponse)(nil), // 432: openstorage.api.ClusterPairProcessResponse - (*SdkClusterPairDeleteRequest)(nil), // 433: openstorage.api.SdkClusterPairDeleteRequest - (*SdkClusterPairDeleteResponse)(nil), // 434: openstorage.api.SdkClusterPairDeleteResponse - (*ClusterPairTokenGetResponse)(nil), // 435: openstorage.api.ClusterPairTokenGetResponse - (*SdkClusterPairGetTokenRequest)(nil), // 436: openstorage.api.SdkClusterPairGetTokenRequest - (*SdkClusterPairGetTokenResponse)(nil), // 437: openstorage.api.SdkClusterPairGetTokenResponse - (*SdkClusterPairResetTokenRequest)(nil), // 438: openstorage.api.SdkClusterPairResetTokenRequest - (*SdkClusterPairResetTokenResponse)(nil), // 439: openstorage.api.SdkClusterPairResetTokenResponse - (*ClusterPairInfo)(nil), // 440: openstorage.api.ClusterPairInfo - (*SdkClusterPairInspectRequest)(nil), // 441: openstorage.api.SdkClusterPairInspectRequest - (*ClusterPairGetResponse)(nil), // 442: openstorage.api.ClusterPairGetResponse - (*SdkClusterPairInspectResponse)(nil), // 443: openstorage.api.SdkClusterPairInspectResponse - (*SdkClusterPairEnumerateRequest)(nil), // 444: openstorage.api.SdkClusterPairEnumerateRequest - (*ClusterPairsEnumerateResponse)(nil), // 445: openstorage.api.ClusterPairsEnumerateResponse - (*SdkClusterPairEnumerateResponse)(nil), // 446: openstorage.api.SdkClusterPairEnumerateResponse - (*Catalog)(nil), // 447: openstorage.api.Catalog - (*Report)(nil), // 448: openstorage.api.Report - (*CatalogResponse)(nil), // 449: openstorage.api.CatalogResponse - (*LocateResponse)(nil), // 450: openstorage.api.LocateResponse - (*VolumePlacementStrategy)(nil), // 451: openstorage.api.VolumePlacementStrategy - (*ReplicaPlacementSpec)(nil), // 452: openstorage.api.ReplicaPlacementSpec - (*VolumePlacementSpec)(nil), // 453: openstorage.api.VolumePlacementSpec - (*LabelSelectorRequirement)(nil), // 454: openstorage.api.LabelSelectorRequirement - (*RestoreVolSnashotSchedule)(nil), // 455: openstorage.api.RestoreVolSnashotSchedule - (*RestoreVolStoragePolicy)(nil), // 456: openstorage.api.RestoreVolStoragePolicy - (*RestoreVolumeSpec)(nil), // 457: openstorage.api.RestoreVolumeSpec - (*SdkVolumeCatalogRequest)(nil), // 458: openstorage.api.SdkVolumeCatalogRequest - (*SdkVolumeCatalogResponse)(nil), // 459: openstorage.api.SdkVolumeCatalogResponse - (*VerifyChecksum)(nil), // 460: openstorage.api.VerifyChecksum - (*SdkVerifyChecksumStartRequest)(nil), // 461: openstorage.api.SdkVerifyChecksumStartRequest - (*SdkVerifyChecksumStartResponse)(nil), // 462: openstorage.api.SdkVerifyChecksumStartResponse - (*SdkVerifyChecksumStatusRequest)(nil), // 463: openstorage.api.SdkVerifyChecksumStatusRequest - (*SdkVerifyChecksumStatusResponse)(nil), // 464: openstorage.api.SdkVerifyChecksumStatusResponse - (*SdkVerifyChecksumStopRequest)(nil), // 465: openstorage.api.SdkVerifyChecksumStopRequest - (*SdkVerifyChecksumStopResponse)(nil), // 466: openstorage.api.SdkVerifyChecksumStopResponse - nil, // 467: openstorage.api.StoragePool.LabelsEntry - nil, // 468: openstorage.api.SchedulerTopology.LabelsEntry - nil, // 469: openstorage.api.StoragePoolOperation.ParamsEntry - nil, // 470: openstorage.api.TopologyRequirement.LabelsEntry - nil, // 471: openstorage.api.VolumeLocator.VolumeLabelsEntry - nil, // 472: openstorage.api.MountOptions.OptionsEntry - nil, // 473: openstorage.api.VolumeSpec.VolumeLabelsEntry - nil, // 474: openstorage.api.VolumeSpecPolicy.VolumeLabelsEntry - nil, // 475: openstorage.api.RuntimeStateMap.RuntimeStateEntry - (*Ownership_PublicAccessControl)(nil), // 476: openstorage.api.Ownership.PublicAccessControl - (*Ownership_AccessControl)(nil), // 477: openstorage.api.Ownership.AccessControl - nil, // 478: openstorage.api.Ownership.AccessControl.GroupsEntry - nil, // 479: openstorage.api.Ownership.AccessControl.CollaboratorsEntry - nil, // 480: openstorage.api.Volume.AttachInfoEntry - nil, // 481: openstorage.api.VolumeSetRequest.OptionsEntry - nil, // 482: openstorage.api.VolumeServiceRequest.SrvCmdParamsEntry - nil, // 483: openstorage.api.VolumeServiceInstanceResponse.StatusEntry - nil, // 484: openstorage.api.ActiveRequest.ReqestKVEntry - nil, // 485: openstorage.api.GroupSnapCreateRequest.LabelsEntry - nil, // 486: openstorage.api.GroupSnapCreateResponse.SnapshotsEntry - nil, // 487: openstorage.api.StorageNode.DisksEntry - nil, // 488: openstorage.api.StorageNode.NodeLabelsEntry - nil, // 489: openstorage.api.SdkVolumeMountRequest.DriverOptionsEntry - nil, // 490: openstorage.api.SdkVolumeUnmountRequest.DriverOptionsEntry - nil, // 491: openstorage.api.SdkVolumeAttachRequest.DriverOptionsEntry - nil, // 492: openstorage.api.SdkVolumeDetachRequest.DriverOptionsEntry - nil, // 493: openstorage.api.SdkVolumeCreateRequest.LabelsEntry - nil, // 494: openstorage.api.SdkVolumeCloneRequest.AdditionalLabelsEntry - nil, // 495: openstorage.api.SdkVolumeInspectResponse.LabelsEntry - nil, // 496: openstorage.api.SdkVolumeInspectWithFiltersRequest.LabelsEntry - nil, // 497: openstorage.api.SdkVolumeUpdateRequest.LabelsEntry - nil, // 498: openstorage.api.SdkVolumeEnumerateWithFiltersRequest.LabelsEntry - nil, // 499: openstorage.api.SdkVolumeSnapshotCreateRequest.LabelsEntry - nil, // 500: openstorage.api.SdkVolumeSnapshotEnumerateWithFiltersRequest.LabelsEntry - nil, // 501: openstorage.api.SdkVolumeWatchRequest.LabelsEntry - nil, // 502: openstorage.api.DefragNodeStatus.PoolStatusEntry - nil, // 503: openstorage.api.SdkCloudBackupCreateRequest.LabelsEntry - nil, // 504: openstorage.api.SdkCloudBackupGroupCreateRequest.LabelsEntry - nil, // 505: openstorage.api.SdkCloudBackupEnumerateWithFiltersRequest.MetadataFilterEntry - nil, // 506: openstorage.api.SdkCloudBackupInfo.MetadataEntry - nil, // 507: openstorage.api.SdkCloudBackupStatusResponse.StatusesEntry - nil, // 508: openstorage.api.SdkCloudBackupScheduleInfo.LabelsEntry - nil, // 509: openstorage.api.SdkCloudBackupSchedEnumerateResponse.CloudSchedListEntry - nil, // 510: openstorage.api.SdkAutoFSTrimStatusResponse.TrimStatusEntry - nil, // 511: openstorage.api.SdkAutoFSTrimUsageResponse.UsageEntry - nil, // 512: openstorage.api.SdkFilesystemCheckListSnapshotsResponse.SnapshotsEntry - nil, // 513: openstorage.api.SdkFilesystemCheckListVolumesResponse.VolumesEntry - (*SdkServiceCapability_OpenStorageService)(nil), // 514: openstorage.api.SdkServiceCapability.OpenStorageService - nil, // 515: openstorage.api.StorageVersion.DetailsEntry - (*SdkCloudMigrateStartRequest_MigrateVolume)(nil), // 516: openstorage.api.SdkCloudMigrateStartRequest.MigrateVolume - (*SdkCloudMigrateStartRequest_MigrateVolumeGroup)(nil), // 517: openstorage.api.SdkCloudMigrateStartRequest.MigrateVolumeGroup - (*SdkCloudMigrateStartRequest_MigrateAllVolumes)(nil), // 518: openstorage.api.SdkCloudMigrateStartRequest.MigrateAllVolumes - nil, // 519: openstorage.api.CloudMigrateStatusResponse.InfoEntry - nil, // 520: openstorage.api.ClusterPairProcessResponse.OptionsEntry - nil, // 521: openstorage.api.ClusterPairInfo.OptionsEntry - nil, // 522: openstorage.api.ClusterPairsEnumerateResponse.PairsEntry - nil, // 523: openstorage.api.LocateResponse.MountsEntry - nil, // 524: openstorage.api.LocateResponse.DockeridsEntry - (*timestamppb.Timestamp)(nil), // 525: google.protobuf.Timestamp -} -var file_api_api_proto_depIdxs = []int32{ - 13, // 0: openstorage.api.StorageResource.medium:type_name -> openstorage.api.StorageMedium - 525, // 1: openstorage.api.StorageResource.last_scan:type_name -> google.protobuf.Timestamp - 8, // 2: openstorage.api.StoragePool.Cos:type_name -> openstorage.api.CosType - 13, // 3: openstorage.api.StoragePool.Medium:type_name -> openstorage.api.StorageMedium - 467, // 4: openstorage.api.StoragePool.labels:type_name -> openstorage.api.StoragePool.LabelsEntry - 63, // 5: openstorage.api.StoragePool.last_operation:type_name -> openstorage.api.StoragePoolOperation - 468, // 6: openstorage.api.SchedulerTopology.labels:type_name -> openstorage.api.SchedulerTopology.LabelsEntry - 48, // 7: openstorage.api.StoragePoolOperation.type:type_name -> openstorage.api.SdkStoragePool.OperationType - 469, // 8: openstorage.api.StoragePoolOperation.params:type_name -> openstorage.api.StoragePoolOperation.ParamsEntry - 47, // 9: openstorage.api.StoragePoolOperation.status:type_name -> openstorage.api.SdkStoragePool.OperationStatus - 470, // 10: openstorage.api.TopologyRequirement.labels:type_name -> openstorage.api.TopologyRequirement.LabelsEntry - 471, // 11: openstorage.api.VolumeLocator.volume_labels:type_name -> openstorage.api.VolumeLocator.VolumeLabelsEntry - 91, // 12: openstorage.api.VolumeLocator.ownership:type_name -> openstorage.api.Ownership - 68, // 13: openstorage.api.VolumeLocator.group:type_name -> openstorage.api.Group - 17, // 14: openstorage.api.ExportSpec.export_protocol:type_name -> openstorage.api.ExportProtocol - 18, // 15: openstorage.api.ProxySpec.proxy_protocol:type_name -> openstorage.api.ProxyProtocol - 72, // 16: openstorage.api.ProxySpec.nfs_spec:type_name -> openstorage.api.NFSProxySpec - 73, // 17: openstorage.api.ProxySpec.s3_spec:type_name -> openstorage.api.S3ProxySpec - 74, // 18: openstorage.api.ProxySpec.pxd_spec:type_name -> openstorage.api.PXDProxySpec - 75, // 19: openstorage.api.ProxySpec.pure_block_spec:type_name -> openstorage.api.PureBlockSpec - 76, // 20: openstorage.api.ProxySpec.pure_file_spec:type_name -> openstorage.api.PureFileSpec - 32, // 21: openstorage.api.Sharedv4ServiceSpec.type:type_name -> openstorage.api.Sharedv4ServiceSpec.ServiceType - 33, // 22: openstorage.api.Sharedv4Spec.failover_strategy:type_name -> openstorage.api.Sharedv4FailoverStrategy.Value - 472, // 23: openstorage.api.MountOptions.options:type_name -> openstorage.api.MountOptions.OptionsEntry - 20, // 24: openstorage.api.FastpathReplState.protocol:type_name -> openstorage.api.FastpathProtocol - 19, // 25: openstorage.api.FastpathConfig.status:type_name -> openstorage.api.FastpathStatus - 82, // 26: openstorage.api.FastpathConfig.replicas:type_name -> openstorage.api.FastpathReplState - 34, // 27: openstorage.api.ScanPolicy.trigger:type_name -> openstorage.api.ScanPolicy.ScanTrigger - 35, // 28: openstorage.api.ScanPolicy.action:type_name -> openstorage.api.ScanPolicy.ScanAction - 2, // 29: openstorage.api.VolumeSpec.format:type_name -> openstorage.api.FSType - 8, // 30: openstorage.api.VolumeSpec.cos:type_name -> openstorage.api.CosType - 9, // 31: openstorage.api.VolumeSpec.io_profile:type_name -> openstorage.api.IoProfile - 473, // 32: openstorage.api.VolumeSpec.volume_labels:type_name -> openstorage.api.VolumeSpec.VolumeLabelsEntry - 89, // 33: openstorage.api.VolumeSpec.replica_set:type_name -> openstorage.api.ReplicaSet - 68, // 34: openstorage.api.VolumeSpec.group:type_name -> openstorage.api.Group - 69, // 35: openstorage.api.VolumeSpec.io_strategy:type_name -> openstorage.api.IoStrategy - 451, // 36: openstorage.api.VolumeSpec.placement_strategy:type_name -> openstorage.api.VolumePlacementStrategy - 91, // 37: openstorage.api.VolumeSpec.ownership:type_name -> openstorage.api.Ownership - 71, // 38: openstorage.api.VolumeSpec.export_spec:type_name -> openstorage.api.ExportSpec - 31, // 39: openstorage.api.VolumeSpec.xattr:type_name -> openstorage.api.Xattr.Value - 84, // 40: openstorage.api.VolumeSpec.scan_policy:type_name -> openstorage.api.ScanPolicy - 81, // 41: openstorage.api.VolumeSpec.mount_options:type_name -> openstorage.api.MountOptions - 81, // 42: openstorage.api.VolumeSpec.sharedv4_mount_options:type_name -> openstorage.api.MountOptions - 77, // 43: openstorage.api.VolumeSpec.proxy_spec:type_name -> openstorage.api.ProxySpec - 78, // 44: openstorage.api.VolumeSpec.sharedv4_service_spec:type_name -> openstorage.api.Sharedv4ServiceSpec - 80, // 45: openstorage.api.VolumeSpec.sharedv4_spec:type_name -> openstorage.api.Sharedv4Spec - 85, // 46: openstorage.api.VolumeSpec.io_throttle:type_name -> openstorage.api.IoThrottle - 64, // 47: openstorage.api.VolumeSpec.topology_requirement:type_name -> openstorage.api.TopologyRequirement - 21, // 48: openstorage.api.VolumeSpec.near_sync_replication_strategy:type_name -> openstorage.api.NearSyncReplicationStrategy - 8, // 49: openstorage.api.VolumeSpecUpdate.cos:type_name -> openstorage.api.CosType - 9, // 50: openstorage.api.VolumeSpecUpdate.io_profile:type_name -> openstorage.api.IoProfile - 89, // 51: openstorage.api.VolumeSpecUpdate.replica_set:type_name -> openstorage.api.ReplicaSet - 68, // 52: openstorage.api.VolumeSpecUpdate.group:type_name -> openstorage.api.Group - 91, // 53: openstorage.api.VolumeSpecUpdate.ownership:type_name -> openstorage.api.Ownership - 69, // 54: openstorage.api.VolumeSpecUpdate.io_strategy:type_name -> openstorage.api.IoStrategy - 71, // 55: openstorage.api.VolumeSpecUpdate.export_spec:type_name -> openstorage.api.ExportSpec - 31, // 56: openstorage.api.VolumeSpecUpdate.xattr:type_name -> openstorage.api.Xattr.Value - 84, // 57: openstorage.api.VolumeSpecUpdate.scan_policy:type_name -> openstorage.api.ScanPolicy - 81, // 58: openstorage.api.VolumeSpecUpdate.mount_opt_spec:type_name -> openstorage.api.MountOptions - 81, // 59: openstorage.api.VolumeSpecUpdate.sharedv4_mount_opt_spec:type_name -> openstorage.api.MountOptions - 77, // 60: openstorage.api.VolumeSpecUpdate.proxy_spec:type_name -> openstorage.api.ProxySpec - 78, // 61: openstorage.api.VolumeSpecUpdate.sharedv4_service_spec:type_name -> openstorage.api.Sharedv4ServiceSpec - 80, // 62: openstorage.api.VolumeSpecUpdate.sharedv4_spec:type_name -> openstorage.api.Sharedv4Spec - 85, // 63: openstorage.api.VolumeSpecUpdate.io_throttle:type_name -> openstorage.api.IoThrottle - 21, // 64: openstorage.api.VolumeSpecUpdate.near_sync_replication_strategy:type_name -> openstorage.api.NearSyncReplicationStrategy - 8, // 65: openstorage.api.VolumeSpecPolicy.cos:type_name -> openstorage.api.CosType - 9, // 66: openstorage.api.VolumeSpecPolicy.io_profile:type_name -> openstorage.api.IoProfile - 474, // 67: openstorage.api.VolumeSpecPolicy.volume_labels:type_name -> openstorage.api.VolumeSpecPolicy.VolumeLabelsEntry - 89, // 68: openstorage.api.VolumeSpecPolicy.replica_set:type_name -> openstorage.api.ReplicaSet - 68, // 69: openstorage.api.VolumeSpecPolicy.group:type_name -> openstorage.api.Group - 36, // 70: openstorage.api.VolumeSpecPolicy.size_operator:type_name -> openstorage.api.VolumeSpecPolicy.PolicyOp - 36, // 71: openstorage.api.VolumeSpecPolicy.ha_level_operator:type_name -> openstorage.api.VolumeSpecPolicy.PolicyOp - 36, // 72: openstorage.api.VolumeSpecPolicy.scale_operator:type_name -> openstorage.api.VolumeSpecPolicy.PolicyOp - 36, // 73: openstorage.api.VolumeSpecPolicy.snapshot_interval_operator:type_name -> openstorage.api.VolumeSpecPolicy.PolicyOp - 69, // 74: openstorage.api.VolumeSpecPolicy.io_strategy:type_name -> openstorage.api.IoStrategy - 71, // 75: openstorage.api.VolumeSpecPolicy.export_spec:type_name -> openstorage.api.ExportSpec - 84, // 76: openstorage.api.VolumeSpecPolicy.scan_policy:type_name -> openstorage.api.ScanPolicy - 81, // 77: openstorage.api.VolumeSpecPolicy.mount_opt_spec:type_name -> openstorage.api.MountOptions - 81, // 78: openstorage.api.VolumeSpecPolicy.sharedv4_mount_opt_spec:type_name -> openstorage.api.MountOptions - 77, // 79: openstorage.api.VolumeSpecPolicy.proxy_spec:type_name -> openstorage.api.ProxySpec - 78, // 80: openstorage.api.VolumeSpecPolicy.sharedv4_service_spec:type_name -> openstorage.api.Sharedv4ServiceSpec - 80, // 81: openstorage.api.VolumeSpecPolicy.sharedv4_spec:type_name -> openstorage.api.Sharedv4Spec - 85, // 82: openstorage.api.VolumeSpecPolicy.io_throttle:type_name -> openstorage.api.IoThrottle - 475, // 83: openstorage.api.RuntimeStateMap.runtime_state:type_name -> openstorage.api.RuntimeStateMap.RuntimeStateEntry - 477, // 84: openstorage.api.Ownership.acls:type_name -> openstorage.api.Ownership.AccessControl - 67, // 85: openstorage.api.Volume.source:type_name -> openstorage.api.Source - 68, // 86: openstorage.api.Volume.group:type_name -> openstorage.api.Group - 65, // 87: openstorage.api.Volume.locator:type_name -> openstorage.api.VolumeLocator - 525, // 88: openstorage.api.Volume.ctime:type_name -> google.protobuf.Timestamp - 86, // 89: openstorage.api.Volume.spec:type_name -> openstorage.api.VolumeSpec - 525, // 90: openstorage.api.Volume.last_scan:type_name -> google.protobuf.Timestamp - 2, // 91: openstorage.api.Volume.format:type_name -> openstorage.api.FSType - 11, // 92: openstorage.api.Volume.status:type_name -> openstorage.api.VolumeStatus - 10, // 93: openstorage.api.Volume.state:type_name -> openstorage.api.VolumeState - 14, // 94: openstorage.api.Volume.attached_state:type_name -> openstorage.api.AttachState - 480, // 95: openstorage.api.Volume.attach_info:type_name -> openstorage.api.Volume.AttachInfoEntry - 89, // 96: openstorage.api.Volume.replica_sets:type_name -> openstorage.api.ReplicaSet - 90, // 97: openstorage.api.Volume.runtime_state:type_name -> openstorage.api.RuntimeStateMap - 125, // 98: openstorage.api.Volume.volume_consumers:type_name -> openstorage.api.VolumeConsumer - 525, // 99: openstorage.api.Volume.attach_time:type_name -> google.protobuf.Timestamp - 525, // 100: openstorage.api.Volume.detach_time:type_name -> google.protobuf.Timestamp - 83, // 101: openstorage.api.Volume.fpConfig:type_name -> openstorage.api.FastpathConfig - 525, // 102: openstorage.api.Volume.last_scan_fix:type_name -> google.protobuf.Timestamp - 12, // 103: openstorage.api.Volume.last_scan_status:type_name -> openstorage.api.FilesystemHealthStatus - 81, // 104: openstorage.api.Volume.mount_options:type_name -> openstorage.api.MountOptions - 81, // 105: openstorage.api.Volume.sharedv4_mount_options:type_name -> openstorage.api.MountOptions - 9, // 106: openstorage.api.Volume.derived_io_profile:type_name -> openstorage.api.IoProfile - 95, // 107: openstorage.api.VolumeUsageByNode.volume_usage:type_name -> openstorage.api.VolumeUsage - 97, // 108: openstorage.api.VolumeBytesUsedByNode.vol_usage:type_name -> openstorage.api.VolumeBytesUsed - 88, // 109: openstorage.api.SdkStoragePolicy.policy:type_name -> openstorage.api.VolumeSpecPolicy - 91, // 110: openstorage.api.SdkStoragePolicy.ownership:type_name -> openstorage.api.Ownership - 4, // 111: openstorage.api.Alert.severity:type_name -> openstorage.api.SeverityType - 525, // 112: openstorage.api.Alert.timestamp:type_name -> google.protobuf.Timestamp - 5, // 113: openstorage.api.Alert.resource:type_name -> openstorage.api.ResourceType - 525, // 114: openstorage.api.Alert.first_seen:type_name -> google.protobuf.Timestamp - 525, // 115: openstorage.api.SdkAlertsTimeSpan.start_time:type_name -> google.protobuf.Timestamp - 525, // 116: openstorage.api.SdkAlertsTimeSpan.end_time:type_name -> google.protobuf.Timestamp - 4, // 117: openstorage.api.SdkAlertsOption.min_severity_type:type_name -> openstorage.api.SeverityType - 103, // 118: openstorage.api.SdkAlertsOption.time_span:type_name -> openstorage.api.SdkAlertsTimeSpan - 104, // 119: openstorage.api.SdkAlertsOption.count_span:type_name -> openstorage.api.SdkAlertsCountSpan - 5, // 120: openstorage.api.SdkAlertsResourceTypeQuery.resource_type:type_name -> openstorage.api.ResourceType - 5, // 121: openstorage.api.SdkAlertsAlertTypeQuery.resource_type:type_name -> openstorage.api.ResourceType - 5, // 122: openstorage.api.SdkAlertsResourceIdQuery.resource_type:type_name -> openstorage.api.ResourceType - 106, // 123: openstorage.api.SdkAlertsQuery.resource_type_query:type_name -> openstorage.api.SdkAlertsResourceTypeQuery - 107, // 124: openstorage.api.SdkAlertsQuery.alert_type_query:type_name -> openstorage.api.SdkAlertsAlertTypeQuery - 108, // 125: openstorage.api.SdkAlertsQuery.resource_id_query:type_name -> openstorage.api.SdkAlertsResourceIdQuery - 105, // 126: openstorage.api.SdkAlertsQuery.opts:type_name -> openstorage.api.SdkAlertsOption - 109, // 127: openstorage.api.SdkAlertsEnumerateWithFiltersRequest.queries:type_name -> openstorage.api.SdkAlertsQuery - 102, // 128: openstorage.api.SdkAlertsEnumerateWithFiltersResponse.alerts:type_name -> openstorage.api.Alert - 109, // 129: openstorage.api.SdkAlertsDeleteRequest.queries:type_name -> openstorage.api.SdkAlertsQuery - 102, // 130: openstorage.api.Alerts.alert:type_name -> openstorage.api.Alert - 65, // 131: openstorage.api.VolumeCreateRequest.locator:type_name -> openstorage.api.VolumeLocator - 67, // 132: openstorage.api.VolumeCreateRequest.source:type_name -> openstorage.api.Source - 86, // 133: openstorage.api.VolumeCreateRequest.spec:type_name -> openstorage.api.VolumeSpec - 117, // 134: openstorage.api.VolumeCreateResponse.volume_response:type_name -> openstorage.api.VolumeResponse - 7, // 135: openstorage.api.VolumeStateAction.attach:type_name -> openstorage.api.VolumeActionParam - 7, // 136: openstorage.api.VolumeStateAction.mount:type_name -> openstorage.api.VolumeActionParam - 65, // 137: openstorage.api.VolumeSetRequest.locator:type_name -> openstorage.api.VolumeLocator - 86, // 138: openstorage.api.VolumeSetRequest.spec:type_name -> openstorage.api.VolumeSpec - 119, // 139: openstorage.api.VolumeSetRequest.action:type_name -> openstorage.api.VolumeStateAction - 481, // 140: openstorage.api.VolumeSetRequest.options:type_name -> openstorage.api.VolumeSetRequest.OptionsEntry - 92, // 141: openstorage.api.VolumeSetResponse.volume:type_name -> openstorage.api.Volume - 117, // 142: openstorage.api.VolumeSetResponse.volume_response:type_name -> openstorage.api.VolumeResponse - 65, // 143: openstorage.api.SnapCreateRequest.locator:type_name -> openstorage.api.VolumeLocator - 118, // 144: openstorage.api.SnapCreateResponse.volume_create_response:type_name -> openstorage.api.VolumeCreateResponse - 86, // 145: openstorage.api.VolumeInfo.storage:type_name -> openstorage.api.VolumeSpec - 482, // 146: openstorage.api.VolumeServiceRequest.srv_cmd_params:type_name -> openstorage.api.VolumeServiceRequest.SrvCmdParamsEntry - 483, // 147: openstorage.api.VolumeServiceInstanceResponse.status:type_name -> openstorage.api.VolumeServiceInstanceResponse.StatusEntry - 127, // 148: openstorage.api.VolumeServiceResponse.vol_srv_rsp:type_name -> openstorage.api.VolumeServiceInstanceResponse - 3, // 149: openstorage.api.GraphDriverChanges.kind:type_name -> openstorage.api.GraphDriverChangeType - 484, // 150: openstorage.api.ActiveRequest.ReqestKV:type_name -> openstorage.api.ActiveRequest.ReqestKVEntry - 131, // 151: openstorage.api.ActiveRequests.ActiveRequest:type_name -> openstorage.api.ActiveRequest - 485, // 152: openstorage.api.GroupSnapCreateRequest.Labels:type_name -> openstorage.api.GroupSnapCreateRequest.LabelsEntry - 486, // 153: openstorage.api.GroupSnapCreateResponse.snapshots:type_name -> openstorage.api.GroupSnapCreateResponse.SnapshotsEntry - 0, // 154: openstorage.api.StorageNode.status:type_name -> openstorage.api.Status - 487, // 155: openstorage.api.StorageNode.disks:type_name -> openstorage.api.StorageNode.DisksEntry - 61, // 156: openstorage.api.StorageNode.pools:type_name -> openstorage.api.StoragePool - 488, // 157: openstorage.api.StorageNode.node_labels:type_name -> openstorage.api.StorageNode.NodeLabelsEntry - 16, // 158: openstorage.api.StorageNode.HWType:type_name -> openstorage.api.HardwareType - 38, // 159: openstorage.api.StorageNode.security_status:type_name -> openstorage.api.StorageNode.SecurityStatus - 62, // 160: openstorage.api.StorageNode.scheduler_topology:type_name -> openstorage.api.SchedulerTopology - 0, // 161: openstorage.api.StorageCluster.status:type_name -> openstorage.api.Status - 22, // 162: openstorage.api.BucketCreateRequest.anonymousBucketAccessMode:type_name -> openstorage.api.AnonymousBucketAccessMode - 145, // 163: openstorage.api.BucketGrantAccessResponse.credentials:type_name -> openstorage.api.BucketAccessCredentials - 101, // 164: openstorage.api.SdkOpenStoragePolicyCreateRequest.storage_policy:type_name -> openstorage.api.SdkStoragePolicy - 101, // 165: openstorage.api.SdkOpenStoragePolicyEnumerateResponse.storage_policies:type_name -> openstorage.api.SdkStoragePolicy - 101, // 166: openstorage.api.SdkOpenStoragePolicyInspectResponse.storage_policy:type_name -> openstorage.api.SdkStoragePolicy - 101, // 167: openstorage.api.SdkOpenStoragePolicyUpdateRequest.storage_policy:type_name -> openstorage.api.SdkStoragePolicy - 101, // 168: openstorage.api.SdkOpenStoragePolicyDefaultInspectResponse.storage_policy:type_name -> openstorage.api.SdkStoragePolicy - 177, // 169: openstorage.api.SdkSchedulePolicyCreateRequest.schedule_policy:type_name -> openstorage.api.SdkSchedulePolicy - 177, // 170: openstorage.api.SdkSchedulePolicyUpdateRequest.schedule_policy:type_name -> openstorage.api.SdkSchedulePolicy - 177, // 171: openstorage.api.SdkSchedulePolicyEnumerateResponse.policies:type_name -> openstorage.api.SdkSchedulePolicy - 177, // 172: openstorage.api.SdkSchedulePolicyInspectResponse.policy:type_name -> openstorage.api.SdkSchedulePolicy - 23, // 173: openstorage.api.SdkSchedulePolicyIntervalWeekly.day:type_name -> openstorage.api.SdkTimeWeekday - 172, // 174: openstorage.api.SdkSchedulePolicyInterval.daily:type_name -> openstorage.api.SdkSchedulePolicyIntervalDaily - 173, // 175: openstorage.api.SdkSchedulePolicyInterval.weekly:type_name -> openstorage.api.SdkSchedulePolicyIntervalWeekly - 174, // 176: openstorage.api.SdkSchedulePolicyInterval.monthly:type_name -> openstorage.api.SdkSchedulePolicyIntervalMonthly - 175, // 177: openstorage.api.SdkSchedulePolicyInterval.periodic:type_name -> openstorage.api.SdkSchedulePolicyIntervalPeriodic - 176, // 178: openstorage.api.SdkSchedulePolicy.schedules:type_name -> openstorage.api.SdkSchedulePolicyInterval - 91, // 179: openstorage.api.SdkCredentialCreateRequest.ownership:type_name -> openstorage.api.Ownership - 182, // 180: openstorage.api.SdkCredentialCreateRequest.aws_credential:type_name -> openstorage.api.SdkAwsCredentialRequest - 183, // 181: openstorage.api.SdkCredentialCreateRequest.azure_credential:type_name -> openstorage.api.SdkAzureCredentialRequest - 184, // 182: openstorage.api.SdkCredentialCreateRequest.google_credential:type_name -> openstorage.api.SdkGoogleCredentialRequest - 185, // 183: openstorage.api.SdkCredentialCreateRequest.nfs_credential:type_name -> openstorage.api.SdkNfsCredentialRequest - 178, // 184: openstorage.api.SdkCredentialUpdateRequest.update_req:type_name -> openstorage.api.SdkCredentialCreateRequest - 91, // 185: openstorage.api.SdkCredentialInspectResponse.ownership:type_name -> openstorage.api.Ownership - 186, // 186: openstorage.api.SdkCredentialInspectResponse.aws_credential:type_name -> openstorage.api.SdkAwsCredentialResponse - 187, // 187: openstorage.api.SdkCredentialInspectResponse.azure_credential:type_name -> openstorage.api.SdkAzureCredentialResponse - 188, // 188: openstorage.api.SdkCredentialInspectResponse.google_credential:type_name -> openstorage.api.SdkGoogleCredentialResponse - 189, // 189: openstorage.api.SdkCredentialInspectResponse.nfs_credential:type_name -> openstorage.api.SdkNfsCredentialResponse - 200, // 190: openstorage.api.SdkVolumeMountRequest.options:type_name -> openstorage.api.SdkVolumeAttachOptions - 489, // 191: openstorage.api.SdkVolumeMountRequest.driver_options:type_name -> openstorage.api.SdkVolumeMountRequest.DriverOptionsEntry - 203, // 192: openstorage.api.SdkVolumeUnmountRequest.options:type_name -> openstorage.api.SdkVolumeUnmountOptions - 490, // 193: openstorage.api.SdkVolumeUnmountRequest.driver_options:type_name -> openstorage.api.SdkVolumeUnmountRequest.DriverOptionsEntry - 200, // 194: openstorage.api.SdkVolumeAttachRequest.options:type_name -> openstorage.api.SdkVolumeAttachOptions - 491, // 195: openstorage.api.SdkVolumeAttachRequest.driver_options:type_name -> openstorage.api.SdkVolumeAttachRequest.DriverOptionsEntry - 208, // 196: openstorage.api.SdkVolumeDetachRequest.options:type_name -> openstorage.api.SdkVolumeDetachOptions - 492, // 197: openstorage.api.SdkVolumeDetachRequest.driver_options:type_name -> openstorage.api.SdkVolumeDetachRequest.DriverOptionsEntry - 86, // 198: openstorage.api.SdkVolumeCreateRequest.spec:type_name -> openstorage.api.VolumeSpec - 493, // 199: openstorage.api.SdkVolumeCreateRequest.labels:type_name -> openstorage.api.SdkVolumeCreateRequest.LabelsEntry - 494, // 200: openstorage.api.SdkVolumeCloneRequest.additional_labels:type_name -> openstorage.api.SdkVolumeCloneRequest.AdditionalLabelsEntry - 66, // 201: openstorage.api.SdkVolumeInspectRequest.options:type_name -> openstorage.api.VolumeInspectOptions - 92, // 202: openstorage.api.SdkVolumeInspectResponse.volume:type_name -> openstorage.api.Volume - 495, // 203: openstorage.api.SdkVolumeInspectResponse.labels:type_name -> openstorage.api.SdkVolumeInspectResponse.LabelsEntry - 496, // 204: openstorage.api.SdkVolumeInspectWithFiltersRequest.labels:type_name -> openstorage.api.SdkVolumeInspectWithFiltersRequest.LabelsEntry - 91, // 205: openstorage.api.SdkVolumeInspectWithFiltersRequest.ownership:type_name -> openstorage.api.Ownership - 68, // 206: openstorage.api.SdkVolumeInspectWithFiltersRequest.group:type_name -> openstorage.api.Group - 66, // 207: openstorage.api.SdkVolumeInspectWithFiltersRequest.options:type_name -> openstorage.api.VolumeInspectOptions - 218, // 208: openstorage.api.SdkVolumeInspectWithFiltersResponse.volumes:type_name -> openstorage.api.SdkVolumeInspectResponse - 497, // 209: openstorage.api.SdkVolumeUpdateRequest.labels:type_name -> openstorage.api.SdkVolumeUpdateRequest.LabelsEntry - 87, // 210: openstorage.api.SdkVolumeUpdateRequest.spec:type_name -> openstorage.api.VolumeSpecUpdate - 93, // 211: openstorage.api.SdkVolumeStatsResponse.stats:type_name -> openstorage.api.Stats - 94, // 212: openstorage.api.SdkVolumeCapacityUsageResponse.capacity_usage_info:type_name -> openstorage.api.CapacityUsageInfo - 498, // 213: openstorage.api.SdkVolumeEnumerateWithFiltersRequest.labels:type_name -> openstorage.api.SdkVolumeEnumerateWithFiltersRequest.LabelsEntry - 91, // 214: openstorage.api.SdkVolumeEnumerateWithFiltersRequest.ownership:type_name -> openstorage.api.Ownership - 68, // 215: openstorage.api.SdkVolumeEnumerateWithFiltersRequest.group:type_name -> openstorage.api.Group - 499, // 216: openstorage.api.SdkVolumeSnapshotCreateRequest.labels:type_name -> openstorage.api.SdkVolumeSnapshotCreateRequest.LabelsEntry - 500, // 217: openstorage.api.SdkVolumeSnapshotEnumerateWithFiltersRequest.labels:type_name -> openstorage.api.SdkVolumeSnapshotEnumerateWithFiltersRequest.LabelsEntry - 243, // 218: openstorage.api.SdkWatchRequest.volume_event:type_name -> openstorage.api.SdkVolumeWatchRequest - 244, // 219: openstorage.api.SdkWatchResponse.volume_event:type_name -> openstorage.api.SdkVolumeWatchResponse - 501, // 220: openstorage.api.SdkVolumeWatchRequest.labels:type_name -> openstorage.api.SdkVolumeWatchRequest.LabelsEntry - 92, // 221: openstorage.api.SdkVolumeWatchResponse.volume:type_name -> openstorage.api.Volume - 96, // 222: openstorage.api.SdkNodeVolumeUsageByNodeResponse.volume_usage_info:type_name -> openstorage.api.VolumeUsageByNode - 100, // 223: openstorage.api.SdkNodeRelaxedReclaimPurgeResponse.status:type_name -> openstorage.api.RelaxedReclaimPurge - 136, // 224: openstorage.api.SdkClusterInspectCurrentResponse.cluster:type_name -> openstorage.api.StorageCluster - 40, // 225: openstorage.api.Job.state:type_name -> openstorage.api.Job.State - 39, // 226: openstorage.api.Job.type:type_name -> openstorage.api.Job.Type - 264, // 227: openstorage.api.Job.drain_attachments:type_name -> openstorage.api.NodeDrainAttachmentsJob - 265, // 228: openstorage.api.Job.clouddrive_transfer:type_name -> openstorage.api.CloudDriveTransferJob - 266, // 229: openstorage.api.Job.collect_diags:type_name -> openstorage.api.CollectDiagsJob - 267, // 230: openstorage.api.Job.defrag:type_name -> openstorage.api.DefragJob - 525, // 231: openstorage.api.Job.create_time:type_name -> google.protobuf.Timestamp - 525, // 232: openstorage.api.Job.last_update_time:type_name -> google.protobuf.Timestamp - 260, // 233: openstorage.api.SdkJobResponse.job:type_name -> openstorage.api.Job - 454, // 234: openstorage.api.SdkNodeDrainAttachmentsRequest.selector:type_name -> openstorage.api.LabelSelectorRequirement - 263, // 235: openstorage.api.NodeDrainAttachmentsJob.parameters:type_name -> openstorage.api.SdkNodeDrainAttachmentsRequest - 525, // 236: openstorage.api.NodeDrainAttachmentsJob.create_time:type_name -> google.protobuf.Timestamp - 525, // 237: openstorage.api.NodeDrainAttachmentsJob.last_update_time:type_name -> google.protobuf.Timestamp - 271, // 238: openstorage.api.CollectDiagsJob.request:type_name -> openstorage.api.SdkDiagsCollectRequest - 270, // 239: openstorage.api.CollectDiagsJob.statuses:type_name -> openstorage.api.DiagsCollectionStatus - 502, // 240: openstorage.api.DefragNodeStatus.pool_status:type_name -> openstorage.api.DefragNodeStatus.PoolStatusEntry - 525, // 241: openstorage.api.DefragPoolStatus.last_start_time:type_name -> google.protobuf.Timestamp - 525, // 242: openstorage.api.DefragPoolStatus.last_complete_time:type_name -> google.protobuf.Timestamp - 41, // 243: openstorage.api.DiagsCollectionStatus.state:type_name -> openstorage.api.DiagsCollectionStatus.State - 273, // 244: openstorage.api.SdkDiagsCollectRequest.node:type_name -> openstorage.api.DiagsNodeSelector - 274, // 245: openstorage.api.SdkDiagsCollectRequest.volume:type_name -> openstorage.api.DiagsVolumeSelector - 260, // 246: openstorage.api.SdkDiagsCollectResponse.job:type_name -> openstorage.api.Job - 454, // 247: openstorage.api.DiagsNodeSelector.node_label_selector:type_name -> openstorage.api.LabelSelectorRequirement - 454, // 248: openstorage.api.DiagsVolumeSelector.volume_label_selector:type_name -> openstorage.api.LabelSelectorRequirement - 39, // 249: openstorage.api.SdkEnumerateJobsRequest.type:type_name -> openstorage.api.Job.Type - 260, // 250: openstorage.api.SdkEnumerateJobsResponse.jobs:type_name -> openstorage.api.Job - 39, // 251: openstorage.api.SdkUpdateJobRequest.type:type_name -> openstorage.api.Job.Type - 40, // 252: openstorage.api.SdkUpdateJobRequest.state:type_name -> openstorage.api.Job.State - 39, // 253: openstorage.api.SdkGetJobStatusRequest.type:type_name -> openstorage.api.Job.Type - 281, // 254: openstorage.api.JobAudit.summary:type_name -> openstorage.api.JobWorkSummary - 284, // 255: openstorage.api.JobWorkSummary.drain_attachments_summary:type_name -> openstorage.api.DrainAttachmentsSummary - 281, // 256: openstorage.api.JobSummary.work_summaries:type_name -> openstorage.api.JobWorkSummary - 260, // 257: openstorage.api.SdkGetJobStatusResponse.job:type_name -> openstorage.api.Job - 282, // 258: openstorage.api.SdkGetJobStatusResponse.summary:type_name -> openstorage.api.JobSummary - 49, // 259: openstorage.api.SdkStoragePoolResizeRequest.operation_type:type_name -> openstorage.api.SdkStoragePool.ResizeOperationType - 42, // 260: openstorage.api.StorageRebalanceTriggerThreshold.type:type_name -> openstorage.api.StorageRebalanceTriggerThreshold.Type - 43, // 261: openstorage.api.StorageRebalanceTriggerThreshold.metric:type_name -> openstorage.api.StorageRebalanceTriggerThreshold.Metric - 290, // 262: openstorage.api.SdkStorageRebalanceRequest.trigger_thresholds:type_name -> openstorage.api.StorageRebalanceTriggerThreshold - 454, // 263: openstorage.api.SdkStorageRebalanceRequest.source_pool_selector:type_name -> openstorage.api.LabelSelectorRequirement - 454, // 264: openstorage.api.SdkStorageRebalanceRequest.target_pool_selector:type_name -> openstorage.api.LabelSelectorRequirement - 44, // 265: openstorage.api.SdkStorageRebalanceRequest.mode:type_name -> openstorage.api.SdkStorageRebalanceRequest.Mode - 293, // 266: openstorage.api.SdkStorageRebalanceResponse.job:type_name -> openstorage.api.StorageRebalanceJob - 294, // 267: openstorage.api.SdkStorageRebalanceResponse.summary:type_name -> openstorage.api.StorageRebalanceSummary - 296, // 268: openstorage.api.SdkStorageRebalanceResponse.actions:type_name -> openstorage.api.StorageRebalanceAudit - 24, // 269: openstorage.api.StorageRebalanceJob.state:type_name -> openstorage.api.StorageRebalanceJobState - 291, // 270: openstorage.api.StorageRebalanceJob.parameters:type_name -> openstorage.api.SdkStorageRebalanceRequest - 525, // 271: openstorage.api.StorageRebalanceJob.create_time:type_name -> google.protobuf.Timestamp - 525, // 272: openstorage.api.StorageRebalanceJob.last_update_time:type_name -> google.protobuf.Timestamp - 295, // 273: openstorage.api.StorageRebalanceSummary.work_summary:type_name -> openstorage.api.StorageRebalanceWorkSummary - 45, // 274: openstorage.api.StorageRebalanceWorkSummary.type:type_name -> openstorage.api.StorageRebalanceWorkSummary.Type - 46, // 275: openstorage.api.StorageRebalanceAudit.action:type_name -> openstorage.api.StorageRebalanceAudit.StorageRebalanceAction - 525, // 276: openstorage.api.StorageRebalanceAudit.start_time:type_name -> google.protobuf.Timestamp - 525, // 277: openstorage.api.StorageRebalanceAudit.end_time:type_name -> google.protobuf.Timestamp - 295, // 278: openstorage.api.StorageRebalanceAudit.work_summary:type_name -> openstorage.api.StorageRebalanceWorkSummary - 24, // 279: openstorage.api.StorageRebalanceAudit.state:type_name -> openstorage.api.StorageRebalanceJobState - 24, // 280: openstorage.api.SdkUpdateRebalanceJobRequest.state:type_name -> openstorage.api.StorageRebalanceJobState - 293, // 281: openstorage.api.SdkGetRebalanceJobStatusResponse.job:type_name -> openstorage.api.StorageRebalanceJob - 294, // 282: openstorage.api.SdkGetRebalanceJobStatusResponse.summary:type_name -> openstorage.api.StorageRebalanceSummary - 296, // 283: openstorage.api.SdkGetRebalanceJobStatusResponse.actions:type_name -> openstorage.api.StorageRebalanceAudit - 293, // 284: openstorage.api.SdkEnumerateRebalanceJobsResponse.jobs:type_name -> openstorage.api.StorageRebalanceJob - 291, // 285: openstorage.api.RebalanceScheduleInfo.rebalance_requests:type_name -> openstorage.api.SdkStorageRebalanceRequest - 525, // 286: openstorage.api.RebalanceScheduleInfo.create_time:type_name -> google.protobuf.Timestamp - 291, // 287: openstorage.api.SdkCreateRebalanceScheduleRequest.rebalance_requests:type_name -> openstorage.api.SdkStorageRebalanceRequest - 303, // 288: openstorage.api.SdkCreateRebalanceScheduleResponse.scheduleInfo:type_name -> openstorage.api.RebalanceScheduleInfo - 303, // 289: openstorage.api.SdkGetRebalanceScheduleResponse.scheduleInfo:type_name -> openstorage.api.RebalanceScheduleInfo - 135, // 290: openstorage.api.SdkNodeInspectResponse.node:type_name -> openstorage.api.StorageNode - 135, // 291: openstorage.api.SdkNodeInspectCurrentResponse.node:type_name -> openstorage.api.StorageNode - 135, // 292: openstorage.api.SdkNodeEnumerateWithFiltersResponse.nodes:type_name -> openstorage.api.StorageNode - 115, // 293: openstorage.api.SdkObjectstoreInspectResponse.objectstore_status:type_name -> openstorage.api.ObjectstoreInfo - 115, // 294: openstorage.api.SdkObjectstoreCreateResponse.objectstore_status:type_name -> openstorage.api.ObjectstoreInfo - 503, // 295: openstorage.api.SdkCloudBackupCreateRequest.labels:type_name -> openstorage.api.SdkCloudBackupCreateRequest.LabelsEntry - 504, // 296: openstorage.api.SdkCloudBackupGroupCreateRequest.labels:type_name -> openstorage.api.SdkCloudBackupGroupCreateRequest.LabelsEntry - 457, // 297: openstorage.api.SdkCloudBackupRestoreRequest.spec:type_name -> openstorage.api.RestoreVolumeSpec - 65, // 298: openstorage.api.SdkCloudBackupRestoreRequest.locator:type_name -> openstorage.api.VolumeLocator - 27, // 299: openstorage.api.SdkCloudBackupEnumerateWithFiltersRequest.status_filter:type_name -> openstorage.api.SdkCloudBackupStatusType - 505, // 300: openstorage.api.SdkCloudBackupEnumerateWithFiltersRequest.metadata_filter:type_name -> openstorage.api.SdkCloudBackupEnumerateWithFiltersRequest.MetadataFilterEntry - 525, // 301: openstorage.api.SdkCloudBackupInfo.timestamp:type_name -> google.protobuf.Timestamp - 506, // 302: openstorage.api.SdkCloudBackupInfo.metadata:type_name -> openstorage.api.SdkCloudBackupInfo.MetadataEntry - 27, // 303: openstorage.api.SdkCloudBackupInfo.status:type_name -> openstorage.api.SdkCloudBackupStatusType - 25, // 304: openstorage.api.SdkCloudBackupInfo.cluster_type:type_name -> openstorage.api.SdkCloudBackupClusterType - 338, // 305: openstorage.api.SdkCloudBackupEnumerateWithFiltersResponse.backups:type_name -> openstorage.api.SdkCloudBackupInfo - 26, // 306: openstorage.api.SdkCloudBackupStatus.optype:type_name -> openstorage.api.SdkCloudBackupOpType - 27, // 307: openstorage.api.SdkCloudBackupStatus.status:type_name -> openstorage.api.SdkCloudBackupStatusType - 525, // 308: openstorage.api.SdkCloudBackupStatus.start_time:type_name -> google.protobuf.Timestamp - 525, // 309: openstorage.api.SdkCloudBackupStatus.completed_time:type_name -> google.protobuf.Timestamp - 507, // 310: openstorage.api.SdkCloudBackupStatusResponse.statuses:type_name -> openstorage.api.SdkCloudBackupStatusResponse.StatusesEntry - 525, // 311: openstorage.api.SdkCloudBackupHistoryItem.timestamp:type_name -> google.protobuf.Timestamp - 27, // 312: openstorage.api.SdkCloudBackupHistoryItem.status:type_name -> openstorage.api.SdkCloudBackupStatusType - 345, // 313: openstorage.api.SdkCloudBackupHistoryResponse.history_list:type_name -> openstorage.api.SdkCloudBackupHistoryItem - 28, // 314: openstorage.api.SdkCloudBackupStateChangeRequest.requested_state:type_name -> openstorage.api.SdkCloudBackupRequestedState - 176, // 315: openstorage.api.SdkCloudBackupScheduleInfo.schedules:type_name -> openstorage.api.SdkSchedulePolicyInterval - 508, // 316: openstorage.api.SdkCloudBackupScheduleInfo.labels:type_name -> openstorage.api.SdkCloudBackupScheduleInfo.LabelsEntry - 350, // 317: openstorage.api.SdkCloudBackupSchedCreateRequest.cloud_sched_info:type_name -> openstorage.api.SdkCloudBackupScheduleInfo - 350, // 318: openstorage.api.SdkCloudBackupSchedUpdateRequest.cloud_sched_info:type_name -> openstorage.api.SdkCloudBackupScheduleInfo - 509, // 319: openstorage.api.SdkCloudBackupSchedEnumerateResponse.cloud_sched_list:type_name -> openstorage.api.SdkCloudBackupSchedEnumerateResponse.CloudSchedListEntry - 361, // 320: openstorage.api.SdkRole.rules:type_name -> openstorage.api.SdkRule - 362, // 321: openstorage.api.SdkRoleCreateRequest.role:type_name -> openstorage.api.SdkRole - 362, // 322: openstorage.api.SdkRoleCreateResponse.role:type_name -> openstorage.api.SdkRole - 362, // 323: openstorage.api.SdkRoleInspectResponse.role:type_name -> openstorage.api.SdkRole - 362, // 324: openstorage.api.SdkRoleUpdateRequest.role:type_name -> openstorage.api.SdkRole - 362, // 325: openstorage.api.SdkRoleUpdateResponse.role:type_name -> openstorage.api.SdkRole - 50, // 326: openstorage.api.SdkFilesystemTrimStartResponse.status:type_name -> openstorage.api.FilesystemTrim.FilesystemTrimStatus - 50, // 327: openstorage.api.SdkFilesystemTrimStatusResponse.status:type_name -> openstorage.api.FilesystemTrim.FilesystemTrimStatus - 510, // 328: openstorage.api.SdkAutoFSTrimStatusResponse.trim_status:type_name -> openstorage.api.SdkAutoFSTrimStatusResponse.TrimStatusEntry - 511, // 329: openstorage.api.SdkAutoFSTrimUsageResponse.usage:type_name -> openstorage.api.SdkAutoFSTrimUsageResponse.UsageEntry - 98, // 330: openstorage.api.SdkVolumeBytesUsedResponse.vol_util_info:type_name -> openstorage.api.VolumeBytesUsedByNode - 12, // 331: openstorage.api.FilesystemCheckVolInfo.health_status:type_name -> openstorage.api.FilesystemHealthStatus - 51, // 332: openstorage.api.SdkFilesystemCheckStartResponse.status:type_name -> openstorage.api.FilesystemCheck.FilesystemCheckStatus - 51, // 333: openstorage.api.SdkFilesystemCheckStatusResponse.status:type_name -> openstorage.api.FilesystemCheck.FilesystemCheckStatus - 12, // 334: openstorage.api.SdkFilesystemCheckStatusResponse.health_status:type_name -> openstorage.api.FilesystemHealthStatus - 512, // 335: openstorage.api.SdkFilesystemCheckListSnapshotsResponse.snapshots:type_name -> openstorage.api.SdkFilesystemCheckListSnapshotsResponse.SnapshotsEntry - 513, // 336: openstorage.api.SdkFilesystemCheckListVolumesResponse.volumes:type_name -> openstorage.api.SdkFilesystemCheckListVolumesResponse.VolumesEntry - 409, // 337: openstorage.api.SdkIdentityCapabilitiesResponse.capabilities:type_name -> openstorage.api.SdkServiceCapability - 410, // 338: openstorage.api.SdkIdentityVersionResponse.sdk_version:type_name -> openstorage.api.SdkVersion - 411, // 339: openstorage.api.SdkIdentityVersionResponse.version:type_name -> openstorage.api.StorageVersion - 514, // 340: openstorage.api.SdkServiceCapability.service:type_name -> openstorage.api.SdkServiceCapability.OpenStorageService - 515, // 341: openstorage.api.StorageVersion.details:type_name -> openstorage.api.StorageVersion.DetailsEntry - 54, // 342: openstorage.api.CloudMigrateStartRequest.operation:type_name -> openstorage.api.CloudMigrate.OperationType - 516, // 343: openstorage.api.SdkCloudMigrateStartRequest.volume:type_name -> openstorage.api.SdkCloudMigrateStartRequest.MigrateVolume - 517, // 344: openstorage.api.SdkCloudMigrateStartRequest.volume_group:type_name -> openstorage.api.SdkCloudMigrateStartRequest.MigrateVolumeGroup - 518, // 345: openstorage.api.SdkCloudMigrateStartRequest.all_volumes:type_name -> openstorage.api.SdkCloudMigrateStartRequest.MigrateAllVolumes - 415, // 346: openstorage.api.SdkCloudMigrateStartResponse.result:type_name -> openstorage.api.CloudMigrateStartResponse - 417, // 347: openstorage.api.SdkCloudMigrateCancelRequest.request:type_name -> openstorage.api.CloudMigrateCancelRequest - 55, // 348: openstorage.api.CloudMigrateInfo.current_stage:type_name -> openstorage.api.CloudMigrate.Stage - 56, // 349: openstorage.api.CloudMigrateInfo.status:type_name -> openstorage.api.CloudMigrate.Status - 525, // 350: openstorage.api.CloudMigrateInfo.last_update:type_name -> google.protobuf.Timestamp - 525, // 351: openstorage.api.CloudMigrateInfo.start_time:type_name -> google.protobuf.Timestamp - 525, // 352: openstorage.api.CloudMigrateInfo.completed_time:type_name -> google.protobuf.Timestamp - 420, // 353: openstorage.api.CloudMigrateInfoList.list:type_name -> openstorage.api.CloudMigrateInfo - 423, // 354: openstorage.api.SdkCloudMigrateStatusRequest.request:type_name -> openstorage.api.CloudMigrateStatusRequest - 519, // 355: openstorage.api.CloudMigrateStatusResponse.info:type_name -> openstorage.api.CloudMigrateStatusResponse.InfoEntry - 424, // 356: openstorage.api.SdkCloudMigrateStatusResponse.result:type_name -> openstorage.api.CloudMigrateStatusResponse - 57, // 357: openstorage.api.ClusterPairCreateRequest.mode:type_name -> openstorage.api.ClusterPairMode.Mode - 427, // 358: openstorage.api.SdkClusterPairCreateRequest.request:type_name -> openstorage.api.ClusterPairCreateRequest - 428, // 359: openstorage.api.SdkClusterPairCreateResponse.result:type_name -> openstorage.api.ClusterPairCreateResponse - 57, // 360: openstorage.api.ClusterPairProcessRequest.mode:type_name -> openstorage.api.ClusterPairMode.Mode - 520, // 361: openstorage.api.ClusterPairProcessResponse.options:type_name -> openstorage.api.ClusterPairProcessResponse.OptionsEntry - 435, // 362: openstorage.api.SdkClusterPairGetTokenResponse.result:type_name -> openstorage.api.ClusterPairTokenGetResponse - 435, // 363: openstorage.api.SdkClusterPairResetTokenResponse.result:type_name -> openstorage.api.ClusterPairTokenGetResponse - 521, // 364: openstorage.api.ClusterPairInfo.options:type_name -> openstorage.api.ClusterPairInfo.OptionsEntry - 57, // 365: openstorage.api.ClusterPairInfo.mode:type_name -> openstorage.api.ClusterPairMode.Mode - 440, // 366: openstorage.api.ClusterPairGetResponse.pair_info:type_name -> openstorage.api.ClusterPairInfo - 442, // 367: openstorage.api.SdkClusterPairInspectResponse.result:type_name -> openstorage.api.ClusterPairGetResponse - 522, // 368: openstorage.api.ClusterPairsEnumerateResponse.pairs:type_name -> openstorage.api.ClusterPairsEnumerateResponse.PairsEntry - 445, // 369: openstorage.api.SdkClusterPairEnumerateResponse.result:type_name -> openstorage.api.ClusterPairsEnumerateResponse - 525, // 370: openstorage.api.Catalog.LastModified:type_name -> google.protobuf.Timestamp - 447, // 371: openstorage.api.Catalog.children:type_name -> openstorage.api.Catalog - 447, // 372: openstorage.api.CatalogResponse.root:type_name -> openstorage.api.Catalog - 448, // 373: openstorage.api.CatalogResponse.report:type_name -> openstorage.api.Report - 523, // 374: openstorage.api.LocateResponse.mounts:type_name -> openstorage.api.LocateResponse.MountsEntry - 524, // 375: openstorage.api.LocateResponse.dockerids:type_name -> openstorage.api.LocateResponse.DockeridsEntry - 452, // 376: openstorage.api.VolumePlacementStrategy.replica_affinity:type_name -> openstorage.api.ReplicaPlacementSpec - 452, // 377: openstorage.api.VolumePlacementStrategy.replica_anti_affinity:type_name -> openstorage.api.ReplicaPlacementSpec - 453, // 378: openstorage.api.VolumePlacementStrategy.volume_affinity:type_name -> openstorage.api.VolumePlacementSpec - 453, // 379: openstorage.api.VolumePlacementStrategy.volume_anti_affinity:type_name -> openstorage.api.VolumePlacementSpec - 29, // 380: openstorage.api.ReplicaPlacementSpec.enforcement:type_name -> openstorage.api.EnforcementType - 454, // 381: openstorage.api.ReplicaPlacementSpec.match_expressions:type_name -> openstorage.api.LabelSelectorRequirement - 29, // 382: openstorage.api.VolumePlacementSpec.enforcement:type_name -> openstorage.api.EnforcementType - 454, // 383: openstorage.api.VolumePlacementSpec.match_expressions:type_name -> openstorage.api.LabelSelectorRequirement - 58, // 384: openstorage.api.LabelSelectorRequirement.operator:type_name -> openstorage.api.LabelSelectorRequirement.Operator - 8, // 385: openstorage.api.RestoreVolumeSpec.cos:type_name -> openstorage.api.CosType - 9, // 386: openstorage.api.RestoreVolumeSpec.io_profile:type_name -> openstorage.api.IoProfile - 30, // 387: openstorage.api.RestoreVolumeSpec.shared:type_name -> openstorage.api.RestoreParamBoolType - 89, // 388: openstorage.api.RestoreVolumeSpec.replica_set:type_name -> openstorage.api.ReplicaSet - 455, // 389: openstorage.api.RestoreVolumeSpec.snapshot_schedule:type_name -> openstorage.api.RestoreVolSnashotSchedule - 30, // 390: openstorage.api.RestoreVolumeSpec.sticky:type_name -> openstorage.api.RestoreParamBoolType - 68, // 391: openstorage.api.RestoreVolumeSpec.group:type_name -> openstorage.api.Group - 30, // 392: openstorage.api.RestoreVolumeSpec.journal:type_name -> openstorage.api.RestoreParamBoolType - 30, // 393: openstorage.api.RestoreVolumeSpec.sharedv4:type_name -> openstorage.api.RestoreParamBoolType - 30, // 394: openstorage.api.RestoreVolumeSpec.nodiscard:type_name -> openstorage.api.RestoreParamBoolType - 69, // 395: openstorage.api.RestoreVolumeSpec.io_strategy:type_name -> openstorage.api.IoStrategy - 451, // 396: openstorage.api.RestoreVolumeSpec.placement_strategy:type_name -> openstorage.api.VolumePlacementStrategy - 456, // 397: openstorage.api.RestoreVolumeSpec.storage_policy:type_name -> openstorage.api.RestoreVolStoragePolicy - 91, // 398: openstorage.api.RestoreVolumeSpec.ownership:type_name -> openstorage.api.Ownership - 71, // 399: openstorage.api.RestoreVolumeSpec.export_spec:type_name -> openstorage.api.ExportSpec - 30, // 400: openstorage.api.RestoreVolumeSpec.fp_preference:type_name -> openstorage.api.RestoreParamBoolType - 81, // 401: openstorage.api.RestoreVolumeSpec.mount_options:type_name -> openstorage.api.MountOptions - 81, // 402: openstorage.api.RestoreVolumeSpec.sharedv4_mount_options:type_name -> openstorage.api.MountOptions - 30, // 403: openstorage.api.RestoreVolumeSpec.proxy_write:type_name -> openstorage.api.RestoreParamBoolType - 77, // 404: openstorage.api.RestoreVolumeSpec.proxy_spec:type_name -> openstorage.api.ProxySpec - 78, // 405: openstorage.api.RestoreVolumeSpec.sharedv4_service_spec:type_name -> openstorage.api.Sharedv4ServiceSpec - 80, // 406: openstorage.api.RestoreVolumeSpec.sharedv4_spec:type_name -> openstorage.api.Sharedv4Spec - 30, // 407: openstorage.api.RestoreVolumeSpec.auto_fstrim:type_name -> openstorage.api.RestoreParamBoolType - 85, // 408: openstorage.api.RestoreVolumeSpec.io_throttle:type_name -> openstorage.api.IoThrottle - 30, // 409: openstorage.api.RestoreVolumeSpec.readahead:type_name -> openstorage.api.RestoreParamBoolType - 449, // 410: openstorage.api.SdkVolumeCatalogResponse.catalog:type_name -> openstorage.api.CatalogResponse - 59, // 411: openstorage.api.SdkVerifyChecksumStartResponse.status:type_name -> openstorage.api.VerifyChecksum.VerifyChecksumStatus - 59, // 412: openstorage.api.SdkVerifyChecksumStatusResponse.status:type_name -> openstorage.api.VerifyChecksum.VerifyChecksumStatus - 37, // 413: openstorage.api.Ownership.PublicAccessControl.type:type_name -> openstorage.api.Ownership.AccessType - 478, // 414: openstorage.api.Ownership.AccessControl.groups:type_name -> openstorage.api.Ownership.AccessControl.GroupsEntry - 479, // 415: openstorage.api.Ownership.AccessControl.collaborators:type_name -> openstorage.api.Ownership.AccessControl.CollaboratorsEntry - 476, // 416: openstorage.api.Ownership.AccessControl.public:type_name -> openstorage.api.Ownership.PublicAccessControl - 37, // 417: openstorage.api.Ownership.AccessControl.GroupsEntry.value:type_name -> openstorage.api.Ownership.AccessType - 37, // 418: openstorage.api.Ownership.AccessControl.CollaboratorsEntry.value:type_name -> openstorage.api.Ownership.AccessType - 123, // 419: openstorage.api.GroupSnapCreateResponse.SnapshotsEntry.value:type_name -> openstorage.api.SnapCreateResponse - 60, // 420: openstorage.api.StorageNode.DisksEntry.value:type_name -> openstorage.api.StorageResource - 269, // 421: openstorage.api.DefragNodeStatus.PoolStatusEntry.value:type_name -> openstorage.api.DefragPoolStatus - 340, // 422: openstorage.api.SdkCloudBackupStatusResponse.StatusesEntry.value:type_name -> openstorage.api.SdkCloudBackupStatus - 350, // 423: openstorage.api.SdkCloudBackupSchedEnumerateResponse.CloudSchedListEntry.value:type_name -> openstorage.api.SdkCloudBackupScheduleInfo - 50, // 424: openstorage.api.SdkAutoFSTrimStatusResponse.TrimStatusEntry.value:type_name -> openstorage.api.FilesystemTrim.FilesystemTrimStatus - 99, // 425: openstorage.api.SdkAutoFSTrimUsageResponse.UsageEntry.value:type_name -> openstorage.api.FstrimVolumeUsageInfo - 391, // 426: openstorage.api.SdkFilesystemCheckListSnapshotsResponse.SnapshotsEntry.value:type_name -> openstorage.api.FilesystemCheckSnapInfo - 392, // 427: openstorage.api.SdkFilesystemCheckListVolumesResponse.VolumesEntry.value:type_name -> openstorage.api.FilesystemCheckVolInfo - 52, // 428: openstorage.api.SdkServiceCapability.OpenStorageService.type:type_name -> openstorage.api.SdkServiceCapability.OpenStorageService.Type - 421, // 429: openstorage.api.CloudMigrateStatusResponse.InfoEntry.value:type_name -> openstorage.api.CloudMigrateInfoList - 440, // 430: openstorage.api.ClusterPairsEnumerateResponse.PairsEntry.value:type_name -> openstorage.api.ClusterPairInfo - 110, // 431: openstorage.api.OpenStorageAlerts.EnumerateWithFilters:input_type -> openstorage.api.SdkAlertsEnumerateWithFiltersRequest - 112, // 432: openstorage.api.OpenStorageAlerts.Delete:input_type -> openstorage.api.SdkAlertsDeleteRequest - 363, // 433: openstorage.api.OpenStorageRole.Create:input_type -> openstorage.api.SdkRoleCreateRequest - 365, // 434: openstorage.api.OpenStorageRole.Enumerate:input_type -> openstorage.api.SdkRoleEnumerateRequest - 367, // 435: openstorage.api.OpenStorageRole.Inspect:input_type -> openstorage.api.SdkRoleInspectRequest - 369, // 436: openstorage.api.OpenStorageRole.Delete:input_type -> openstorage.api.SdkRoleDeleteRequest - 371, // 437: openstorage.api.OpenStorageRole.Update:input_type -> openstorage.api.SdkRoleUpdateRequest - 374, // 438: openstorage.api.OpenStorageFilesystemTrim.Start:input_type -> openstorage.api.SdkFilesystemTrimStartRequest - 376, // 439: openstorage.api.OpenStorageFilesystemTrim.Status:input_type -> openstorage.api.SdkFilesystemTrimStatusRequest - 378, // 440: openstorage.api.OpenStorageFilesystemTrim.AutoFSTrimStatus:input_type -> openstorage.api.SdkAutoFSTrimStatusRequest - 380, // 441: openstorage.api.OpenStorageFilesystemTrim.AutoFSTrimUsage:input_type -> openstorage.api.SdkAutoFSTrimUsageRequest - 382, // 442: openstorage.api.OpenStorageFilesystemTrim.Stop:input_type -> openstorage.api.SdkFilesystemTrimStopRequest - 386, // 443: openstorage.api.OpenStorageFilesystemTrim.AutoFSTrimPush:input_type -> openstorage.api.SdkAutoFSTrimPushRequest - 388, // 444: openstorage.api.OpenStorageFilesystemTrim.AutoFSTrimPop:input_type -> openstorage.api.SdkAutoFSTrimPopRequest - 393, // 445: openstorage.api.OpenStorageFilesystemCheck.Start:input_type -> openstorage.api.SdkFilesystemCheckStartRequest - 395, // 446: openstorage.api.OpenStorageFilesystemCheck.Status:input_type -> openstorage.api.SdkFilesystemCheckStatusRequest - 397, // 447: openstorage.api.OpenStorageFilesystemCheck.Stop:input_type -> openstorage.api.SdkFilesystemCheckStopRequest - 399, // 448: openstorage.api.OpenStorageFilesystemCheck.ListSnapshots:input_type -> openstorage.api.SdkFilesystemCheckListSnapshotsRequest - 401, // 449: openstorage.api.OpenStorageFilesystemCheck.DeleteSnapshots:input_type -> openstorage.api.SdkFilesystemCheckDeleteSnapshotsRequest - 403, // 450: openstorage.api.OpenStorageFilesystemCheck.ListVolumes:input_type -> openstorage.api.SdkFilesystemCheckListVolumesRequest - 405, // 451: openstorage.api.OpenStorageIdentity.Capabilities:input_type -> openstorage.api.SdkIdentityCapabilitiesRequest - 407, // 452: openstorage.api.OpenStorageIdentity.Version:input_type -> openstorage.api.SdkIdentityVersionRequest - 257, // 453: openstorage.api.OpenStorageCluster.InspectCurrent:input_type -> openstorage.api.SdkClusterInspectCurrentRequest - 429, // 454: openstorage.api.OpenStorageClusterPair.Create:input_type -> openstorage.api.SdkClusterPairCreateRequest - 441, // 455: openstorage.api.OpenStorageClusterPair.Inspect:input_type -> openstorage.api.SdkClusterPairInspectRequest - 444, // 456: openstorage.api.OpenStorageClusterPair.Enumerate:input_type -> openstorage.api.SdkClusterPairEnumerateRequest - 436, // 457: openstorage.api.OpenStorageClusterPair.GetToken:input_type -> openstorage.api.SdkClusterPairGetTokenRequest - 438, // 458: openstorage.api.OpenStorageClusterPair.ResetToken:input_type -> openstorage.api.SdkClusterPairResetTokenRequest - 433, // 459: openstorage.api.OpenStorageClusterPair.Delete:input_type -> openstorage.api.SdkClusterPairDeleteRequest - 249, // 460: openstorage.api.OpenStorageClusterDomains.Enumerate:input_type -> openstorage.api.SdkClusterDomainsEnumerateRequest - 251, // 461: openstorage.api.OpenStorageClusterDomains.Inspect:input_type -> openstorage.api.SdkClusterDomainInspectRequest - 253, // 462: openstorage.api.OpenStorageClusterDomains.Activate:input_type -> openstorage.api.SdkClusterDomainActivateRequest - 255, // 463: openstorage.api.OpenStorageClusterDomains.Deactivate:input_type -> openstorage.api.SdkClusterDomainDeactivateRequest - 289, // 464: openstorage.api.OpenStoragePool.Resize:input_type -> openstorage.api.SdkStoragePoolResizeRequest - 291, // 465: openstorage.api.OpenStoragePool.Rebalance:input_type -> openstorage.api.SdkStorageRebalanceRequest - 297, // 466: openstorage.api.OpenStoragePool.UpdateRebalanceJobState:input_type -> openstorage.api.SdkUpdateRebalanceJobRequest - 299, // 467: openstorage.api.OpenStoragePool.GetRebalanceJobStatus:input_type -> openstorage.api.SdkGetRebalanceJobStatusRequest - 301, // 468: openstorage.api.OpenStoragePool.EnumerateRebalanceJobs:input_type -> openstorage.api.SdkEnumerateRebalanceJobsRequest - 304, // 469: openstorage.api.OpenStoragePool.CreateRebalanceSchedule:input_type -> openstorage.api.SdkCreateRebalanceScheduleRequest - 306, // 470: openstorage.api.OpenStoragePool.GetRebalanceSchedule:input_type -> openstorage.api.SdkGetRebalanceScheduleRequest - 308, // 471: openstorage.api.OpenStoragePool.DeleteRebalanceSchedule:input_type -> openstorage.api.SdkDeleteRebalanceScheduleRequest - 271, // 472: openstorage.api.OpenStorageDiags.Collect:input_type -> openstorage.api.SdkDiagsCollectRequest - 277, // 473: openstorage.api.OpenStorageJob.Update:input_type -> openstorage.api.SdkUpdateJobRequest - 279, // 474: openstorage.api.OpenStorageJob.GetStatus:input_type -> openstorage.api.SdkGetJobStatusRequest - 275, // 475: openstorage.api.OpenStorageJob.Enumerate:input_type -> openstorage.api.SdkEnumerateJobsRequest - 259, // 476: openstorage.api.OpenStorageNode.Inspect:input_type -> openstorage.api.SdkNodeInspectRequest - 313, // 477: openstorage.api.OpenStorageNode.InspectCurrent:input_type -> openstorage.api.SdkNodeInspectCurrentRequest - 315, // 478: openstorage.api.OpenStorageNode.Enumerate:input_type -> openstorage.api.SdkNodeEnumerateRequest - 317, // 479: openstorage.api.OpenStorageNode.EnumerateWithFilters:input_type -> openstorage.api.SdkNodeEnumerateWithFiltersRequest - 245, // 480: openstorage.api.OpenStorageNode.VolumeUsageByNode:input_type -> openstorage.api.SdkNodeVolumeUsageByNodeRequest - 247, // 481: openstorage.api.OpenStorageNode.RelaxedReclaimPurge:input_type -> openstorage.api.SdkNodeRelaxedReclaimPurgeRequest - 263, // 482: openstorage.api.OpenStorageNode.DrainAttachments:input_type -> openstorage.api.SdkNodeDrainAttachmentsRequest - 285, // 483: openstorage.api.OpenStorageNode.CordonAttachments:input_type -> openstorage.api.SdkNodeCordonAttachmentsRequest - 287, // 484: openstorage.api.OpenStorageNode.UncordonAttachments:input_type -> openstorage.api.SdkNodeUncordonAttachmentsRequest - 384, // 485: openstorage.api.OpenStorageNode.VolumeBytesUsedByNode:input_type -> openstorage.api.SdkVolumeBytesUsedRequest - 137, // 486: openstorage.api.OpenStorageBucket.Create:input_type -> openstorage.api.BucketCreateRequest - 139, // 487: openstorage.api.OpenStorageBucket.Delete:input_type -> openstorage.api.BucketDeleteRequest - 141, // 488: openstorage.api.OpenStorageBucket.GrantAccess:input_type -> openstorage.api.BucketGrantAccessRequest - 143, // 489: openstorage.api.OpenStorageBucket.RevokeAccess:input_type -> openstorage.api.BucketRevokeAccessRequest - 211, // 490: openstorage.api.OpenStorageVolume.Create:input_type -> openstorage.api.SdkVolumeCreateRequest - 213, // 491: openstorage.api.OpenStorageVolume.Clone:input_type -> openstorage.api.SdkVolumeCloneRequest - 215, // 492: openstorage.api.OpenStorageVolume.Delete:input_type -> openstorage.api.SdkVolumeDeleteRequest - 217, // 493: openstorage.api.OpenStorageVolume.Inspect:input_type -> openstorage.api.SdkVolumeInspectRequest - 219, // 494: openstorage.api.OpenStorageVolume.InspectWithFilters:input_type -> openstorage.api.SdkVolumeInspectWithFiltersRequest - 221, // 495: openstorage.api.OpenStorageVolume.Update:input_type -> openstorage.api.SdkVolumeUpdateRequest - 223, // 496: openstorage.api.OpenStorageVolume.Stats:input_type -> openstorage.api.SdkVolumeStatsRequest - 225, // 497: openstorage.api.OpenStorageVolume.CapacityUsage:input_type -> openstorage.api.SdkVolumeCapacityUsageRequest - 227, // 498: openstorage.api.OpenStorageVolume.Enumerate:input_type -> openstorage.api.SdkVolumeEnumerateRequest - 229, // 499: openstorage.api.OpenStorageVolume.EnumerateWithFilters:input_type -> openstorage.api.SdkVolumeEnumerateWithFiltersRequest - 231, // 500: openstorage.api.OpenStorageVolume.SnapshotCreate:input_type -> openstorage.api.SdkVolumeSnapshotCreateRequest - 233, // 501: openstorage.api.OpenStorageVolume.SnapshotRestore:input_type -> openstorage.api.SdkVolumeSnapshotRestoreRequest - 235, // 502: openstorage.api.OpenStorageVolume.SnapshotEnumerate:input_type -> openstorage.api.SdkVolumeSnapshotEnumerateRequest - 237, // 503: openstorage.api.OpenStorageVolume.SnapshotEnumerateWithFilters:input_type -> openstorage.api.SdkVolumeSnapshotEnumerateWithFiltersRequest - 239, // 504: openstorage.api.OpenStorageVolume.SnapshotScheduleUpdate:input_type -> openstorage.api.SdkVolumeSnapshotScheduleUpdateRequest - 458, // 505: openstorage.api.OpenStorageVolume.VolumeCatalog:input_type -> openstorage.api.SdkVolumeCatalogRequest - 241, // 506: openstorage.api.OpenStorageWatch.Watch:input_type -> openstorage.api.SdkWatchRequest - 206, // 507: openstorage.api.OpenStorageMountAttach.Attach:input_type -> openstorage.api.SdkVolumeAttachRequest - 209, // 508: openstorage.api.OpenStorageMountAttach.Detach:input_type -> openstorage.api.SdkVolumeDetachRequest - 201, // 509: openstorage.api.OpenStorageMountAttach.Mount:input_type -> openstorage.api.SdkVolumeMountRequest - 204, // 510: openstorage.api.OpenStorageMountAttach.Unmount:input_type -> openstorage.api.SdkVolumeUnmountRequest - 414, // 511: openstorage.api.OpenStorageMigrate.Start:input_type -> openstorage.api.SdkCloudMigrateStartRequest - 418, // 512: openstorage.api.OpenStorageMigrate.Cancel:input_type -> openstorage.api.SdkCloudMigrateCancelRequest - 422, // 513: openstorage.api.OpenStorageMigrate.Status:input_type -> openstorage.api.SdkCloudMigrateStatusRequest - 319, // 514: openstorage.api.OpenStorageObjectstore.Inspect:input_type -> openstorage.api.SdkObjectstoreInspectRequest - 321, // 515: openstorage.api.OpenStorageObjectstore.Create:input_type -> openstorage.api.SdkObjectstoreCreateRequest - 323, // 516: openstorage.api.OpenStorageObjectstore.Delete:input_type -> openstorage.api.SdkObjectstoreDeleteRequest - 325, // 517: openstorage.api.OpenStorageObjectstore.Update:input_type -> openstorage.api.SdkObjectstoreUpdateRequest - 178, // 518: openstorage.api.OpenStorageCredentials.Create:input_type -> openstorage.api.SdkCredentialCreateRequest - 180, // 519: openstorage.api.OpenStorageCredentials.Update:input_type -> openstorage.api.SdkCredentialUpdateRequest - 190, // 520: openstorage.api.OpenStorageCredentials.Enumerate:input_type -> openstorage.api.SdkCredentialEnumerateRequest - 192, // 521: openstorage.api.OpenStorageCredentials.Inspect:input_type -> openstorage.api.SdkCredentialInspectRequest - 194, // 522: openstorage.api.OpenStorageCredentials.Delete:input_type -> openstorage.api.SdkCredentialDeleteRequest - 196, // 523: openstorage.api.OpenStorageCredentials.Validate:input_type -> openstorage.api.SdkCredentialValidateRequest - 198, // 524: openstorage.api.OpenStorageCredentials.DeleteReferences:input_type -> openstorage.api.SdkCredentialDeleteReferencesRequest - 162, // 525: openstorage.api.OpenStorageSchedulePolicy.Create:input_type -> openstorage.api.SdkSchedulePolicyCreateRequest - 164, // 526: openstorage.api.OpenStorageSchedulePolicy.Update:input_type -> openstorage.api.SdkSchedulePolicyUpdateRequest - 166, // 527: openstorage.api.OpenStorageSchedulePolicy.Enumerate:input_type -> openstorage.api.SdkSchedulePolicyEnumerateRequest - 168, // 528: openstorage.api.OpenStorageSchedulePolicy.Inspect:input_type -> openstorage.api.SdkSchedulePolicyInspectRequest - 170, // 529: openstorage.api.OpenStorageSchedulePolicy.Delete:input_type -> openstorage.api.SdkSchedulePolicyDeleteRequest - 327, // 530: openstorage.api.OpenStorageCloudBackup.Create:input_type -> openstorage.api.SdkCloudBackupCreateRequest - 329, // 531: openstorage.api.OpenStorageCloudBackup.GroupCreate:input_type -> openstorage.api.SdkCloudBackupGroupCreateRequest - 331, // 532: openstorage.api.OpenStorageCloudBackup.Restore:input_type -> openstorage.api.SdkCloudBackupRestoreRequest - 333, // 533: openstorage.api.OpenStorageCloudBackup.Delete:input_type -> openstorage.api.SdkCloudBackupDeleteRequest - 335, // 534: openstorage.api.OpenStorageCloudBackup.DeleteAll:input_type -> openstorage.api.SdkCloudBackupDeleteAllRequest - 337, // 535: openstorage.api.OpenStorageCloudBackup.EnumerateWithFilters:input_type -> openstorage.api.SdkCloudBackupEnumerateWithFiltersRequest - 341, // 536: openstorage.api.OpenStorageCloudBackup.Status:input_type -> openstorage.api.SdkCloudBackupStatusRequest - 343, // 537: openstorage.api.OpenStorageCloudBackup.Catalog:input_type -> openstorage.api.SdkCloudBackupCatalogRequest - 346, // 538: openstorage.api.OpenStorageCloudBackup.History:input_type -> openstorage.api.SdkCloudBackupHistoryRequest - 348, // 539: openstorage.api.OpenStorageCloudBackup.StateChange:input_type -> openstorage.api.SdkCloudBackupStateChangeRequest - 351, // 540: openstorage.api.OpenStorageCloudBackup.SchedCreate:input_type -> openstorage.api.SdkCloudBackupSchedCreateRequest - 353, // 541: openstorage.api.OpenStorageCloudBackup.SchedUpdate:input_type -> openstorage.api.SdkCloudBackupSchedUpdateRequest - 355, // 542: openstorage.api.OpenStorageCloudBackup.SchedDelete:input_type -> openstorage.api.SdkCloudBackupSchedDeleteRequest - 357, // 543: openstorage.api.OpenStorageCloudBackup.SchedEnumerate:input_type -> openstorage.api.SdkCloudBackupSchedEnumerateRequest - 359, // 544: openstorage.api.OpenStorageCloudBackup.Size:input_type -> openstorage.api.SdkCloudBackupSizeRequest - 146, // 545: openstorage.api.OpenStoragePolicy.Create:input_type -> openstorage.api.SdkOpenStoragePolicyCreateRequest - 148, // 546: openstorage.api.OpenStoragePolicy.Enumerate:input_type -> openstorage.api.SdkOpenStoragePolicyEnumerateRequest - 150, // 547: openstorage.api.OpenStoragePolicy.Inspect:input_type -> openstorage.api.SdkOpenStoragePolicyInspectRequest - 154, // 548: openstorage.api.OpenStoragePolicy.Update:input_type -> openstorage.api.SdkOpenStoragePolicyUpdateRequest - 152, // 549: openstorage.api.OpenStoragePolicy.Delete:input_type -> openstorage.api.SdkOpenStoragePolicyDeleteRequest - 156, // 550: openstorage.api.OpenStoragePolicy.SetDefault:input_type -> openstorage.api.SdkOpenStoragePolicySetDefaultRequest - 160, // 551: openstorage.api.OpenStoragePolicy.DefaultInspect:input_type -> openstorage.api.SdkOpenStoragePolicyDefaultInspectRequest - 158, // 552: openstorage.api.OpenStoragePolicy.Release:input_type -> openstorage.api.SdkOpenStoragePolicyReleaseRequest - 461, // 553: openstorage.api.OpenStorageVerifyChecksum.Start:input_type -> openstorage.api.SdkVerifyChecksumStartRequest - 463, // 554: openstorage.api.OpenStorageVerifyChecksum.Status:input_type -> openstorage.api.SdkVerifyChecksumStatusRequest - 465, // 555: openstorage.api.OpenStorageVerifyChecksum.Stop:input_type -> openstorage.api.SdkVerifyChecksumStopRequest - 111, // 556: openstorage.api.OpenStorageAlerts.EnumerateWithFilters:output_type -> openstorage.api.SdkAlertsEnumerateWithFiltersResponse - 113, // 557: openstorage.api.OpenStorageAlerts.Delete:output_type -> openstorage.api.SdkAlertsDeleteResponse - 364, // 558: openstorage.api.OpenStorageRole.Create:output_type -> openstorage.api.SdkRoleCreateResponse - 366, // 559: openstorage.api.OpenStorageRole.Enumerate:output_type -> openstorage.api.SdkRoleEnumerateResponse - 368, // 560: openstorage.api.OpenStorageRole.Inspect:output_type -> openstorage.api.SdkRoleInspectResponse - 370, // 561: openstorage.api.OpenStorageRole.Delete:output_type -> openstorage.api.SdkRoleDeleteResponse - 372, // 562: openstorage.api.OpenStorageRole.Update:output_type -> openstorage.api.SdkRoleUpdateResponse - 375, // 563: openstorage.api.OpenStorageFilesystemTrim.Start:output_type -> openstorage.api.SdkFilesystemTrimStartResponse - 377, // 564: openstorage.api.OpenStorageFilesystemTrim.Status:output_type -> openstorage.api.SdkFilesystemTrimStatusResponse - 379, // 565: openstorage.api.OpenStorageFilesystemTrim.AutoFSTrimStatus:output_type -> openstorage.api.SdkAutoFSTrimStatusResponse - 381, // 566: openstorage.api.OpenStorageFilesystemTrim.AutoFSTrimUsage:output_type -> openstorage.api.SdkAutoFSTrimUsageResponse - 385, // 567: openstorage.api.OpenStorageFilesystemTrim.Stop:output_type -> openstorage.api.SdkFilesystemTrimStopResponse - 387, // 568: openstorage.api.OpenStorageFilesystemTrim.AutoFSTrimPush:output_type -> openstorage.api.SdkAutoFSTrimPushResponse - 389, // 569: openstorage.api.OpenStorageFilesystemTrim.AutoFSTrimPop:output_type -> openstorage.api.SdkAutoFSTrimPopResponse - 394, // 570: openstorage.api.OpenStorageFilesystemCheck.Start:output_type -> openstorage.api.SdkFilesystemCheckStartResponse - 396, // 571: openstorage.api.OpenStorageFilesystemCheck.Status:output_type -> openstorage.api.SdkFilesystemCheckStatusResponse - 398, // 572: openstorage.api.OpenStorageFilesystemCheck.Stop:output_type -> openstorage.api.SdkFilesystemCheckStopResponse - 400, // 573: openstorage.api.OpenStorageFilesystemCheck.ListSnapshots:output_type -> openstorage.api.SdkFilesystemCheckListSnapshotsResponse - 402, // 574: openstorage.api.OpenStorageFilesystemCheck.DeleteSnapshots:output_type -> openstorage.api.SdkFilesystemCheckDeleteSnapshotsResponse - 404, // 575: openstorage.api.OpenStorageFilesystemCheck.ListVolumes:output_type -> openstorage.api.SdkFilesystemCheckListVolumesResponse - 406, // 576: openstorage.api.OpenStorageIdentity.Capabilities:output_type -> openstorage.api.SdkIdentityCapabilitiesResponse - 408, // 577: openstorage.api.OpenStorageIdentity.Version:output_type -> openstorage.api.SdkIdentityVersionResponse - 258, // 578: openstorage.api.OpenStorageCluster.InspectCurrent:output_type -> openstorage.api.SdkClusterInspectCurrentResponse - 430, // 579: openstorage.api.OpenStorageClusterPair.Create:output_type -> openstorage.api.SdkClusterPairCreateResponse - 443, // 580: openstorage.api.OpenStorageClusterPair.Inspect:output_type -> openstorage.api.SdkClusterPairInspectResponse - 446, // 581: openstorage.api.OpenStorageClusterPair.Enumerate:output_type -> openstorage.api.SdkClusterPairEnumerateResponse - 437, // 582: openstorage.api.OpenStorageClusterPair.GetToken:output_type -> openstorage.api.SdkClusterPairGetTokenResponse - 439, // 583: openstorage.api.OpenStorageClusterPair.ResetToken:output_type -> openstorage.api.SdkClusterPairResetTokenResponse - 434, // 584: openstorage.api.OpenStorageClusterPair.Delete:output_type -> openstorage.api.SdkClusterPairDeleteResponse - 250, // 585: openstorage.api.OpenStorageClusterDomains.Enumerate:output_type -> openstorage.api.SdkClusterDomainsEnumerateResponse - 252, // 586: openstorage.api.OpenStorageClusterDomains.Inspect:output_type -> openstorage.api.SdkClusterDomainInspectResponse - 254, // 587: openstorage.api.OpenStorageClusterDomains.Activate:output_type -> openstorage.api.SdkClusterDomainActivateResponse - 256, // 588: openstorage.api.OpenStorageClusterDomains.Deactivate:output_type -> openstorage.api.SdkClusterDomainDeactivateResponse - 311, // 589: openstorage.api.OpenStoragePool.Resize:output_type -> openstorage.api.SdkStoragePoolResizeResponse - 292, // 590: openstorage.api.OpenStoragePool.Rebalance:output_type -> openstorage.api.SdkStorageRebalanceResponse - 298, // 591: openstorage.api.OpenStoragePool.UpdateRebalanceJobState:output_type -> openstorage.api.SdkUpdateRebalanceJobResponse - 300, // 592: openstorage.api.OpenStoragePool.GetRebalanceJobStatus:output_type -> openstorage.api.SdkGetRebalanceJobStatusResponse - 302, // 593: openstorage.api.OpenStoragePool.EnumerateRebalanceJobs:output_type -> openstorage.api.SdkEnumerateRebalanceJobsResponse - 305, // 594: openstorage.api.OpenStoragePool.CreateRebalanceSchedule:output_type -> openstorage.api.SdkCreateRebalanceScheduleResponse - 307, // 595: openstorage.api.OpenStoragePool.GetRebalanceSchedule:output_type -> openstorage.api.SdkGetRebalanceScheduleResponse - 309, // 596: openstorage.api.OpenStoragePool.DeleteRebalanceSchedule:output_type -> openstorage.api.SdkDeleteRebalanceScheduleResponse - 272, // 597: openstorage.api.OpenStorageDiags.Collect:output_type -> openstorage.api.SdkDiagsCollectResponse - 278, // 598: openstorage.api.OpenStorageJob.Update:output_type -> openstorage.api.SdkUpdateJobResponse - 283, // 599: openstorage.api.OpenStorageJob.GetStatus:output_type -> openstorage.api.SdkGetJobStatusResponse - 276, // 600: openstorage.api.OpenStorageJob.Enumerate:output_type -> openstorage.api.SdkEnumerateJobsResponse - 312, // 601: openstorage.api.OpenStorageNode.Inspect:output_type -> openstorage.api.SdkNodeInspectResponse - 314, // 602: openstorage.api.OpenStorageNode.InspectCurrent:output_type -> openstorage.api.SdkNodeInspectCurrentResponse - 316, // 603: openstorage.api.OpenStorageNode.Enumerate:output_type -> openstorage.api.SdkNodeEnumerateResponse - 318, // 604: openstorage.api.OpenStorageNode.EnumerateWithFilters:output_type -> openstorage.api.SdkNodeEnumerateWithFiltersResponse - 246, // 605: openstorage.api.OpenStorageNode.VolumeUsageByNode:output_type -> openstorage.api.SdkNodeVolumeUsageByNodeResponse - 248, // 606: openstorage.api.OpenStorageNode.RelaxedReclaimPurge:output_type -> openstorage.api.SdkNodeRelaxedReclaimPurgeResponse - 261, // 607: openstorage.api.OpenStorageNode.DrainAttachments:output_type -> openstorage.api.SdkJobResponse - 286, // 608: openstorage.api.OpenStorageNode.CordonAttachments:output_type -> openstorage.api.SdkNodeCordonAttachmentsResponse - 288, // 609: openstorage.api.OpenStorageNode.UncordonAttachments:output_type -> openstorage.api.SdkNodeUncordonAttachmentsResponse - 383, // 610: openstorage.api.OpenStorageNode.VolumeBytesUsedByNode:output_type -> openstorage.api.SdkVolumeBytesUsedResponse - 138, // 611: openstorage.api.OpenStorageBucket.Create:output_type -> openstorage.api.BucketCreateResponse - 140, // 612: openstorage.api.OpenStorageBucket.Delete:output_type -> openstorage.api.BucketDeleteResponse - 142, // 613: openstorage.api.OpenStorageBucket.GrantAccess:output_type -> openstorage.api.BucketGrantAccessResponse - 144, // 614: openstorage.api.OpenStorageBucket.RevokeAccess:output_type -> openstorage.api.BucketRevokeAccessResponse - 212, // 615: openstorage.api.OpenStorageVolume.Create:output_type -> openstorage.api.SdkVolumeCreateResponse - 214, // 616: openstorage.api.OpenStorageVolume.Clone:output_type -> openstorage.api.SdkVolumeCloneResponse - 216, // 617: openstorage.api.OpenStorageVolume.Delete:output_type -> openstorage.api.SdkVolumeDeleteResponse - 218, // 618: openstorage.api.OpenStorageVolume.Inspect:output_type -> openstorage.api.SdkVolumeInspectResponse - 220, // 619: openstorage.api.OpenStorageVolume.InspectWithFilters:output_type -> openstorage.api.SdkVolumeInspectWithFiltersResponse - 222, // 620: openstorage.api.OpenStorageVolume.Update:output_type -> openstorage.api.SdkVolumeUpdateResponse - 224, // 621: openstorage.api.OpenStorageVolume.Stats:output_type -> openstorage.api.SdkVolumeStatsResponse - 226, // 622: openstorage.api.OpenStorageVolume.CapacityUsage:output_type -> openstorage.api.SdkVolumeCapacityUsageResponse - 228, // 623: openstorage.api.OpenStorageVolume.Enumerate:output_type -> openstorage.api.SdkVolumeEnumerateResponse - 230, // 624: openstorage.api.OpenStorageVolume.EnumerateWithFilters:output_type -> openstorage.api.SdkVolumeEnumerateWithFiltersResponse - 232, // 625: openstorage.api.OpenStorageVolume.SnapshotCreate:output_type -> openstorage.api.SdkVolumeSnapshotCreateResponse - 234, // 626: openstorage.api.OpenStorageVolume.SnapshotRestore:output_type -> openstorage.api.SdkVolumeSnapshotRestoreResponse - 236, // 627: openstorage.api.OpenStorageVolume.SnapshotEnumerate:output_type -> openstorage.api.SdkVolumeSnapshotEnumerateResponse - 238, // 628: openstorage.api.OpenStorageVolume.SnapshotEnumerateWithFilters:output_type -> openstorage.api.SdkVolumeSnapshotEnumerateWithFiltersResponse - 240, // 629: openstorage.api.OpenStorageVolume.SnapshotScheduleUpdate:output_type -> openstorage.api.SdkVolumeSnapshotScheduleUpdateResponse - 459, // 630: openstorage.api.OpenStorageVolume.VolumeCatalog:output_type -> openstorage.api.SdkVolumeCatalogResponse - 242, // 631: openstorage.api.OpenStorageWatch.Watch:output_type -> openstorage.api.SdkWatchResponse - 207, // 632: openstorage.api.OpenStorageMountAttach.Attach:output_type -> openstorage.api.SdkVolumeAttachResponse - 210, // 633: openstorage.api.OpenStorageMountAttach.Detach:output_type -> openstorage.api.SdkVolumeDetachResponse - 202, // 634: openstorage.api.OpenStorageMountAttach.Mount:output_type -> openstorage.api.SdkVolumeMountResponse - 205, // 635: openstorage.api.OpenStorageMountAttach.Unmount:output_type -> openstorage.api.SdkVolumeUnmountResponse - 416, // 636: openstorage.api.OpenStorageMigrate.Start:output_type -> openstorage.api.SdkCloudMigrateStartResponse - 419, // 637: openstorage.api.OpenStorageMigrate.Cancel:output_type -> openstorage.api.SdkCloudMigrateCancelResponse - 425, // 638: openstorage.api.OpenStorageMigrate.Status:output_type -> openstorage.api.SdkCloudMigrateStatusResponse - 320, // 639: openstorage.api.OpenStorageObjectstore.Inspect:output_type -> openstorage.api.SdkObjectstoreInspectResponse - 322, // 640: openstorage.api.OpenStorageObjectstore.Create:output_type -> openstorage.api.SdkObjectstoreCreateResponse - 324, // 641: openstorage.api.OpenStorageObjectstore.Delete:output_type -> openstorage.api.SdkObjectstoreDeleteResponse - 326, // 642: openstorage.api.OpenStorageObjectstore.Update:output_type -> openstorage.api.SdkObjectstoreUpdateResponse - 179, // 643: openstorage.api.OpenStorageCredentials.Create:output_type -> openstorage.api.SdkCredentialCreateResponse - 181, // 644: openstorage.api.OpenStorageCredentials.Update:output_type -> openstorage.api.SdkCredentialUpdateResponse - 191, // 645: openstorage.api.OpenStorageCredentials.Enumerate:output_type -> openstorage.api.SdkCredentialEnumerateResponse - 193, // 646: openstorage.api.OpenStorageCredentials.Inspect:output_type -> openstorage.api.SdkCredentialInspectResponse - 195, // 647: openstorage.api.OpenStorageCredentials.Delete:output_type -> openstorage.api.SdkCredentialDeleteResponse - 197, // 648: openstorage.api.OpenStorageCredentials.Validate:output_type -> openstorage.api.SdkCredentialValidateResponse - 199, // 649: openstorage.api.OpenStorageCredentials.DeleteReferences:output_type -> openstorage.api.SdkCredentialDeleteReferencesResponse - 163, // 650: openstorage.api.OpenStorageSchedulePolicy.Create:output_type -> openstorage.api.SdkSchedulePolicyCreateResponse - 165, // 651: openstorage.api.OpenStorageSchedulePolicy.Update:output_type -> openstorage.api.SdkSchedulePolicyUpdateResponse - 167, // 652: openstorage.api.OpenStorageSchedulePolicy.Enumerate:output_type -> openstorage.api.SdkSchedulePolicyEnumerateResponse - 169, // 653: openstorage.api.OpenStorageSchedulePolicy.Inspect:output_type -> openstorage.api.SdkSchedulePolicyInspectResponse - 171, // 654: openstorage.api.OpenStorageSchedulePolicy.Delete:output_type -> openstorage.api.SdkSchedulePolicyDeleteResponse - 328, // 655: openstorage.api.OpenStorageCloudBackup.Create:output_type -> openstorage.api.SdkCloudBackupCreateResponse - 330, // 656: openstorage.api.OpenStorageCloudBackup.GroupCreate:output_type -> openstorage.api.SdkCloudBackupGroupCreateResponse - 332, // 657: openstorage.api.OpenStorageCloudBackup.Restore:output_type -> openstorage.api.SdkCloudBackupRestoreResponse - 334, // 658: openstorage.api.OpenStorageCloudBackup.Delete:output_type -> openstorage.api.SdkCloudBackupDeleteResponse - 336, // 659: openstorage.api.OpenStorageCloudBackup.DeleteAll:output_type -> openstorage.api.SdkCloudBackupDeleteAllResponse - 339, // 660: openstorage.api.OpenStorageCloudBackup.EnumerateWithFilters:output_type -> openstorage.api.SdkCloudBackupEnumerateWithFiltersResponse - 342, // 661: openstorage.api.OpenStorageCloudBackup.Status:output_type -> openstorage.api.SdkCloudBackupStatusResponse - 344, // 662: openstorage.api.OpenStorageCloudBackup.Catalog:output_type -> openstorage.api.SdkCloudBackupCatalogResponse - 347, // 663: openstorage.api.OpenStorageCloudBackup.History:output_type -> openstorage.api.SdkCloudBackupHistoryResponse - 349, // 664: openstorage.api.OpenStorageCloudBackup.StateChange:output_type -> openstorage.api.SdkCloudBackupStateChangeResponse - 352, // 665: openstorage.api.OpenStorageCloudBackup.SchedCreate:output_type -> openstorage.api.SdkCloudBackupSchedCreateResponse - 354, // 666: openstorage.api.OpenStorageCloudBackup.SchedUpdate:output_type -> openstorage.api.SdkCloudBackupSchedUpdateResponse - 356, // 667: openstorage.api.OpenStorageCloudBackup.SchedDelete:output_type -> openstorage.api.SdkCloudBackupSchedDeleteResponse - 358, // 668: openstorage.api.OpenStorageCloudBackup.SchedEnumerate:output_type -> openstorage.api.SdkCloudBackupSchedEnumerateResponse - 360, // 669: openstorage.api.OpenStorageCloudBackup.Size:output_type -> openstorage.api.SdkCloudBackupSizeResponse - 147, // 670: openstorage.api.OpenStoragePolicy.Create:output_type -> openstorage.api.SdkOpenStoragePolicyCreateResponse - 149, // 671: openstorage.api.OpenStoragePolicy.Enumerate:output_type -> openstorage.api.SdkOpenStoragePolicyEnumerateResponse - 151, // 672: openstorage.api.OpenStoragePolicy.Inspect:output_type -> openstorage.api.SdkOpenStoragePolicyInspectResponse - 155, // 673: openstorage.api.OpenStoragePolicy.Update:output_type -> openstorage.api.SdkOpenStoragePolicyUpdateResponse - 153, // 674: openstorage.api.OpenStoragePolicy.Delete:output_type -> openstorage.api.SdkOpenStoragePolicyDeleteResponse - 157, // 675: openstorage.api.OpenStoragePolicy.SetDefault:output_type -> openstorage.api.SdkOpenStoragePolicySetDefaultResponse - 161, // 676: openstorage.api.OpenStoragePolicy.DefaultInspect:output_type -> openstorage.api.SdkOpenStoragePolicyDefaultInspectResponse - 159, // 677: openstorage.api.OpenStoragePolicy.Release:output_type -> openstorage.api.SdkOpenStoragePolicyReleaseResponse - 462, // 678: openstorage.api.OpenStorageVerifyChecksum.Start:output_type -> openstorage.api.SdkVerifyChecksumStartResponse - 464, // 679: openstorage.api.OpenStorageVerifyChecksum.Status:output_type -> openstorage.api.SdkVerifyChecksumStatusResponse - 466, // 680: openstorage.api.OpenStorageVerifyChecksum.Stop:output_type -> openstorage.api.SdkVerifyChecksumStopResponse - 556, // [556:681] is the sub-list for method output_type - 431, // [431:556] is the sub-list for method input_type - 431, // [431:431] is the sub-list for extension type_name - 431, // [431:431] is the sub-list for extension extendee - 0, // [0:431] is the sub-list for field type_name -} - -func init() { file_api_api_proto_init() } -func file_api_api_proto_init() { - if File_api_api_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_api_api_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StorageResource); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StoragePool); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SchedulerTopology); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StoragePoolOperation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopologyRequirement); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeLocator); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeInspectOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Source); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Group); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IoStrategy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Xattr); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExportSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NFSProxySpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*S3ProxySpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PXDProxySpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PureBlockSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PureFileSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProxySpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Sharedv4ServiceSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Sharedv4FailoverStrategy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Sharedv4Spec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MountOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FastpathReplState); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FastpathConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ScanPolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IoThrottle); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeSpecUpdate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeSpecPolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReplicaSet); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RuntimeStateMap); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Ownership); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Volume); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Stats); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CapacityUsageInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeUsage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeUsageByNode); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeBytesUsed); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeBytesUsedByNode); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FstrimVolumeUsageInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RelaxedReclaimPurge); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkStoragePolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Alert); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAlertsTimeSpan); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAlertsCountSpan); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAlertsOption); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAlertsResourceTypeQuery); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAlertsAlertTypeQuery); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAlertsResourceIdQuery); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAlertsQuery); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAlertsEnumerateWithFiltersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAlertsEnumerateWithFiltersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAlertsDeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAlertsDeleteResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Alerts); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ObjectstoreInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeCreateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeCreateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeStateAction); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeSetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeSetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SnapCreateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SnapCreateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeConsumer); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeServiceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeServiceInstanceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeServiceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GraphDriverChanges); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActiveRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActiveRequests); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupSnapCreateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupSnapCreateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StorageNode); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StorageCluster); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BucketCreateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BucketCreateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BucketDeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BucketDeleteResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BucketGrantAccessRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BucketGrantAccessResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BucketRevokeAccessRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BucketRevokeAccessResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BucketAccessCredentials); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkOpenStoragePolicyCreateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkOpenStoragePolicyCreateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkOpenStoragePolicyEnumerateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkOpenStoragePolicyEnumerateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkOpenStoragePolicyInspectRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkOpenStoragePolicyInspectResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkOpenStoragePolicyDeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkOpenStoragePolicyDeleteResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkOpenStoragePolicyUpdateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkOpenStoragePolicyUpdateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkOpenStoragePolicySetDefaultRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkOpenStoragePolicySetDefaultResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkOpenStoragePolicyReleaseRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkOpenStoragePolicyReleaseResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkOpenStoragePolicyDefaultInspectRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkOpenStoragePolicyDefaultInspectResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkSchedulePolicyCreateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkSchedulePolicyCreateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkSchedulePolicyUpdateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkSchedulePolicyUpdateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkSchedulePolicyEnumerateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkSchedulePolicyEnumerateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkSchedulePolicyInspectRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkSchedulePolicyInspectResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkSchedulePolicyDeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkSchedulePolicyDeleteResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkSchedulePolicyIntervalDaily); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkSchedulePolicyIntervalWeekly); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkSchedulePolicyIntervalMonthly); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkSchedulePolicyIntervalPeriodic); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkSchedulePolicyInterval); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkSchedulePolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCredentialCreateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCredentialCreateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCredentialUpdateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCredentialUpdateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAwsCredentialRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAzureCredentialRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkGoogleCredentialRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkNfsCredentialRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAwsCredentialResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAzureCredentialResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkGoogleCredentialResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkNfsCredentialResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCredentialEnumerateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCredentialEnumerateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCredentialInspectRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCredentialInspectResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCredentialDeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCredentialDeleteResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCredentialValidateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCredentialValidateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCredentialDeleteReferencesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCredentialDeleteReferencesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeAttachOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeMountRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeMountResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeUnmountOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeUnmountRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeUnmountResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeAttachRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeAttachResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeDetachOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeDetachRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeDetachResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeCreateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeCreateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeCloneRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeCloneResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeDeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeDeleteResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeInspectRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeInspectResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeInspectWithFiltersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeInspectWithFiltersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeUpdateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeUpdateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeStatsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeStatsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeCapacityUsageRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeCapacityUsageResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeEnumerateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeEnumerateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeEnumerateWithFiltersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeEnumerateWithFiltersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeSnapshotCreateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeSnapshotCreateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeSnapshotRestoreRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeSnapshotRestoreResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeSnapshotEnumerateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeSnapshotEnumerateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeSnapshotEnumerateWithFiltersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeSnapshotEnumerateWithFiltersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeSnapshotScheduleUpdateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeSnapshotScheduleUpdateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkWatchRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[182].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkWatchResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[183].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeWatchRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[184].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeWatchResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[185].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkNodeVolumeUsageByNodeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[186].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkNodeVolumeUsageByNodeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[187].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkNodeRelaxedReclaimPurgeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[188].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkNodeRelaxedReclaimPurgeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[189].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkClusterDomainsEnumerateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[190].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkClusterDomainsEnumerateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[191].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkClusterDomainInspectRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[192].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkClusterDomainInspectResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[193].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkClusterDomainActivateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[194].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkClusterDomainActivateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[195].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkClusterDomainDeactivateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[196].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkClusterDomainDeactivateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[197].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkClusterInspectCurrentRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[198].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkClusterInspectCurrentResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[199].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkNodeInspectRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[200].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Job); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[201].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkJobResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[202].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeDrainAttachmentOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[203].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkNodeDrainAttachmentsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[204].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeDrainAttachmentsJob); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[205].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudDriveTransferJob); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[206].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CollectDiagsJob); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[207].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DefragJob); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[208].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DefragNodeStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[209].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DefragPoolStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[210].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DiagsCollectionStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[211].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkDiagsCollectRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[212].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkDiagsCollectResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[213].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DiagsNodeSelector); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[214].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DiagsVolumeSelector); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[215].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkEnumerateJobsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[216].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkEnumerateJobsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[217].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkUpdateJobRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[218].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkUpdateJobResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[219].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkGetJobStatusRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[220].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JobAudit); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[221].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JobWorkSummary); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[222].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JobSummary); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[223].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkGetJobStatusResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[224].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DrainAttachmentsSummary); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[225].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkNodeCordonAttachmentsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[226].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkNodeCordonAttachmentsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[227].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkNodeUncordonAttachmentsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[228].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkNodeUncordonAttachmentsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[229].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkStoragePoolResizeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[230].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StorageRebalanceTriggerThreshold); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[231].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkStorageRebalanceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[232].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkStorageRebalanceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[233].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StorageRebalanceJob); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[234].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StorageRebalanceSummary); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[235].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StorageRebalanceWorkSummary); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[236].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StorageRebalanceAudit); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[237].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkUpdateRebalanceJobRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[238].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkUpdateRebalanceJobResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[239].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkGetRebalanceJobStatusRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[240].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkGetRebalanceJobStatusResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[241].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkEnumerateRebalanceJobsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[242].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkEnumerateRebalanceJobsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[243].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RebalanceScheduleInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[244].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCreateRebalanceScheduleRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[245].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCreateRebalanceScheduleResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[246].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkGetRebalanceScheduleRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[247].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkGetRebalanceScheduleResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[248].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkDeleteRebalanceScheduleRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[249].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkDeleteRebalanceScheduleResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[250].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkStoragePool); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[251].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkStoragePoolResizeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[252].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkNodeInspectResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[253].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkNodeInspectCurrentRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[254].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkNodeInspectCurrentResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[255].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkNodeEnumerateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[256].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkNodeEnumerateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[257].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkNodeEnumerateWithFiltersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[258].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkNodeEnumerateWithFiltersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[259].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkObjectstoreInspectRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[260].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkObjectstoreInspectResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[261].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkObjectstoreCreateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[262].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkObjectstoreCreateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[263].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkObjectstoreDeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[264].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkObjectstoreDeleteResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[265].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkObjectstoreUpdateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[266].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkObjectstoreUpdateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[267].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupCreateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[268].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupCreateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[269].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupGroupCreateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[270].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupGroupCreateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[271].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupRestoreRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[272].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupRestoreResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[273].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupDeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[274].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupDeleteResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[275].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupDeleteAllRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[276].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupDeleteAllResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[277].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupEnumerateWithFiltersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[278].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[279].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupEnumerateWithFiltersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[280].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[281].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupStatusRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[282].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupStatusResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[283].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupCatalogRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[284].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupCatalogResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[285].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupHistoryItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[286].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupHistoryRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[287].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupHistoryResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[288].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupStateChangeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[289].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupStateChangeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[290].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupScheduleInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[291].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupSchedCreateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[292].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupSchedCreateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[293].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupSchedUpdateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[294].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupSchedUpdateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[295].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupSchedDeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[296].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupSchedDeleteResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[297].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupSchedEnumerateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[298].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupSchedEnumerateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[299].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupSizeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[300].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudBackupSizeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[301].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkRule); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[302].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkRole); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[303].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkRoleCreateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[304].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkRoleCreateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[305].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkRoleEnumerateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[306].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkRoleEnumerateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[307].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkRoleInspectRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[308].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkRoleInspectResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[309].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkRoleDeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[310].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkRoleDeleteResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[311].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkRoleUpdateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[312].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkRoleUpdateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[313].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FilesystemTrim); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[314].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkFilesystemTrimStartRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[315].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkFilesystemTrimStartResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[316].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkFilesystemTrimStatusRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[317].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkFilesystemTrimStatusResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[318].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAutoFSTrimStatusRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[319].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAutoFSTrimStatusResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[320].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAutoFSTrimUsageRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[321].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAutoFSTrimUsageResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[322].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkFilesystemTrimStopRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[323].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeBytesUsedResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[324].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeBytesUsedRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[325].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkFilesystemTrimStopResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[326].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAutoFSTrimPushRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[327].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAutoFSTrimPushResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[328].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAutoFSTrimPopRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[329].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkAutoFSTrimPopResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[330].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FilesystemCheck); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[331].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FilesystemCheckSnapInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[332].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FilesystemCheckVolInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[333].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkFilesystemCheckStartRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[334].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkFilesystemCheckStartResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[335].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkFilesystemCheckStatusRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[336].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkFilesystemCheckStatusResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[337].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkFilesystemCheckStopRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[338].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkFilesystemCheckStopResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[339].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkFilesystemCheckListSnapshotsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[340].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkFilesystemCheckListSnapshotsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[341].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkFilesystemCheckDeleteSnapshotsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[342].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkFilesystemCheckDeleteSnapshotsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[343].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkFilesystemCheckListVolumesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[344].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkFilesystemCheckListVolumesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[345].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkIdentityCapabilitiesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[346].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkIdentityCapabilitiesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[347].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkIdentityVersionRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[348].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkIdentityVersionResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[349].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkServiceCapability); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[350].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVersion); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[351].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StorageVersion); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[352].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudMigrate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[353].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudMigrateStartRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[354].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudMigrateStartRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[355].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudMigrateStartResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[356].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudMigrateStartResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[357].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudMigrateCancelRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[358].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudMigrateCancelRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[359].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudMigrateCancelResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[360].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudMigrateInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[361].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudMigrateInfoList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[362].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudMigrateStatusRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[363].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudMigrateStatusRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[364].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CloudMigrateStatusResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[365].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudMigrateStatusResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[366].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterPairMode); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[367].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterPairCreateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[368].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterPairCreateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[369].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkClusterPairCreateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[370].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkClusterPairCreateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[371].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterPairProcessRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[372].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterPairProcessResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[373].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkClusterPairDeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[374].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkClusterPairDeleteResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[375].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterPairTokenGetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[376].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkClusterPairGetTokenRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[377].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkClusterPairGetTokenResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[378].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkClusterPairResetTokenRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[379].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkClusterPairResetTokenResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[380].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterPairInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[381].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkClusterPairInspectRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[382].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterPairGetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[383].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkClusterPairInspectResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[384].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkClusterPairEnumerateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[385].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClusterPairsEnumerateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[386].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkClusterPairEnumerateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[387].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Catalog); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[388].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Report); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[389].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CatalogResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[390].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LocateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[391].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumePlacementStrategy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[392].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReplicaPlacementSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[393].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumePlacementSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[394].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LabelSelectorRequirement); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[395].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RestoreVolSnashotSchedule); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[396].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RestoreVolStoragePolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[397].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RestoreVolumeSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[398].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeCatalogRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[399].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVolumeCatalogResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[400].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VerifyChecksum); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[401].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVerifyChecksumStartRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[402].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVerifyChecksumStartResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[403].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVerifyChecksumStatusRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[404].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVerifyChecksumStatusResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[405].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVerifyChecksumStopRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[406].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkVerifyChecksumStopResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[416].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Ownership_PublicAccessControl); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[417].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Ownership_AccessControl); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[454].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkServiceCapability_OpenStorageService); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[456].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudMigrateStartRequest_MigrateVolume); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[457].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudMigrateStartRequest_MigrateVolumeGroup); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_api_proto_msgTypes[458].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SdkCloudMigrateStartRequest_MigrateAllVolumes); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } +func (m *RestoreVolumeSpec) GetSnapshotSchedule() *RestoreVolSnashotSchedule { + if m != nil { + return m.SnapshotSchedule } - file_api_api_proto_msgTypes[27].OneofWrappers = []interface{}{ - (*VolumeSpecUpdate_Size)(nil), - (*VolumeSpecUpdate_HaLevel)(nil), - (*VolumeSpecUpdate_Cos)(nil), - (*VolumeSpecUpdate_IoProfile)(nil), - (*VolumeSpecUpdate_Dedupe)(nil), - (*VolumeSpecUpdate_SnapshotInterval)(nil), - (*VolumeSpecUpdate_Shared)(nil), - (*VolumeSpecUpdate_Passphrase)(nil), - (*VolumeSpecUpdate_SnapshotSchedule)(nil), - (*VolumeSpecUpdate_Scale)(nil), - (*VolumeSpecUpdate_Sticky)(nil), - (*VolumeSpecUpdate_Group)(nil), - (*VolumeSpecUpdate_Journal)(nil), - (*VolumeSpecUpdate_Sharedv4)(nil), - (*VolumeSpecUpdate_QueueDepth)(nil), - (*VolumeSpecUpdate_Nodiscard)(nil), - (*VolumeSpecUpdate_ExportSpec)(nil), - (*VolumeSpecUpdate_Fastpath)(nil), - (*VolumeSpecUpdate_Xattr)(nil), - (*VolumeSpecUpdate_ScanPolicy)(nil), - (*VolumeSpecUpdate_MountOptSpec)(nil), - (*VolumeSpecUpdate_Sharedv4MountOptSpec)(nil), - (*VolumeSpecUpdate_ProxyWrite)(nil), - (*VolumeSpecUpdate_ProxySpec)(nil), - (*VolumeSpecUpdate_Sharedv4ServiceSpec)(nil), - (*VolumeSpecUpdate_Sharedv4Spec)(nil), - (*VolumeSpecUpdate_AutoFstrim)(nil), - (*VolumeSpecUpdate_IoThrottle)(nil), - (*VolumeSpecUpdate_Readahead)(nil), - (*VolumeSpecUpdate_Winshare)(nil), - (*VolumeSpecUpdate_NearSyncReplicationStrategy)(nil), - (*VolumeSpecUpdate_Checksummed)(nil), + return nil +} + +func (m *RestoreVolumeSpec) GetSticky() RestoreParamBoolType { + if m != nil { + return m.Sticky } - file_api_api_proto_msgTypes[28].OneofWrappers = []interface{}{ - (*VolumeSpecPolicy_Size)(nil), - (*VolumeSpecPolicy_HaLevel)(nil), - (*VolumeSpecPolicy_Cos)(nil), - (*VolumeSpecPolicy_IoProfile)(nil), - (*VolumeSpecPolicy_Dedupe)(nil), - (*VolumeSpecPolicy_SnapshotInterval)(nil), - (*VolumeSpecPolicy_Shared)(nil), - (*VolumeSpecPolicy_Passphrase)(nil), - (*VolumeSpecPolicy_SnapshotSchedule)(nil), - (*VolumeSpecPolicy_Scale)(nil), - (*VolumeSpecPolicy_Sticky)(nil), - (*VolumeSpecPolicy_Group)(nil), - (*VolumeSpecPolicy_Journal)(nil), - (*VolumeSpecPolicy_Sharedv4)(nil), - (*VolumeSpecPolicy_QueueDepth)(nil), - (*VolumeSpecPolicy_Encrypted)(nil), - (*VolumeSpecPolicy_AggregationLevel)(nil), - (*VolumeSpecPolicy_Nodiscard)(nil), - (*VolumeSpecPolicy_ExportSpec)(nil), - (*VolumeSpecPolicy_ScanPolicy)(nil), - (*VolumeSpecPolicy_MountOptSpec)(nil), - (*VolumeSpecPolicy_Sharedv4MountOptSpec)(nil), - (*VolumeSpecPolicy_ProxyWrite)(nil), - (*VolumeSpecPolicy_ProxySpec)(nil), - (*VolumeSpecPolicy_Fastpath)(nil), - (*VolumeSpecPolicy_Sharedv4ServiceSpec)(nil), - (*VolumeSpecPolicy_Sharedv4Spec)(nil), - (*VolumeSpecPolicy_AutoFstrim)(nil), - (*VolumeSpecPolicy_IoThrottle)(nil), - (*VolumeSpecPolicy_Readahead)(nil), - (*VolumeSpecPolicy_Winshare)(nil), + return RestoreParamBoolType_PARAM_BKUPSRC +} + +func (m *RestoreVolumeSpec) GetGroup() *Group { + if m != nil { + return m.Group } - file_api_api_proto_msgTypes[45].OneofWrappers = []interface{}{ - (*SdkAlertsOption_MinSeverityType)(nil), - (*SdkAlertsOption_IsCleared)(nil), - (*SdkAlertsOption_TimeSpan)(nil), - (*SdkAlertsOption_CountSpan)(nil), + return nil +} + +func (m *RestoreVolumeSpec) GetGroupEnforced() bool { + if m != nil { + return m.GroupEnforced } - file_api_api_proto_msgTypes[49].OneofWrappers = []interface{}{ - (*SdkAlertsQuery_ResourceTypeQuery)(nil), - (*SdkAlertsQuery_AlertTypeQuery)(nil), - (*SdkAlertsQuery_ResourceIdQuery)(nil), + return false +} + +func (m *RestoreVolumeSpec) GetJournal() RestoreParamBoolType { + if m != nil { + return m.Journal } - file_api_api_proto_msgTypes[116].OneofWrappers = []interface{}{ - (*SdkSchedulePolicyInterval_Daily)(nil), - (*SdkSchedulePolicyInterval_Weekly)(nil), - (*SdkSchedulePolicyInterval_Monthly)(nil), - (*SdkSchedulePolicyInterval_Periodic)(nil), + return RestoreParamBoolType_PARAM_BKUPSRC +} + +func (m *RestoreVolumeSpec) GetSharedv4() RestoreParamBoolType { + if m != nil { + return m.Sharedv4 } - file_api_api_proto_msgTypes[118].OneofWrappers = []interface{}{ - (*SdkCredentialCreateRequest_AwsCredential)(nil), - (*SdkCredentialCreateRequest_AzureCredential)(nil), - (*SdkCredentialCreateRequest_GoogleCredential)(nil), - (*SdkCredentialCreateRequest_NfsCredential)(nil), + return RestoreParamBoolType_PARAM_BKUPSRC +} + +func (m *RestoreVolumeSpec) GetQueueDepth() uint32 { + if m != nil { + return m.QueueDepth } - file_api_api_proto_msgTypes[133].OneofWrappers = []interface{}{ - (*SdkCredentialInspectResponse_AwsCredential)(nil), - (*SdkCredentialInspectResponse_AzureCredential)(nil), - (*SdkCredentialInspectResponse_GoogleCredential)(nil), - (*SdkCredentialInspectResponse_NfsCredential)(nil), + return 0 +} + +func (m *RestoreVolumeSpec) GetNodiscard() RestoreParamBoolType { + if m != nil { + return m.Nodiscard } - file_api_api_proto_msgTypes[181].OneofWrappers = []interface{}{ - (*SdkWatchRequest_VolumeEvent)(nil), + return RestoreParamBoolType_PARAM_BKUPSRC +} + +func (m *RestoreVolumeSpec) GetIoStrategy() *IoStrategy { + if m != nil { + return m.IoStrategy } - file_api_api_proto_msgTypes[182].OneofWrappers = []interface{}{ - (*SdkWatchResponse_VolumeEvent)(nil), + return nil +} + +func (m *RestoreVolumeSpec) GetPlacementStrategy() *VolumePlacementStrategy { + if m != nil { + return m.PlacementStrategy } - file_api_api_proto_msgTypes[200].OneofWrappers = []interface{}{ - (*Job_DrainAttachments)(nil), - (*Job_ClouddriveTransfer)(nil), - (*Job_CollectDiags)(nil), - (*Job_Defrag)(nil), + return nil +} + +func (m *RestoreVolumeSpec) GetStoragePolicy() *RestoreVolStoragePolicy { + if m != nil { + return m.StoragePolicy } - file_api_api_proto_msgTypes[221].OneofWrappers = []interface{}{ - (*JobWorkSummary_DrainAttachmentsSummary)(nil), + return nil +} + +func (m *RestoreVolumeSpec) GetOwnership() *Ownership { + if m != nil { + return m.Ownership } - file_api_api_proto_msgTypes[229].OneofWrappers = []interface{}{ - (*SdkStoragePoolResizeRequest_Size)(nil), - (*SdkStoragePoolResizeRequest_Percentage)(nil), + return nil +} + +func (m *RestoreVolumeSpec) GetExportSpec() *ExportSpec { + if m != nil { + return m.ExportSpec } - file_api_api_proto_msgTypes[349].OneofWrappers = []interface{}{ - (*SdkServiceCapability_Service)(nil), + return nil +} + +func (m *RestoreVolumeSpec) GetFpPreference() RestoreParamBoolType { + if m != nil { + return m.FpPreference } - file_api_api_proto_msgTypes[354].OneofWrappers = []interface{}{ - (*SdkCloudMigrateStartRequest_Volume)(nil), - (*SdkCloudMigrateStartRequest_VolumeGroup)(nil), - (*SdkCloudMigrateStartRequest_AllVolumes)(nil), + return RestoreParamBoolType_PARAM_BKUPSRC +} + +func (m *RestoreVolumeSpec) GetMountOptions() *MountOptions { + if m != nil { + return m.MountOptions } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_api_api_proto_rawDesc, - NumEnums: 60, - NumMessages: 465, - NumExtensions: 0, - NumServices: 23, - }, - GoTypes: file_api_api_proto_goTypes, - DependencyIndexes: file_api_api_proto_depIdxs, - EnumInfos: file_api_api_proto_enumTypes, - MessageInfos: file_api_api_proto_msgTypes, - }.Build() - File_api_api_proto = out.File - file_api_api_proto_rawDesc = nil - file_api_api_proto_goTypes = nil - file_api_api_proto_depIdxs = nil + return nil +} + +func (m *RestoreVolumeSpec) GetSharedv4MountOptions() *MountOptions { + if m != nil { + return m.Sharedv4MountOptions + } + return nil +} + +func (m *RestoreVolumeSpec) GetProxyWrite() RestoreParamBoolType { + if m != nil { + return m.ProxyWrite + } + return RestoreParamBoolType_PARAM_BKUPSRC +} + +func (m *RestoreVolumeSpec) GetIoProfileBkupSrc() bool { + if m != nil { + return m.IoProfileBkupSrc + } + return false +} + +func (m *RestoreVolumeSpec) GetProxySpec() *ProxySpec { + if m != nil { + return m.ProxySpec + } + return nil +} + +func (m *RestoreVolumeSpec) GetSharedv4ServiceSpec() *Sharedv4ServiceSpec { + if m != nil { + return m.Sharedv4ServiceSpec + } + return nil +} + +func (m *RestoreVolumeSpec) GetSharedv4Spec() *Sharedv4Spec { + if m != nil { + return m.Sharedv4Spec + } + return nil +} + +func (m *RestoreVolumeSpec) GetAutoFstrim() RestoreParamBoolType { + if m != nil { + return m.AutoFstrim + } + return RestoreParamBoolType_PARAM_BKUPSRC +} + +func (m *RestoreVolumeSpec) GetIoThrottle() *IoThrottle { + if m != nil { + return m.IoThrottle + } + return nil +} + +// Request message to get the volume catalog +type SdkVolumeCatalogRequest struct { + // VolumeId of the volume that is getting it's catalog retrieved. + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` + // Path which will be used as root (default is the actual root) + Path string `protobuf:"bytes,2,opt,name=path" json:"path,omitempty"` + // Depth of folders/files retrieved (default is all of it, 1 would only return 1 layer) + Depth string `protobuf:"bytes,3,opt,name=depth" json:"depth,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SdkVolumeCatalogRequest) Reset() { *m = SdkVolumeCatalogRequest{} } +func (m *SdkVolumeCatalogRequest) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeCatalogRequest) ProtoMessage() {} +func (*SdkVolumeCatalogRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{381} +} +func (m *SdkVolumeCatalogRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeCatalogRequest.Unmarshal(m, b) +} +func (m *SdkVolumeCatalogRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeCatalogRequest.Marshal(b, m, deterministic) +} +func (dst *SdkVolumeCatalogRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeCatalogRequest.Merge(dst, src) +} +func (m *SdkVolumeCatalogRequest) XXX_Size() int { + return xxx_messageInfo_SdkVolumeCatalogRequest.Size(m) +} +func (m *SdkVolumeCatalogRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeCatalogRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeCatalogRequest proto.InternalMessageInfo + +func (m *SdkVolumeCatalogRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId + } + return "" +} + +func (m *SdkVolumeCatalogRequest) GetPath() string { + if m != nil { + return m.Path + } + return "" +} + +func (m *SdkVolumeCatalogRequest) GetDepth() string { + if m != nil { + return m.Depth + } + return "" +} + +// Response message to get volume catalog +type SdkVolumeCatalogResponse struct { + // Catalog + Catalog *CatalogResponse `protobuf:"bytes,1,opt,name=catalog" json:"catalog,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SdkVolumeCatalogResponse) Reset() { *m = SdkVolumeCatalogResponse{} } +func (m *SdkVolumeCatalogResponse) String() string { return proto.CompactTextString(m) } +func (*SdkVolumeCatalogResponse) ProtoMessage() {} +func (*SdkVolumeCatalogResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_api_bc0eb0e06839944e, []int{382} +} +func (m *SdkVolumeCatalogResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SdkVolumeCatalogResponse.Unmarshal(m, b) +} +func (m *SdkVolumeCatalogResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SdkVolumeCatalogResponse.Marshal(b, m, deterministic) +} +func (dst *SdkVolumeCatalogResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SdkVolumeCatalogResponse.Merge(dst, src) +} +func (m *SdkVolumeCatalogResponse) XXX_Size() int { + return xxx_messageInfo_SdkVolumeCatalogResponse.Size(m) +} +func (m *SdkVolumeCatalogResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SdkVolumeCatalogResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SdkVolumeCatalogResponse proto.InternalMessageInfo + +func (m *SdkVolumeCatalogResponse) GetCatalog() *CatalogResponse { + if m != nil { + return m.Catalog + } + return nil +} + +func init() { + proto.RegisterType((*StorageResource)(nil), "openstorage.api.StorageResource") + proto.RegisterType((*StoragePool)(nil), "openstorage.api.StoragePool") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.StoragePool.LabelsEntry") + proto.RegisterType((*SchedulerTopology)(nil), "openstorage.api.SchedulerTopology") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.SchedulerTopology.LabelsEntry") + proto.RegisterType((*StoragePoolOperation)(nil), "openstorage.api.StoragePoolOperation") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.StoragePoolOperation.ParamsEntry") + proto.RegisterType((*TopologyRequirement)(nil), "openstorage.api.TopologyRequirement") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.TopologyRequirement.LabelsEntry") + proto.RegisterType((*VolumeLocator)(nil), "openstorage.api.VolumeLocator") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.VolumeLocator.VolumeLabelsEntry") + proto.RegisterType((*VolumeInspectOptions)(nil), "openstorage.api.VolumeInspectOptions") + proto.RegisterType((*Source)(nil), "openstorage.api.Source") + proto.RegisterType((*Group)(nil), "openstorage.api.Group") + proto.RegisterType((*IoStrategy)(nil), "openstorage.api.IoStrategy") + proto.RegisterType((*Xattr)(nil), "openstorage.api.Xattr") + proto.RegisterType((*ExportSpec)(nil), "openstorage.api.ExportSpec") + proto.RegisterType((*NFSProxySpec)(nil), "openstorage.api.NFSProxySpec") + proto.RegisterType((*S3ProxySpec)(nil), "openstorage.api.S3ProxySpec") + proto.RegisterType((*PXDProxySpec)(nil), "openstorage.api.PXDProxySpec") + proto.RegisterType((*PureBlockSpec)(nil), "openstorage.api.PureBlockSpec") + proto.RegisterType((*PureFileSpec)(nil), "openstorage.api.PureFileSpec") + proto.RegisterType((*ProxySpec)(nil), "openstorage.api.ProxySpec") + proto.RegisterType((*Sharedv4ServiceSpec)(nil), "openstorage.api.Sharedv4ServiceSpec") + proto.RegisterType((*Sharedv4FailoverStrategy)(nil), "openstorage.api.Sharedv4FailoverStrategy") + proto.RegisterType((*Sharedv4Spec)(nil), "openstorage.api.Sharedv4Spec") + proto.RegisterType((*MountOptions)(nil), "openstorage.api.MountOptions") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.MountOptions.OptionsEntry") + proto.RegisterType((*FastpathReplState)(nil), "openstorage.api.FastpathReplState") + proto.RegisterType((*FastpathConfig)(nil), "openstorage.api.FastpathConfig") + proto.RegisterType((*ScanPolicy)(nil), "openstorage.api.ScanPolicy") + proto.RegisterType((*IoThrottle)(nil), "openstorage.api.IoThrottle") + proto.RegisterType((*VolumeSpec)(nil), "openstorage.api.VolumeSpec") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.VolumeSpec.VolumeLabelsEntry") + proto.RegisterType((*VolumeSpecUpdate)(nil), "openstorage.api.VolumeSpecUpdate") + proto.RegisterType((*VolumeSpecPolicy)(nil), "openstorage.api.VolumeSpecPolicy") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.VolumeSpecPolicy.VolumeLabelsEntry") + proto.RegisterType((*ReplicaSet)(nil), "openstorage.api.ReplicaSet") + proto.RegisterType((*RuntimeStateMap)(nil), "openstorage.api.RuntimeStateMap") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.RuntimeStateMap.RuntimeStateEntry") + proto.RegisterType((*Ownership)(nil), "openstorage.api.Ownership") + proto.RegisterType((*Ownership_PublicAccessControl)(nil), "openstorage.api.Ownership.PublicAccessControl") + proto.RegisterType((*Ownership_AccessControl)(nil), "openstorage.api.Ownership.AccessControl") + proto.RegisterMapType((map[string]Ownership_AccessType)(nil), "openstorage.api.Ownership.AccessControl.CollaboratorsEntry") + proto.RegisterMapType((map[string]Ownership_AccessType)(nil), "openstorage.api.Ownership.AccessControl.GroupsEntry") + proto.RegisterType((*Volume)(nil), "openstorage.api.Volume") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.Volume.AttachInfoEntry") + proto.RegisterType((*Stats)(nil), "openstorage.api.Stats") + proto.RegisterType((*CapacityUsageInfo)(nil), "openstorage.api.CapacityUsageInfo") + proto.RegisterType((*VolumeUsage)(nil), "openstorage.api.VolumeUsage") + proto.RegisterType((*VolumeUsageByNode)(nil), "openstorage.api.VolumeUsageByNode") + proto.RegisterType((*VolumeBytesUsed)(nil), "openstorage.api.VolumeBytesUsed") + proto.RegisterType((*VolumeBytesUsedByNode)(nil), "openstorage.api.VolumeBytesUsedByNode") + proto.RegisterType((*FstrimVolumeUsageInfo)(nil), "openstorage.api.FstrimVolumeUsageInfo") + proto.RegisterType((*RelaxedReclaimPurge)(nil), "openstorage.api.RelaxedReclaimPurge") + proto.RegisterType((*SdkStoragePolicy)(nil), "openstorage.api.SdkStoragePolicy") + proto.RegisterType((*Alert)(nil), "openstorage.api.Alert") + proto.RegisterType((*SdkAlertsTimeSpan)(nil), "openstorage.api.SdkAlertsTimeSpan") + proto.RegisterType((*SdkAlertsCountSpan)(nil), "openstorage.api.SdkAlertsCountSpan") + proto.RegisterType((*SdkAlertsOption)(nil), "openstorage.api.SdkAlertsOption") + proto.RegisterType((*SdkAlertsResourceTypeQuery)(nil), "openstorage.api.SdkAlertsResourceTypeQuery") + proto.RegisterType((*SdkAlertsAlertTypeQuery)(nil), "openstorage.api.SdkAlertsAlertTypeQuery") + proto.RegisterType((*SdkAlertsResourceIdQuery)(nil), "openstorage.api.SdkAlertsResourceIdQuery") + proto.RegisterType((*SdkAlertsQuery)(nil), "openstorage.api.SdkAlertsQuery") + proto.RegisterType((*SdkAlertsEnumerateWithFiltersRequest)(nil), "openstorage.api.SdkAlertsEnumerateWithFiltersRequest") + proto.RegisterType((*SdkAlertsEnumerateWithFiltersResponse)(nil), "openstorage.api.SdkAlertsEnumerateWithFiltersResponse") + proto.RegisterType((*SdkAlertsDeleteRequest)(nil), "openstorage.api.SdkAlertsDeleteRequest") + proto.RegisterType((*SdkAlertsDeleteResponse)(nil), "openstorage.api.SdkAlertsDeleteResponse") + proto.RegisterType((*Alerts)(nil), "openstorage.api.Alerts") + proto.RegisterType((*ObjectstoreInfo)(nil), "openstorage.api.ObjectstoreInfo") + proto.RegisterType((*VolumeCreateRequest)(nil), "openstorage.api.VolumeCreateRequest") + proto.RegisterType((*VolumeResponse)(nil), "openstorage.api.VolumeResponse") + proto.RegisterType((*VolumeCreateResponse)(nil), "openstorage.api.VolumeCreateResponse") + proto.RegisterType((*VolumeStateAction)(nil), "openstorage.api.VolumeStateAction") + proto.RegisterType((*VolumeSetRequest)(nil), "openstorage.api.VolumeSetRequest") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.VolumeSetRequest.OptionsEntry") + proto.RegisterType((*VolumeSetResponse)(nil), "openstorage.api.VolumeSetResponse") + proto.RegisterType((*SnapCreateRequest)(nil), "openstorage.api.SnapCreateRequest") + proto.RegisterType((*SnapCreateResponse)(nil), "openstorage.api.SnapCreateResponse") + proto.RegisterType((*VolumeInfo)(nil), "openstorage.api.VolumeInfo") + proto.RegisterType((*VolumeConsumer)(nil), "openstorage.api.VolumeConsumer") + proto.RegisterType((*VolumeServiceRequest)(nil), "openstorage.api.VolumeServiceRequest") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.VolumeServiceRequest.SrvCmdParamsEntry") + proto.RegisterType((*VolumeServiceInstanceResponse)(nil), "openstorage.api.VolumeServiceInstanceResponse") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.VolumeServiceInstanceResponse.StatusEntry") + proto.RegisterType((*VolumeServiceResponse)(nil), "openstorage.api.VolumeServiceResponse") + proto.RegisterType((*GraphDriverChanges)(nil), "openstorage.api.GraphDriverChanges") + proto.RegisterType((*ClusterResponse)(nil), "openstorage.api.ClusterResponse") + proto.RegisterType((*ActiveRequest)(nil), "openstorage.api.ActiveRequest") + proto.RegisterMapType((map[int64]string)(nil), "openstorage.api.ActiveRequest.ReqestKVEntry") + proto.RegisterType((*ActiveRequests)(nil), "openstorage.api.ActiveRequests") + proto.RegisterType((*GroupSnapCreateRequest)(nil), "openstorage.api.GroupSnapCreateRequest") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.GroupSnapCreateRequest.LabelsEntry") + proto.RegisterType((*GroupSnapCreateResponse)(nil), "openstorage.api.GroupSnapCreateResponse") + proto.RegisterMapType((map[string]*SnapCreateResponse)(nil), "openstorage.api.GroupSnapCreateResponse.SnapshotsEntry") + proto.RegisterType((*StorageNode)(nil), "openstorage.api.StorageNode") + proto.RegisterMapType((map[string]*StorageResource)(nil), "openstorage.api.StorageNode.DisksEntry") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.StorageNode.NodeLabelsEntry") + proto.RegisterType((*StorageCluster)(nil), "openstorage.api.StorageCluster") + proto.RegisterType((*BucketCreateRequest)(nil), "openstorage.api.BucketCreateRequest") + proto.RegisterType((*BucketCreateResponse)(nil), "openstorage.api.BucketCreateResponse") + proto.RegisterType((*BucketDeleteRequest)(nil), "openstorage.api.BucketDeleteRequest") + proto.RegisterType((*BucketDeleteResponse)(nil), "openstorage.api.BucketDeleteResponse") + proto.RegisterType((*BucketGrantAccessRequest)(nil), "openstorage.api.BucketGrantAccessRequest") + proto.RegisterType((*BucketGrantAccessResponse)(nil), "openstorage.api.BucketGrantAccessResponse") + proto.RegisterType((*BucketRevokeAccessRequest)(nil), "openstorage.api.BucketRevokeAccessRequest") + proto.RegisterType((*BucketRevokeAccessResponse)(nil), "openstorage.api.BucketRevokeAccessResponse") + proto.RegisterType((*BucketAccessCredentials)(nil), "openstorage.api.BucketAccessCredentials") + proto.RegisterType((*SdkOpenStoragePolicyCreateRequest)(nil), "openstorage.api.SdkOpenStoragePolicyCreateRequest") + proto.RegisterType((*SdkOpenStoragePolicyCreateResponse)(nil), "openstorage.api.SdkOpenStoragePolicyCreateResponse") + proto.RegisterType((*SdkOpenStoragePolicyEnumerateRequest)(nil), "openstorage.api.SdkOpenStoragePolicyEnumerateRequest") + proto.RegisterType((*SdkOpenStoragePolicyEnumerateResponse)(nil), "openstorage.api.SdkOpenStoragePolicyEnumerateResponse") + proto.RegisterType((*SdkOpenStoragePolicyInspectRequest)(nil), "openstorage.api.SdkOpenStoragePolicyInspectRequest") + proto.RegisterType((*SdkOpenStoragePolicyInspectResponse)(nil), "openstorage.api.SdkOpenStoragePolicyInspectResponse") + proto.RegisterType((*SdkOpenStoragePolicyDeleteRequest)(nil), "openstorage.api.SdkOpenStoragePolicyDeleteRequest") + proto.RegisterType((*SdkOpenStoragePolicyDeleteResponse)(nil), "openstorage.api.SdkOpenStoragePolicyDeleteResponse") + proto.RegisterType((*SdkOpenStoragePolicyUpdateRequest)(nil), "openstorage.api.SdkOpenStoragePolicyUpdateRequest") + proto.RegisterType((*SdkOpenStoragePolicyUpdateResponse)(nil), "openstorage.api.SdkOpenStoragePolicyUpdateResponse") + proto.RegisterType((*SdkOpenStoragePolicySetDefaultRequest)(nil), "openstorage.api.SdkOpenStoragePolicySetDefaultRequest") + proto.RegisterType((*SdkOpenStoragePolicySetDefaultResponse)(nil), "openstorage.api.SdkOpenStoragePolicySetDefaultResponse") + proto.RegisterType((*SdkOpenStoragePolicyReleaseRequest)(nil), "openstorage.api.SdkOpenStoragePolicyReleaseRequest") + proto.RegisterType((*SdkOpenStoragePolicyReleaseResponse)(nil), "openstorage.api.SdkOpenStoragePolicyReleaseResponse") + proto.RegisterType((*SdkOpenStoragePolicyDefaultInspectRequest)(nil), "openstorage.api.SdkOpenStoragePolicyDefaultInspectRequest") + proto.RegisterType((*SdkOpenStoragePolicyDefaultInspectResponse)(nil), "openstorage.api.SdkOpenStoragePolicyDefaultInspectResponse") + proto.RegisterType((*SdkSchedulePolicyCreateRequest)(nil), "openstorage.api.SdkSchedulePolicyCreateRequest") + proto.RegisterType((*SdkSchedulePolicyCreateResponse)(nil), "openstorage.api.SdkSchedulePolicyCreateResponse") + proto.RegisterType((*SdkSchedulePolicyUpdateRequest)(nil), "openstorage.api.SdkSchedulePolicyUpdateRequest") + proto.RegisterType((*SdkSchedulePolicyUpdateResponse)(nil), "openstorage.api.SdkSchedulePolicyUpdateResponse") + proto.RegisterType((*SdkSchedulePolicyEnumerateRequest)(nil), "openstorage.api.SdkSchedulePolicyEnumerateRequest") + proto.RegisterType((*SdkSchedulePolicyEnumerateResponse)(nil), "openstorage.api.SdkSchedulePolicyEnumerateResponse") + proto.RegisterType((*SdkSchedulePolicyInspectRequest)(nil), "openstorage.api.SdkSchedulePolicyInspectRequest") + proto.RegisterType((*SdkSchedulePolicyInspectResponse)(nil), "openstorage.api.SdkSchedulePolicyInspectResponse") + proto.RegisterType((*SdkSchedulePolicyDeleteRequest)(nil), "openstorage.api.SdkSchedulePolicyDeleteRequest") + proto.RegisterType((*SdkSchedulePolicyDeleteResponse)(nil), "openstorage.api.SdkSchedulePolicyDeleteResponse") + proto.RegisterType((*SdkSchedulePolicyIntervalDaily)(nil), "openstorage.api.SdkSchedulePolicyIntervalDaily") + proto.RegisterType((*SdkSchedulePolicyIntervalWeekly)(nil), "openstorage.api.SdkSchedulePolicyIntervalWeekly") + proto.RegisterType((*SdkSchedulePolicyIntervalMonthly)(nil), "openstorage.api.SdkSchedulePolicyIntervalMonthly") + proto.RegisterType((*SdkSchedulePolicyIntervalPeriodic)(nil), "openstorage.api.SdkSchedulePolicyIntervalPeriodic") + proto.RegisterType((*SdkSchedulePolicyInterval)(nil), "openstorage.api.SdkSchedulePolicyInterval") + proto.RegisterType((*SdkSchedulePolicy)(nil), "openstorage.api.SdkSchedulePolicy") + proto.RegisterType((*SdkCredentialCreateRequest)(nil), "openstorage.api.SdkCredentialCreateRequest") + proto.RegisterType((*SdkCredentialCreateResponse)(nil), "openstorage.api.SdkCredentialCreateResponse") + proto.RegisterType((*SdkCredentialUpdateRequest)(nil), "openstorage.api.SdkCredentialUpdateRequest") + proto.RegisterType((*SdkCredentialUpdateResponse)(nil), "openstorage.api.SdkCredentialUpdateResponse") + proto.RegisterType((*SdkAwsCredentialRequest)(nil), "openstorage.api.SdkAwsCredentialRequest") + proto.RegisterType((*SdkAzureCredentialRequest)(nil), "openstorage.api.SdkAzureCredentialRequest") + proto.RegisterType((*SdkGoogleCredentialRequest)(nil), "openstorage.api.SdkGoogleCredentialRequest") + proto.RegisterType((*SdkNfsCredentialRequest)(nil), "openstorage.api.SdkNfsCredentialRequest") + proto.RegisterType((*SdkAwsCredentialResponse)(nil), "openstorage.api.SdkAwsCredentialResponse") + proto.RegisterType((*SdkAzureCredentialResponse)(nil), "openstorage.api.SdkAzureCredentialResponse") + proto.RegisterType((*SdkGoogleCredentialResponse)(nil), "openstorage.api.SdkGoogleCredentialResponse") + proto.RegisterType((*SdkNfsCredentialResponse)(nil), "openstorage.api.SdkNfsCredentialResponse") + proto.RegisterType((*SdkCredentialEnumerateRequest)(nil), "openstorage.api.SdkCredentialEnumerateRequest") + proto.RegisterType((*SdkCredentialEnumerateResponse)(nil), "openstorage.api.SdkCredentialEnumerateResponse") + proto.RegisterType((*SdkCredentialInspectRequest)(nil), "openstorage.api.SdkCredentialInspectRequest") + proto.RegisterType((*SdkCredentialInspectResponse)(nil), "openstorage.api.SdkCredentialInspectResponse") + proto.RegisterType((*SdkCredentialDeleteRequest)(nil), "openstorage.api.SdkCredentialDeleteRequest") + proto.RegisterType((*SdkCredentialDeleteResponse)(nil), "openstorage.api.SdkCredentialDeleteResponse") + proto.RegisterType((*SdkCredentialValidateRequest)(nil), "openstorage.api.SdkCredentialValidateRequest") + proto.RegisterType((*SdkCredentialValidateResponse)(nil), "openstorage.api.SdkCredentialValidateResponse") + proto.RegisterType((*SdkCredentialDeleteReferencesRequest)(nil), "openstorage.api.SdkCredentialDeleteReferencesRequest") + proto.RegisterType((*SdkCredentialDeleteReferencesResponse)(nil), "openstorage.api.SdkCredentialDeleteReferencesResponse") + proto.RegisterType((*SdkVolumeAttachOptions)(nil), "openstorage.api.SdkVolumeAttachOptions") + proto.RegisterType((*SdkVolumeMountRequest)(nil), "openstorage.api.SdkVolumeMountRequest") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.SdkVolumeMountRequest.DriverOptionsEntry") + proto.RegisterType((*SdkVolumeMountResponse)(nil), "openstorage.api.SdkVolumeMountResponse") + proto.RegisterType((*SdkVolumeUnmountOptions)(nil), "openstorage.api.SdkVolumeUnmountOptions") + proto.RegisterType((*SdkVolumeUnmountRequest)(nil), "openstorage.api.SdkVolumeUnmountRequest") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.SdkVolumeUnmountRequest.DriverOptionsEntry") + proto.RegisterType((*SdkVolumeUnmountResponse)(nil), "openstorage.api.SdkVolumeUnmountResponse") + proto.RegisterType((*SdkVolumeAttachRequest)(nil), "openstorage.api.SdkVolumeAttachRequest") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.SdkVolumeAttachRequest.DriverOptionsEntry") + proto.RegisterType((*SdkVolumeAttachResponse)(nil), "openstorage.api.SdkVolumeAttachResponse") + proto.RegisterType((*SdkVolumeDetachOptions)(nil), "openstorage.api.SdkVolumeDetachOptions") + proto.RegisterType((*SdkVolumeDetachRequest)(nil), "openstorage.api.SdkVolumeDetachRequest") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.SdkVolumeDetachRequest.DriverOptionsEntry") + proto.RegisterType((*SdkVolumeDetachResponse)(nil), "openstorage.api.SdkVolumeDetachResponse") + proto.RegisterType((*SdkVolumeCreateRequest)(nil), "openstorage.api.SdkVolumeCreateRequest") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.SdkVolumeCreateRequest.LabelsEntry") + proto.RegisterType((*SdkVolumeCreateResponse)(nil), "openstorage.api.SdkVolumeCreateResponse") + proto.RegisterType((*SdkVolumeCloneRequest)(nil), "openstorage.api.SdkVolumeCloneRequest") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.SdkVolumeCloneRequest.AdditionalLabelsEntry") + proto.RegisterType((*SdkVolumeCloneResponse)(nil), "openstorage.api.SdkVolumeCloneResponse") + proto.RegisterType((*SdkVolumeDeleteRequest)(nil), "openstorage.api.SdkVolumeDeleteRequest") + proto.RegisterType((*SdkVolumeDeleteResponse)(nil), "openstorage.api.SdkVolumeDeleteResponse") + proto.RegisterType((*SdkVolumeInspectRequest)(nil), "openstorage.api.SdkVolumeInspectRequest") + proto.RegisterType((*SdkVolumeInspectResponse)(nil), "openstorage.api.SdkVolumeInspectResponse") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.SdkVolumeInspectResponse.LabelsEntry") + proto.RegisterType((*SdkVolumeInspectWithFiltersRequest)(nil), "openstorage.api.SdkVolumeInspectWithFiltersRequest") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.SdkVolumeInspectWithFiltersRequest.LabelsEntry") + proto.RegisterType((*SdkVolumeInspectWithFiltersResponse)(nil), "openstorage.api.SdkVolumeInspectWithFiltersResponse") + proto.RegisterType((*SdkVolumeUpdateRequest)(nil), "openstorage.api.SdkVolumeUpdateRequest") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.SdkVolumeUpdateRequest.LabelsEntry") + proto.RegisterType((*SdkVolumeUpdateResponse)(nil), "openstorage.api.SdkVolumeUpdateResponse") + proto.RegisterType((*SdkVolumeStatsRequest)(nil), "openstorage.api.SdkVolumeStatsRequest") + proto.RegisterType((*SdkVolumeStatsResponse)(nil), "openstorage.api.SdkVolumeStatsResponse") + proto.RegisterType((*SdkVolumeCapacityUsageRequest)(nil), "openstorage.api.SdkVolumeCapacityUsageRequest") + proto.RegisterType((*SdkVolumeCapacityUsageResponse)(nil), "openstorage.api.SdkVolumeCapacityUsageResponse") + proto.RegisterType((*SdkVolumeEnumerateRequest)(nil), "openstorage.api.SdkVolumeEnumerateRequest") + proto.RegisterType((*SdkVolumeEnumerateResponse)(nil), "openstorage.api.SdkVolumeEnumerateResponse") + proto.RegisterType((*SdkVolumeEnumerateWithFiltersRequest)(nil), "openstorage.api.SdkVolumeEnumerateWithFiltersRequest") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.SdkVolumeEnumerateWithFiltersRequest.LabelsEntry") + proto.RegisterType((*SdkVolumeEnumerateWithFiltersResponse)(nil), "openstorage.api.SdkVolumeEnumerateWithFiltersResponse") + proto.RegisterType((*SdkVolumeSnapshotCreateRequest)(nil), "openstorage.api.SdkVolumeSnapshotCreateRequest") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.SdkVolumeSnapshotCreateRequest.LabelsEntry") + proto.RegisterType((*SdkVolumeSnapshotCreateResponse)(nil), "openstorage.api.SdkVolumeSnapshotCreateResponse") + proto.RegisterType((*SdkVolumeSnapshotRestoreRequest)(nil), "openstorage.api.SdkVolumeSnapshotRestoreRequest") + proto.RegisterType((*SdkVolumeSnapshotRestoreResponse)(nil), "openstorage.api.SdkVolumeSnapshotRestoreResponse") + proto.RegisterType((*SdkVolumeSnapshotEnumerateRequest)(nil), "openstorage.api.SdkVolumeSnapshotEnumerateRequest") + proto.RegisterType((*SdkVolumeSnapshotEnumerateResponse)(nil), "openstorage.api.SdkVolumeSnapshotEnumerateResponse") + proto.RegisterType((*SdkVolumeSnapshotEnumerateWithFiltersRequest)(nil), "openstorage.api.SdkVolumeSnapshotEnumerateWithFiltersRequest") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.SdkVolumeSnapshotEnumerateWithFiltersRequest.LabelsEntry") + proto.RegisterType((*SdkVolumeSnapshotEnumerateWithFiltersResponse)(nil), "openstorage.api.SdkVolumeSnapshotEnumerateWithFiltersResponse") + proto.RegisterType((*SdkVolumeSnapshotScheduleUpdateRequest)(nil), "openstorage.api.SdkVolumeSnapshotScheduleUpdateRequest") + proto.RegisterType((*SdkVolumeSnapshotScheduleUpdateResponse)(nil), "openstorage.api.SdkVolumeSnapshotScheduleUpdateResponse") + proto.RegisterType((*SdkWatchRequest)(nil), "openstorage.api.SdkWatchRequest") + proto.RegisterType((*SdkWatchResponse)(nil), "openstorage.api.SdkWatchResponse") + proto.RegisterType((*SdkVolumeWatchRequest)(nil), "openstorage.api.SdkVolumeWatchRequest") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.SdkVolumeWatchRequest.LabelsEntry") + proto.RegisterType((*SdkVolumeWatchResponse)(nil), "openstorage.api.SdkVolumeWatchResponse") + proto.RegisterType((*SdkNodeVolumeUsageByNodeRequest)(nil), "openstorage.api.SdkNodeVolumeUsageByNodeRequest") + proto.RegisterType((*SdkNodeVolumeUsageByNodeResponse)(nil), "openstorage.api.SdkNodeVolumeUsageByNodeResponse") + proto.RegisterType((*SdkClusterDomainsEnumerateRequest)(nil), "openstorage.api.SdkClusterDomainsEnumerateRequest") + proto.RegisterType((*SdkClusterDomainsEnumerateResponse)(nil), "openstorage.api.SdkClusterDomainsEnumerateResponse") + proto.RegisterType((*SdkClusterDomainInspectRequest)(nil), "openstorage.api.SdkClusterDomainInspectRequest") + proto.RegisterType((*SdkClusterDomainInspectResponse)(nil), "openstorage.api.SdkClusterDomainInspectResponse") + proto.RegisterType((*SdkClusterDomainActivateRequest)(nil), "openstorage.api.SdkClusterDomainActivateRequest") + proto.RegisterType((*SdkClusterDomainActivateResponse)(nil), "openstorage.api.SdkClusterDomainActivateResponse") + proto.RegisterType((*SdkClusterDomainDeactivateRequest)(nil), "openstorage.api.SdkClusterDomainDeactivateRequest") + proto.RegisterType((*SdkClusterDomainDeactivateResponse)(nil), "openstorage.api.SdkClusterDomainDeactivateResponse") + proto.RegisterType((*SdkClusterInspectCurrentRequest)(nil), "openstorage.api.SdkClusterInspectCurrentRequest") + proto.RegisterType((*SdkClusterInspectCurrentResponse)(nil), "openstorage.api.SdkClusterInspectCurrentResponse") + proto.RegisterType((*SdkNodeInspectRequest)(nil), "openstorage.api.SdkNodeInspectRequest") + proto.RegisterType((*Job)(nil), "openstorage.api.Job") + proto.RegisterType((*SdkJobResponse)(nil), "openstorage.api.SdkJobResponse") + proto.RegisterType((*NodeDrainAttachmentOptions)(nil), "openstorage.api.NodeDrainAttachmentOptions") + proto.RegisterType((*SdkNodeDrainAttachmentsRequest)(nil), "openstorage.api.SdkNodeDrainAttachmentsRequest") + proto.RegisterType((*NodeDrainAttachmentsJob)(nil), "openstorage.api.NodeDrainAttachmentsJob") + proto.RegisterType((*CloudDriveTransferJob)(nil), "openstorage.api.CloudDriveTransferJob") + proto.RegisterType((*CollectDiagsJob)(nil), "openstorage.api.CollectDiagsJob") + proto.RegisterType((*DiagsCollectionStatus)(nil), "openstorage.api.DiagsCollectionStatus") + proto.RegisterType((*SdkDiagsCollectRequest)(nil), "openstorage.api.SdkDiagsCollectRequest") + proto.RegisterType((*SdkDiagsCollectResponse)(nil), "openstorage.api.SdkDiagsCollectResponse") + proto.RegisterType((*DiagsNodeSelector)(nil), "openstorage.api.DiagsNodeSelector") + proto.RegisterType((*DiagsVolumeSelector)(nil), "openstorage.api.DiagsVolumeSelector") + proto.RegisterType((*SdkEnumerateJobsRequest)(nil), "openstorage.api.SdkEnumerateJobsRequest") + proto.RegisterType((*SdkEnumerateJobsResponse)(nil), "openstorage.api.SdkEnumerateJobsResponse") + proto.RegisterType((*SdkUpdateJobRequest)(nil), "openstorage.api.SdkUpdateJobRequest") + proto.RegisterType((*SdkUpdateJobResponse)(nil), "openstorage.api.SdkUpdateJobResponse") + proto.RegisterType((*SdkGetJobStatusRequest)(nil), "openstorage.api.SdkGetJobStatusRequest") + proto.RegisterType((*JobAudit)(nil), "openstorage.api.JobAudit") + proto.RegisterType((*JobWorkSummary)(nil), "openstorage.api.JobWorkSummary") + proto.RegisterType((*JobSummary)(nil), "openstorage.api.JobSummary") + proto.RegisterType((*SdkGetJobStatusResponse)(nil), "openstorage.api.SdkGetJobStatusResponse") + proto.RegisterType((*DrainAttachmentsSummary)(nil), "openstorage.api.DrainAttachmentsSummary") + proto.RegisterType((*SdkNodeCordonAttachmentsRequest)(nil), "openstorage.api.SdkNodeCordonAttachmentsRequest") + proto.RegisterType((*SdkNodeCordonAttachmentsResponse)(nil), "openstorage.api.SdkNodeCordonAttachmentsResponse") + proto.RegisterType((*SdkNodeUncordonAttachmentsRequest)(nil), "openstorage.api.SdkNodeUncordonAttachmentsRequest") + proto.RegisterType((*SdkNodeUncordonAttachmentsResponse)(nil), "openstorage.api.SdkNodeUncordonAttachmentsResponse") + proto.RegisterType((*SdkStoragePoolResizeRequest)(nil), "openstorage.api.SdkStoragePoolResizeRequest") + proto.RegisterType((*StorageRebalanceTriggerThreshold)(nil), "openstorage.api.StorageRebalanceTriggerThreshold") + proto.RegisterType((*SdkStorageRebalanceRequest)(nil), "openstorage.api.SdkStorageRebalanceRequest") + proto.RegisterType((*SdkStorageRebalanceResponse)(nil), "openstorage.api.SdkStorageRebalanceResponse") + proto.RegisterType((*StorageRebalanceJob)(nil), "openstorage.api.StorageRebalanceJob") + proto.RegisterType((*StorageRebalanceSummary)(nil), "openstorage.api.StorageRebalanceSummary") + proto.RegisterType((*StorageRebalanceWorkSummary)(nil), "openstorage.api.StorageRebalanceWorkSummary") + proto.RegisterType((*StorageRebalanceAudit)(nil), "openstorage.api.StorageRebalanceAudit") + proto.RegisterType((*SdkUpdateRebalanceJobRequest)(nil), "openstorage.api.SdkUpdateRebalanceJobRequest") + proto.RegisterType((*SdkUpdateRebalanceJobResponse)(nil), "openstorage.api.SdkUpdateRebalanceJobResponse") + proto.RegisterType((*SdkGetRebalanceJobStatusRequest)(nil), "openstorage.api.SdkGetRebalanceJobStatusRequest") + proto.RegisterType((*SdkGetRebalanceJobStatusResponse)(nil), "openstorage.api.SdkGetRebalanceJobStatusResponse") + proto.RegisterType((*SdkEnumerateRebalanceJobsRequest)(nil), "openstorage.api.SdkEnumerateRebalanceJobsRequest") + proto.RegisterType((*SdkEnumerateRebalanceJobsResponse)(nil), "openstorage.api.SdkEnumerateRebalanceJobsResponse") + proto.RegisterType((*SdkStoragePool)(nil), "openstorage.api.SdkStoragePool") + proto.RegisterType((*SdkStoragePoolResizeResponse)(nil), "openstorage.api.SdkStoragePoolResizeResponse") + proto.RegisterType((*SdkNodeInspectResponse)(nil), "openstorage.api.SdkNodeInspectResponse") + proto.RegisterType((*SdkNodeInspectCurrentRequest)(nil), "openstorage.api.SdkNodeInspectCurrentRequest") + proto.RegisterType((*SdkNodeInspectCurrentResponse)(nil), "openstorage.api.SdkNodeInspectCurrentResponse") + proto.RegisterType((*SdkNodeEnumerateRequest)(nil), "openstorage.api.SdkNodeEnumerateRequest") + proto.RegisterType((*SdkNodeEnumerateResponse)(nil), "openstorage.api.SdkNodeEnumerateResponse") + proto.RegisterType((*SdkNodeEnumerateWithFiltersRequest)(nil), "openstorage.api.SdkNodeEnumerateWithFiltersRequest") + proto.RegisterType((*SdkNodeEnumerateWithFiltersResponse)(nil), "openstorage.api.SdkNodeEnumerateWithFiltersResponse") + proto.RegisterType((*SdkFilterNonOverlappingNodesRequest)(nil), "openstorage.api.SdkFilterNonOverlappingNodesRequest") + proto.RegisterType((*SdkFilterNonOverlappingNodesResponse)(nil), "openstorage.api.SdkFilterNonOverlappingNodesResponse") + proto.RegisterType((*SdkObjectstoreInspectRequest)(nil), "openstorage.api.SdkObjectstoreInspectRequest") + proto.RegisterType((*SdkObjectstoreInspectResponse)(nil), "openstorage.api.SdkObjectstoreInspectResponse") + proto.RegisterType((*SdkObjectstoreCreateRequest)(nil), "openstorage.api.SdkObjectstoreCreateRequest") + proto.RegisterType((*SdkObjectstoreCreateResponse)(nil), "openstorage.api.SdkObjectstoreCreateResponse") + proto.RegisterType((*SdkObjectstoreDeleteRequest)(nil), "openstorage.api.SdkObjectstoreDeleteRequest") + proto.RegisterType((*SdkObjectstoreDeleteResponse)(nil), "openstorage.api.SdkObjectstoreDeleteResponse") + proto.RegisterType((*SdkObjectstoreUpdateRequest)(nil), "openstorage.api.SdkObjectstoreUpdateRequest") + proto.RegisterType((*SdkObjectstoreUpdateResponse)(nil), "openstorage.api.SdkObjectstoreUpdateResponse") + proto.RegisterType((*SdkCloudBackupCreateRequest)(nil), "openstorage.api.SdkCloudBackupCreateRequest") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.SdkCloudBackupCreateRequest.LabelsEntry") + proto.RegisterType((*SdkCloudBackupCreateResponse)(nil), "openstorage.api.SdkCloudBackupCreateResponse") + proto.RegisterType((*SdkCloudBackupGroupCreateRequest)(nil), "openstorage.api.SdkCloudBackupGroupCreateRequest") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.SdkCloudBackupGroupCreateRequest.LabelsEntry") + proto.RegisterType((*SdkCloudBackupGroupCreateResponse)(nil), "openstorage.api.SdkCloudBackupGroupCreateResponse") + proto.RegisterType((*SdkCloudBackupRestoreRequest)(nil), "openstorage.api.SdkCloudBackupRestoreRequest") + proto.RegisterType((*SdkCloudBackupRestoreResponse)(nil), "openstorage.api.SdkCloudBackupRestoreResponse") + proto.RegisterType((*SdkCloudBackupDeleteRequest)(nil), "openstorage.api.SdkCloudBackupDeleteRequest") + proto.RegisterType((*SdkCloudBackupDeleteResponse)(nil), "openstorage.api.SdkCloudBackupDeleteResponse") + proto.RegisterType((*SdkCloudBackupDeleteAllRequest)(nil), "openstorage.api.SdkCloudBackupDeleteAllRequest") + proto.RegisterType((*SdkCloudBackupDeleteAllResponse)(nil), "openstorage.api.SdkCloudBackupDeleteAllResponse") + proto.RegisterType((*SdkCloudBackupEnumerateWithFiltersRequest)(nil), "openstorage.api.SdkCloudBackupEnumerateWithFiltersRequest") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.SdkCloudBackupEnumerateWithFiltersRequest.MetadataFilterEntry") + proto.RegisterType((*SdkCloudBackupInfo)(nil), "openstorage.api.SdkCloudBackupInfo") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.SdkCloudBackupInfo.MetadataEntry") + proto.RegisterType((*SdkCloudBackupClusterType)(nil), "openstorage.api.SdkCloudBackupClusterType") + proto.RegisterType((*SdkCloudBackupEnumerateWithFiltersResponse)(nil), "openstorage.api.SdkCloudBackupEnumerateWithFiltersResponse") + proto.RegisterType((*SdkCloudBackupStatus)(nil), "openstorage.api.SdkCloudBackupStatus") + proto.RegisterType((*SdkCloudBackupStatusRequest)(nil), "openstorage.api.SdkCloudBackupStatusRequest") + proto.RegisterType((*SdkCloudBackupStatusResponse)(nil), "openstorage.api.SdkCloudBackupStatusResponse") + proto.RegisterMapType((map[string]*SdkCloudBackupStatus)(nil), "openstorage.api.SdkCloudBackupStatusResponse.StatusesEntry") + proto.RegisterType((*SdkCloudBackupCatalogRequest)(nil), "openstorage.api.SdkCloudBackupCatalogRequest") + proto.RegisterType((*SdkCloudBackupCatalogResponse)(nil), "openstorage.api.SdkCloudBackupCatalogResponse") + proto.RegisterType((*SdkCloudBackupHistoryItem)(nil), "openstorage.api.SdkCloudBackupHistoryItem") + proto.RegisterType((*SdkCloudBackupHistoryRequest)(nil), "openstorage.api.SdkCloudBackupHistoryRequest") + proto.RegisterType((*SdkCloudBackupHistoryResponse)(nil), "openstorage.api.SdkCloudBackupHistoryResponse") + proto.RegisterType((*SdkCloudBackupStateChangeRequest)(nil), "openstorage.api.SdkCloudBackupStateChangeRequest") + proto.RegisterType((*SdkCloudBackupStateChangeResponse)(nil), "openstorage.api.SdkCloudBackupStateChangeResponse") + proto.RegisterType((*SdkCloudBackupScheduleInfo)(nil), "openstorage.api.SdkCloudBackupScheduleInfo") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.SdkCloudBackupScheduleInfo.LabelsEntry") + proto.RegisterType((*SdkCloudBackupSchedCreateRequest)(nil), "openstorage.api.SdkCloudBackupSchedCreateRequest") + proto.RegisterType((*SdkCloudBackupSchedCreateResponse)(nil), "openstorage.api.SdkCloudBackupSchedCreateResponse") + proto.RegisterType((*SdkCloudBackupSchedUpdateRequest)(nil), "openstorage.api.SdkCloudBackupSchedUpdateRequest") + proto.RegisterType((*SdkCloudBackupSchedUpdateResponse)(nil), "openstorage.api.SdkCloudBackupSchedUpdateResponse") + proto.RegisterType((*SdkCloudBackupSchedDeleteRequest)(nil), "openstorage.api.SdkCloudBackupSchedDeleteRequest") + proto.RegisterType((*SdkCloudBackupSchedDeleteResponse)(nil), "openstorage.api.SdkCloudBackupSchedDeleteResponse") + proto.RegisterType((*SdkCloudBackupSchedEnumerateRequest)(nil), "openstorage.api.SdkCloudBackupSchedEnumerateRequest") + proto.RegisterType((*SdkCloudBackupSchedEnumerateResponse)(nil), "openstorage.api.SdkCloudBackupSchedEnumerateResponse") + proto.RegisterMapType((map[string]*SdkCloudBackupScheduleInfo)(nil), "openstorage.api.SdkCloudBackupSchedEnumerateResponse.CloudSchedListEntry") + proto.RegisterType((*SdkCloudBackupSizeRequest)(nil), "openstorage.api.SdkCloudBackupSizeRequest") + proto.RegisterType((*SdkCloudBackupSizeResponse)(nil), "openstorage.api.SdkCloudBackupSizeResponse") + proto.RegisterType((*SdkRule)(nil), "openstorage.api.SdkRule") + proto.RegisterType((*SdkRole)(nil), "openstorage.api.SdkRole") + proto.RegisterType((*SdkRoleCreateRequest)(nil), "openstorage.api.SdkRoleCreateRequest") + proto.RegisterType((*SdkRoleCreateResponse)(nil), "openstorage.api.SdkRoleCreateResponse") + proto.RegisterType((*SdkRoleEnumerateRequest)(nil), "openstorage.api.SdkRoleEnumerateRequest") + proto.RegisterType((*SdkRoleEnumerateResponse)(nil), "openstorage.api.SdkRoleEnumerateResponse") + proto.RegisterType((*SdkRoleInspectRequest)(nil), "openstorage.api.SdkRoleInspectRequest") + proto.RegisterType((*SdkRoleInspectResponse)(nil), "openstorage.api.SdkRoleInspectResponse") + proto.RegisterType((*SdkRoleDeleteRequest)(nil), "openstorage.api.SdkRoleDeleteRequest") + proto.RegisterType((*SdkRoleDeleteResponse)(nil), "openstorage.api.SdkRoleDeleteResponse") + proto.RegisterType((*SdkRoleUpdateRequest)(nil), "openstorage.api.SdkRoleUpdateRequest") + proto.RegisterType((*SdkRoleUpdateResponse)(nil), "openstorage.api.SdkRoleUpdateResponse") + proto.RegisterType((*FilesystemTrim)(nil), "openstorage.api.FilesystemTrim") + proto.RegisterType((*SdkFilesystemTrimStartRequest)(nil), "openstorage.api.SdkFilesystemTrimStartRequest") + proto.RegisterType((*SdkFilesystemTrimStartResponse)(nil), "openstorage.api.SdkFilesystemTrimStartResponse") + proto.RegisterType((*SdkFilesystemTrimStatusRequest)(nil), "openstorage.api.SdkFilesystemTrimStatusRequest") + proto.RegisterType((*SdkFilesystemTrimStatusResponse)(nil), "openstorage.api.SdkFilesystemTrimStatusResponse") + proto.RegisterType((*SdkAutoFSTrimStatusRequest)(nil), "openstorage.api.SdkAutoFSTrimStatusRequest") + proto.RegisterType((*SdkAutoFSTrimStatusResponse)(nil), "openstorage.api.SdkAutoFSTrimStatusResponse") + proto.RegisterMapType((map[string]FilesystemTrim_FilesystemTrimStatus)(nil), "openstorage.api.SdkAutoFSTrimStatusResponse.TrimStatusEntry") + proto.RegisterType((*SdkAutoFSTrimUsageRequest)(nil), "openstorage.api.SdkAutoFSTrimUsageRequest") + proto.RegisterType((*SdkAutoFSTrimUsageResponse)(nil), "openstorage.api.SdkAutoFSTrimUsageResponse") + proto.RegisterMapType((map[string]*FstrimVolumeUsageInfo)(nil), "openstorage.api.SdkAutoFSTrimUsageResponse.UsageEntry") + proto.RegisterType((*SdkFilesystemTrimStopRequest)(nil), "openstorage.api.SdkFilesystemTrimStopRequest") + proto.RegisterType((*SdkFilesystemTrimStopResponse)(nil), "openstorage.api.SdkFilesystemTrimStopResponse") + proto.RegisterType((*SdkAutoFSTrimPushRequest)(nil), "openstorage.api.SdkAutoFSTrimPushRequest") + proto.RegisterType((*SdkAutoFSTrimPushResponse)(nil), "openstorage.api.SdkAutoFSTrimPushResponse") + proto.RegisterType((*SdkAutoFSTrimPopRequest)(nil), "openstorage.api.SdkAutoFSTrimPopRequest") + proto.RegisterType((*SdkAutoFSTrimPopResponse)(nil), "openstorage.api.SdkAutoFSTrimPopResponse") + proto.RegisterType((*SdkVolumeBytesUsedResponse)(nil), "openstorage.api.SdkVolumeBytesUsedResponse") + proto.RegisterType((*SdkVolumeBytesUsedRequest)(nil), "openstorage.api.SdkVolumeBytesUsedRequest") + proto.RegisterType((*FilesystemCheck)(nil), "openstorage.api.FilesystemCheck") + proto.RegisterType((*SdkFilesystemCheckStartRequest)(nil), "openstorage.api.SdkFilesystemCheckStartRequest") + proto.RegisterType((*SdkFilesystemCheckStartResponse)(nil), "openstorage.api.SdkFilesystemCheckStartResponse") + proto.RegisterType((*SdkFilesystemCheckStatusRequest)(nil), "openstorage.api.SdkFilesystemCheckStatusRequest") + proto.RegisterType((*SdkFilesystemCheckStatusResponse)(nil), "openstorage.api.SdkFilesystemCheckStatusResponse") + proto.RegisterType((*SdkFilesystemCheckStopRequest)(nil), "openstorage.api.SdkFilesystemCheckStopRequest") + proto.RegisterType((*SdkFilesystemCheckStopResponse)(nil), "openstorage.api.SdkFilesystemCheckStopResponse") + proto.RegisterType((*SdkIdentityCapabilitiesRequest)(nil), "openstorage.api.SdkIdentityCapabilitiesRequest") + proto.RegisterType((*SdkIdentityCapabilitiesResponse)(nil), "openstorage.api.SdkIdentityCapabilitiesResponse") + proto.RegisterType((*SdkIdentityVersionRequest)(nil), "openstorage.api.SdkIdentityVersionRequest") + proto.RegisterType((*SdkIdentityVersionResponse)(nil), "openstorage.api.SdkIdentityVersionResponse") + proto.RegisterType((*SdkServiceCapability)(nil), "openstorage.api.SdkServiceCapability") + proto.RegisterType((*SdkServiceCapability_OpenStorageService)(nil), "openstorage.api.SdkServiceCapability.OpenStorageService") + proto.RegisterType((*SdkVersion)(nil), "openstorage.api.SdkVersion") + proto.RegisterType((*StorageVersion)(nil), "openstorage.api.StorageVersion") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.StorageVersion.DetailsEntry") + proto.RegisterType((*CloudMigrate)(nil), "openstorage.api.CloudMigrate") + proto.RegisterType((*CloudMigrateStartRequest)(nil), "openstorage.api.CloudMigrateStartRequest") + proto.RegisterType((*SdkCloudMigrateStartRequest)(nil), "openstorage.api.SdkCloudMigrateStartRequest") + proto.RegisterType((*SdkCloudMigrateStartRequest_MigrateVolume)(nil), "openstorage.api.SdkCloudMigrateStartRequest.MigrateVolume") + proto.RegisterType((*SdkCloudMigrateStartRequest_MigrateVolumeGroup)(nil), "openstorage.api.SdkCloudMigrateStartRequest.MigrateVolumeGroup") + proto.RegisterType((*SdkCloudMigrateStartRequest_MigrateAllVolumes)(nil), "openstorage.api.SdkCloudMigrateStartRequest.MigrateAllVolumes") + proto.RegisterType((*CloudMigrateStartResponse)(nil), "openstorage.api.CloudMigrateStartResponse") + proto.RegisterType((*SdkCloudMigrateStartResponse)(nil), "openstorage.api.SdkCloudMigrateStartResponse") + proto.RegisterType((*CloudMigrateCancelRequest)(nil), "openstorage.api.CloudMigrateCancelRequest") + proto.RegisterType((*SdkCloudMigrateCancelRequest)(nil), "openstorage.api.SdkCloudMigrateCancelRequest") + proto.RegisterType((*SdkCloudMigrateCancelResponse)(nil), "openstorage.api.SdkCloudMigrateCancelResponse") + proto.RegisterType((*CloudMigrateInfo)(nil), "openstorage.api.CloudMigrateInfo") + proto.RegisterType((*CloudMigrateInfoList)(nil), "openstorage.api.CloudMigrateInfoList") + proto.RegisterType((*SdkCloudMigrateStatusRequest)(nil), "openstorage.api.SdkCloudMigrateStatusRequest") + proto.RegisterType((*CloudMigrateStatusRequest)(nil), "openstorage.api.CloudMigrateStatusRequest") + proto.RegisterType((*CloudMigrateStatusResponse)(nil), "openstorage.api.CloudMigrateStatusResponse") + proto.RegisterMapType((map[string]*CloudMigrateInfoList)(nil), "openstorage.api.CloudMigrateStatusResponse.InfoEntry") + proto.RegisterType((*SdkCloudMigrateStatusResponse)(nil), "openstorage.api.SdkCloudMigrateStatusResponse") + proto.RegisterType((*ClusterPairMode)(nil), "openstorage.api.ClusterPairMode") + proto.RegisterType((*ClusterPairCreateRequest)(nil), "openstorage.api.ClusterPairCreateRequest") + proto.RegisterType((*ClusterPairCreateResponse)(nil), "openstorage.api.ClusterPairCreateResponse") + proto.RegisterType((*SdkClusterPairCreateRequest)(nil), "openstorage.api.SdkClusterPairCreateRequest") + proto.RegisterType((*SdkClusterPairCreateResponse)(nil), "openstorage.api.SdkClusterPairCreateResponse") + proto.RegisterType((*ClusterPairProcessRequest)(nil), "openstorage.api.ClusterPairProcessRequest") + proto.RegisterType((*ClusterPairProcessResponse)(nil), "openstorage.api.ClusterPairProcessResponse") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.ClusterPairProcessResponse.OptionsEntry") + proto.RegisterType((*SdkClusterPairDeleteRequest)(nil), "openstorage.api.SdkClusterPairDeleteRequest") + proto.RegisterType((*SdkClusterPairDeleteResponse)(nil), "openstorage.api.SdkClusterPairDeleteResponse") + proto.RegisterType((*ClusterPairTokenGetResponse)(nil), "openstorage.api.ClusterPairTokenGetResponse") + proto.RegisterType((*SdkClusterPairGetTokenRequest)(nil), "openstorage.api.SdkClusterPairGetTokenRequest") + proto.RegisterType((*SdkClusterPairGetTokenResponse)(nil), "openstorage.api.SdkClusterPairGetTokenResponse") + proto.RegisterType((*SdkClusterPairResetTokenRequest)(nil), "openstorage.api.SdkClusterPairResetTokenRequest") + proto.RegisterType((*SdkClusterPairResetTokenResponse)(nil), "openstorage.api.SdkClusterPairResetTokenResponse") + proto.RegisterType((*ClusterPairInfo)(nil), "openstorage.api.ClusterPairInfo") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.ClusterPairInfo.OptionsEntry") + proto.RegisterType((*SdkClusterPairInspectRequest)(nil), "openstorage.api.SdkClusterPairInspectRequest") + proto.RegisterType((*ClusterPairGetResponse)(nil), "openstorage.api.ClusterPairGetResponse") + proto.RegisterType((*SdkClusterPairInspectResponse)(nil), "openstorage.api.SdkClusterPairInspectResponse") + proto.RegisterType((*SdkClusterPairEnumerateRequest)(nil), "openstorage.api.SdkClusterPairEnumerateRequest") + proto.RegisterType((*ClusterPairsEnumerateResponse)(nil), "openstorage.api.ClusterPairsEnumerateResponse") + proto.RegisterMapType((map[string]*ClusterPairInfo)(nil), "openstorage.api.ClusterPairsEnumerateResponse.PairsEntry") + proto.RegisterType((*SdkClusterPairEnumerateResponse)(nil), "openstorage.api.SdkClusterPairEnumerateResponse") + proto.RegisterType((*Catalog)(nil), "openstorage.api.Catalog") + proto.RegisterType((*Report)(nil), "openstorage.api.Report") + proto.RegisterType((*CatalogResponse)(nil), "openstorage.api.CatalogResponse") + proto.RegisterType((*LocateResponse)(nil), "openstorage.api.LocateResponse") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.LocateResponse.DockeridsEntry") + proto.RegisterMapType((map[string]string)(nil), "openstorage.api.LocateResponse.MountsEntry") + proto.RegisterType((*VolumePlacementStrategy)(nil), "openstorage.api.VolumePlacementStrategy") + proto.RegisterType((*ReplicaPlacementSpec)(nil), "openstorage.api.ReplicaPlacementSpec") + proto.RegisterType((*VolumePlacementSpec)(nil), "openstorage.api.VolumePlacementSpec") + proto.RegisterType((*LabelSelectorRequirement)(nil), "openstorage.api.LabelSelectorRequirement") + proto.RegisterType((*RestoreVolSnashotSchedule)(nil), "openstorage.api.RestoreVolSnashotSchedule") + proto.RegisterType((*RestoreVolStoragePolicy)(nil), "openstorage.api.RestoreVolStoragePolicy") + proto.RegisterType((*RestoreVolumeSpec)(nil), "openstorage.api.RestoreVolumeSpec") + proto.RegisterType((*SdkVolumeCatalogRequest)(nil), "openstorage.api.SdkVolumeCatalogRequest") + proto.RegisterType((*SdkVolumeCatalogResponse)(nil), "openstorage.api.SdkVolumeCatalogResponse") + proto.RegisterEnum("openstorage.api.Status", Status_name, Status_value) + proto.RegisterEnum("openstorage.api.DriverType", DriverType_name, DriverType_value) + proto.RegisterEnum("openstorage.api.FSType", FSType_name, FSType_value) + proto.RegisterEnum("openstorage.api.GraphDriverChangeType", GraphDriverChangeType_name, GraphDriverChangeType_value) + proto.RegisterEnum("openstorage.api.SeverityType", SeverityType_name, SeverityType_value) + proto.RegisterEnum("openstorage.api.ResourceType", ResourceType_name, ResourceType_value) + proto.RegisterEnum("openstorage.api.AlertActionType", AlertActionType_name, AlertActionType_value) + proto.RegisterEnum("openstorage.api.VolumeActionParam", VolumeActionParam_name, VolumeActionParam_value) + proto.RegisterEnum("openstorage.api.CosType", CosType_name, CosType_value) + proto.RegisterEnum("openstorage.api.IoProfile", IoProfile_name, IoProfile_value) + proto.RegisterEnum("openstorage.api.VolumeState", VolumeState_name, VolumeState_value) + proto.RegisterEnum("openstorage.api.VolumeStatus", VolumeStatus_name, VolumeStatus_value) + proto.RegisterEnum("openstorage.api.FilesystemHealthStatus", FilesystemHealthStatus_name, FilesystemHealthStatus_value) + proto.RegisterEnum("openstorage.api.StorageMedium", StorageMedium_name, StorageMedium_value) + proto.RegisterEnum("openstorage.api.AttachState", AttachState_name, AttachState_value) + proto.RegisterEnum("openstorage.api.OperationFlags", OperationFlags_name, OperationFlags_value) + proto.RegisterEnum("openstorage.api.HardwareType", HardwareType_name, HardwareType_value) + proto.RegisterEnum("openstorage.api.ExportProtocol", ExportProtocol_name, ExportProtocol_value) + proto.RegisterEnum("openstorage.api.ProxyProtocol", ProxyProtocol_name, ProxyProtocol_value) + proto.RegisterEnum("openstorage.api.FastpathStatus", FastpathStatus_name, FastpathStatus_value) + proto.RegisterEnum("openstorage.api.FastpathProtocol", FastpathProtocol_name, FastpathProtocol_value) + proto.RegisterEnum("openstorage.api.NearSyncReplicationStrategy", NearSyncReplicationStrategy_name, NearSyncReplicationStrategy_value) + proto.RegisterEnum("openstorage.api.AnonymousBucketAccessMode", AnonymousBucketAccessMode_name, AnonymousBucketAccessMode_value) + proto.RegisterEnum("openstorage.api.SdkTimeWeekday", SdkTimeWeekday_name, SdkTimeWeekday_value) + proto.RegisterEnum("openstorage.api.StorageRebalanceJobState", StorageRebalanceJobState_name, StorageRebalanceJobState_value) + proto.RegisterEnum("openstorage.api.SdkCloudBackupOpType", SdkCloudBackupOpType_name, SdkCloudBackupOpType_value) + proto.RegisterEnum("openstorage.api.SdkCloudBackupStatusType", SdkCloudBackupStatusType_name, SdkCloudBackupStatusType_value) + proto.RegisterEnum("openstorage.api.SdkCloudBackupRequestedState", SdkCloudBackupRequestedState_name, SdkCloudBackupRequestedState_value) + proto.RegisterEnum("openstorage.api.EnforcementType", EnforcementType_name, EnforcementType_value) + proto.RegisterEnum("openstorage.api.RestoreParamBoolType", RestoreParamBoolType_name, RestoreParamBoolType_value) + proto.RegisterEnum("openstorage.api.Xattr_Value", Xattr_Value_name, Xattr_Value_value) + proto.RegisterEnum("openstorage.api.Sharedv4ServiceSpec_ServiceType", Sharedv4ServiceSpec_ServiceType_name, Sharedv4ServiceSpec_ServiceType_value) + proto.RegisterEnum("openstorage.api.Sharedv4FailoverStrategy_Value", Sharedv4FailoverStrategy_Value_name, Sharedv4FailoverStrategy_Value_value) + proto.RegisterEnum("openstorage.api.ScanPolicy_ScanTrigger", ScanPolicy_ScanTrigger_name, ScanPolicy_ScanTrigger_value) + proto.RegisterEnum("openstorage.api.ScanPolicy_ScanAction", ScanPolicy_ScanAction_name, ScanPolicy_ScanAction_value) + proto.RegisterEnum("openstorage.api.VolumeSpecPolicy_PolicyOp", VolumeSpecPolicy_PolicyOp_name, VolumeSpecPolicy_PolicyOp_value) + proto.RegisterEnum("openstorage.api.Ownership_AccessType", Ownership_AccessType_name, Ownership_AccessType_value) + proto.RegisterEnum("openstorage.api.StorageNode_SecurityStatus", StorageNode_SecurityStatus_name, StorageNode_SecurityStatus_value) + proto.RegisterEnum("openstorage.api.Job_Type", Job_Type_name, Job_Type_value) + proto.RegisterEnum("openstorage.api.Job_State", Job_State_name, Job_State_value) + proto.RegisterEnum("openstorage.api.DiagsCollectionStatus_State", DiagsCollectionStatus_State_name, DiagsCollectionStatus_State_value) + proto.RegisterEnum("openstorage.api.StorageRebalanceTriggerThreshold_Type", StorageRebalanceTriggerThreshold_Type_name, StorageRebalanceTriggerThreshold_Type_value) + proto.RegisterEnum("openstorage.api.StorageRebalanceTriggerThreshold_Metric", StorageRebalanceTriggerThreshold_Metric_name, StorageRebalanceTriggerThreshold_Metric_value) + proto.RegisterEnum("openstorage.api.SdkStorageRebalanceRequest_Mode", SdkStorageRebalanceRequest_Mode_name, SdkStorageRebalanceRequest_Mode_value) + proto.RegisterEnum("openstorage.api.StorageRebalanceWorkSummary_Type", StorageRebalanceWorkSummary_Type_name, StorageRebalanceWorkSummary_Type_value) + proto.RegisterEnum("openstorage.api.StorageRebalanceAudit_StorageRebalanceAction", StorageRebalanceAudit_StorageRebalanceAction_name, StorageRebalanceAudit_StorageRebalanceAction_value) + proto.RegisterEnum("openstorage.api.SdkStoragePool_OperationStatus", SdkStoragePool_OperationStatus_name, SdkStoragePool_OperationStatus_value) + proto.RegisterEnum("openstorage.api.SdkStoragePool_OperationType", SdkStoragePool_OperationType_name, SdkStoragePool_OperationType_value) + proto.RegisterEnum("openstorage.api.SdkStoragePool_ResizeOperationType", SdkStoragePool_ResizeOperationType_name, SdkStoragePool_ResizeOperationType_value) + proto.RegisterEnum("openstorage.api.SdkCloudBackupClusterType_Value", SdkCloudBackupClusterType_Value_name, SdkCloudBackupClusterType_Value_value) + proto.RegisterEnum("openstorage.api.FilesystemTrim_FilesystemTrimStatus", FilesystemTrim_FilesystemTrimStatus_name, FilesystemTrim_FilesystemTrimStatus_value) + proto.RegisterEnum("openstorage.api.FilesystemCheck_FilesystemCheckStatus", FilesystemCheck_FilesystemCheckStatus_name, FilesystemCheck_FilesystemCheckStatus_value) + proto.RegisterEnum("openstorage.api.SdkServiceCapability_OpenStorageService_Type", SdkServiceCapability_OpenStorageService_Type_name, SdkServiceCapability_OpenStorageService_Type_value) + proto.RegisterEnum("openstorage.api.SdkVersion_Version", SdkVersion_Version_name, SdkVersion_Version_value) + proto.RegisterEnum("openstorage.api.CloudMigrate_OperationType", CloudMigrate_OperationType_name, CloudMigrate_OperationType_value) + proto.RegisterEnum("openstorage.api.CloudMigrate_Stage", CloudMigrate_Stage_name, CloudMigrate_Stage_value) + proto.RegisterEnum("openstorage.api.CloudMigrate_Status", CloudMigrate_Status_name, CloudMigrate_Status_value) + proto.RegisterEnum("openstorage.api.ClusterPairMode_Mode", ClusterPairMode_Mode_name, ClusterPairMode_Mode_value) + proto.RegisterEnum("openstorage.api.LabelSelectorRequirement_Operator", LabelSelectorRequirement_Operator_name, LabelSelectorRequirement_Operator_value) } // Reference imports to suppress errors if they are not otherwise used. var _ context.Context -var _ grpc.ClientConnInterface +var _ grpc.ClientConn // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion6 +const _ = grpc.SupportPackageIsVersion4 + +// Client API for OpenStorageAlerts service -// OpenStorageAlertsClient is the client API for OpenStorageAlerts service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type OpenStorageAlertsClient interface { // Allows querying alerts. // @@ -43686,7 +28094,7 @@ type OpenStorageAlertsClient interface { // // #### Input // SdkAlertsEnumerateRequest takes a list of such queries and the returned - // output is a collective output from each of these queries. In that sense, + // output is a collective ouput from each of these queries. In that sense, // the filtering of these queries has a behavior of OR operation. // Each query also has a list of optional options. These options allow // narrowing down the scope of alerts search. These options have a @@ -43721,15 +28129,15 @@ type OpenStorageAlertsClient interface { } type openStorageAlertsClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewOpenStorageAlertsClient(cc grpc.ClientConnInterface) OpenStorageAlertsClient { +func NewOpenStorageAlertsClient(cc *grpc.ClientConn) OpenStorageAlertsClient { return &openStorageAlertsClient{cc} } func (c *openStorageAlertsClient) EnumerateWithFilters(ctx context.Context, in *SdkAlertsEnumerateWithFiltersRequest, opts ...grpc.CallOption) (OpenStorageAlerts_EnumerateWithFiltersClient, error) { - stream, err := c.cc.NewStream(ctx, &_OpenStorageAlerts_serviceDesc.Streams[0], "/openstorage.api.OpenStorageAlerts/EnumerateWithFilters", opts...) + stream, err := grpc.NewClientStream(ctx, &_OpenStorageAlerts_serviceDesc.Streams[0], c.cc, "/openstorage.api.OpenStorageAlerts/EnumerateWithFilters", opts...) if err != nil { return nil, err } @@ -43762,14 +28170,15 @@ func (x *openStorageAlertsEnumerateWithFiltersClient) Recv() (*SdkAlertsEnumerat func (c *openStorageAlertsClient) Delete(ctx context.Context, in *SdkAlertsDeleteRequest, opts ...grpc.CallOption) (*SdkAlertsDeleteResponse, error) { out := new(SdkAlertsDeleteResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageAlerts/Delete", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageAlerts/Delete", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -// OpenStorageAlertsServer is the server API for OpenStorageAlerts service. +// Server API for OpenStorageAlerts service + type OpenStorageAlertsServer interface { // Allows querying alerts. // @@ -43781,7 +28190,7 @@ type OpenStorageAlertsServer interface { // // #### Input // SdkAlertsEnumerateRequest takes a list of such queries and the returned - // output is a collective output from each of these queries. In that sense, + // output is a collective ouput from each of these queries. In that sense, // the filtering of these queries has a behavior of OR operation. // Each query also has a list of optional options. These options allow // narrowing down the scope of alerts search. These options have a @@ -43815,17 +28224,6 @@ type OpenStorageAlertsServer interface { Delete(context.Context, *SdkAlertsDeleteRequest) (*SdkAlertsDeleteResponse, error) } -// UnimplementedOpenStorageAlertsServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStorageAlertsServer struct { -} - -func (*UnimplementedOpenStorageAlertsServer) EnumerateWithFilters(*SdkAlertsEnumerateWithFiltersRequest, OpenStorageAlerts_EnumerateWithFiltersServer) error { - return status.Errorf(codes.Unimplemented, "method EnumerateWithFilters not implemented") -} -func (*UnimplementedOpenStorageAlertsServer) Delete(context.Context, *SdkAlertsDeleteRequest) (*SdkAlertsDeleteResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} - func RegisterOpenStorageAlertsServer(s *grpc.Server, srv OpenStorageAlertsServer) { s.RegisterService(&_OpenStorageAlerts_serviceDesc, srv) } @@ -43888,9 +28286,8 @@ var _OpenStorageAlerts_serviceDesc = grpc.ServiceDesc{ Metadata: "api/api.proto", } -// OpenStorageRoleClient is the client API for OpenStorageRole service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +// Client API for OpenStorageRole service + type OpenStorageRoleClient interface { // Create a role for users in the system Create(ctx context.Context, in *SdkRoleCreateRequest, opts ...grpc.CallOption) (*SdkRoleCreateResponse, error) @@ -43905,16 +28302,16 @@ type OpenStorageRoleClient interface { } type openStorageRoleClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewOpenStorageRoleClient(cc grpc.ClientConnInterface) OpenStorageRoleClient { +func NewOpenStorageRoleClient(cc *grpc.ClientConn) OpenStorageRoleClient { return &openStorageRoleClient{cc} } func (c *openStorageRoleClient) Create(ctx context.Context, in *SdkRoleCreateRequest, opts ...grpc.CallOption) (*SdkRoleCreateResponse, error) { out := new(SdkRoleCreateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageRole/Create", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageRole/Create", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -43923,7 +28320,7 @@ func (c *openStorageRoleClient) Create(ctx context.Context, in *SdkRoleCreateReq func (c *openStorageRoleClient) Enumerate(ctx context.Context, in *SdkRoleEnumerateRequest, opts ...grpc.CallOption) (*SdkRoleEnumerateResponse, error) { out := new(SdkRoleEnumerateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageRole/Enumerate", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageRole/Enumerate", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -43932,7 +28329,7 @@ func (c *openStorageRoleClient) Enumerate(ctx context.Context, in *SdkRoleEnumer func (c *openStorageRoleClient) Inspect(ctx context.Context, in *SdkRoleInspectRequest, opts ...grpc.CallOption) (*SdkRoleInspectResponse, error) { out := new(SdkRoleInspectResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageRole/Inspect", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageRole/Inspect", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -43941,7 +28338,7 @@ func (c *openStorageRoleClient) Inspect(ctx context.Context, in *SdkRoleInspectR func (c *openStorageRoleClient) Delete(ctx context.Context, in *SdkRoleDeleteRequest, opts ...grpc.CallOption) (*SdkRoleDeleteResponse, error) { out := new(SdkRoleDeleteResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageRole/Delete", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageRole/Delete", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -43950,14 +28347,15 @@ func (c *openStorageRoleClient) Delete(ctx context.Context, in *SdkRoleDeleteReq func (c *openStorageRoleClient) Update(ctx context.Context, in *SdkRoleUpdateRequest, opts ...grpc.CallOption) (*SdkRoleUpdateResponse, error) { out := new(SdkRoleUpdateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageRole/Update", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageRole/Update", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -// OpenStorageRoleServer is the server API for OpenStorageRole service. +// Server API for OpenStorageRole service + type OpenStorageRoleServer interface { // Create a role for users in the system Create(context.Context, *SdkRoleCreateRequest) (*SdkRoleCreateResponse, error) @@ -43967,28 +28365,8 @@ type OpenStorageRoleServer interface { Inspect(context.Context, *SdkRoleInspectRequest) (*SdkRoleInspectResponse, error) // Delete an existing role Delete(context.Context, *SdkRoleDeleteRequest) (*SdkRoleDeleteResponse, error) - // Update an existing role - Update(context.Context, *SdkRoleUpdateRequest) (*SdkRoleUpdateResponse, error) -} - -// UnimplementedOpenStorageRoleServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStorageRoleServer struct { -} - -func (*UnimplementedOpenStorageRoleServer) Create(context.Context, *SdkRoleCreateRequest) (*SdkRoleCreateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") -} -func (*UnimplementedOpenStorageRoleServer) Enumerate(context.Context, *SdkRoleEnumerateRequest) (*SdkRoleEnumerateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Enumerate not implemented") -} -func (*UnimplementedOpenStorageRoleServer) Inspect(context.Context, *SdkRoleInspectRequest) (*SdkRoleInspectResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Inspect not implemented") -} -func (*UnimplementedOpenStorageRoleServer) Delete(context.Context, *SdkRoleDeleteRequest) (*SdkRoleDeleteResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} -func (*UnimplementedOpenStorageRoleServer) Update(context.Context, *SdkRoleUpdateRequest) (*SdkRoleUpdateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") + // Update an existing role + Update(context.Context, *SdkRoleUpdateRequest) (*SdkRoleUpdateResponse, error) } func RegisterOpenStorageRoleServer(s *grpc.Server, srv OpenStorageRoleServer) { @@ -44114,9 +28492,8 @@ var _OpenStorageRole_serviceDesc = grpc.ServiceDesc{ Metadata: "api/api.proto", } -// OpenStorageFilesystemTrimClient is the client API for OpenStorageFilesystemTrim service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +// Client API for OpenStorageFilesystemTrim service + type OpenStorageFilesystemTrimClient interface { // Start a filesystem Trim background operation on a mounted volume Start(ctx context.Context, in *SdkFilesystemTrimStartRequest, opts ...grpc.CallOption) (*SdkFilesystemTrimStartResponse, error) @@ -44136,16 +28513,16 @@ type OpenStorageFilesystemTrimClient interface { } type openStorageFilesystemTrimClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewOpenStorageFilesystemTrimClient(cc grpc.ClientConnInterface) OpenStorageFilesystemTrimClient { +func NewOpenStorageFilesystemTrimClient(cc *grpc.ClientConn) OpenStorageFilesystemTrimClient { return &openStorageFilesystemTrimClient{cc} } func (c *openStorageFilesystemTrimClient) Start(ctx context.Context, in *SdkFilesystemTrimStartRequest, opts ...grpc.CallOption) (*SdkFilesystemTrimStartResponse, error) { out := new(SdkFilesystemTrimStartResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemTrim/Start", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemTrim/Start", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -44154,7 +28531,7 @@ func (c *openStorageFilesystemTrimClient) Start(ctx context.Context, in *SdkFile func (c *openStorageFilesystemTrimClient) Status(ctx context.Context, in *SdkFilesystemTrimStatusRequest, opts ...grpc.CallOption) (*SdkFilesystemTrimStatusResponse, error) { out := new(SdkFilesystemTrimStatusResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemTrim/Status", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemTrim/Status", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -44163,7 +28540,7 @@ func (c *openStorageFilesystemTrimClient) Status(ctx context.Context, in *SdkFil func (c *openStorageFilesystemTrimClient) AutoFSTrimStatus(ctx context.Context, in *SdkAutoFSTrimStatusRequest, opts ...grpc.CallOption) (*SdkAutoFSTrimStatusResponse, error) { out := new(SdkAutoFSTrimStatusResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemTrim/AutoFSTrimStatus", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemTrim/AutoFSTrimStatus", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -44172,7 +28549,7 @@ func (c *openStorageFilesystemTrimClient) AutoFSTrimStatus(ctx context.Context, func (c *openStorageFilesystemTrimClient) AutoFSTrimUsage(ctx context.Context, in *SdkAutoFSTrimUsageRequest, opts ...grpc.CallOption) (*SdkAutoFSTrimUsageResponse, error) { out := new(SdkAutoFSTrimUsageResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemTrim/AutoFSTrimUsage", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemTrim/AutoFSTrimUsage", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -44181,7 +28558,7 @@ func (c *openStorageFilesystemTrimClient) AutoFSTrimUsage(ctx context.Context, i func (c *openStorageFilesystemTrimClient) Stop(ctx context.Context, in *SdkFilesystemTrimStopRequest, opts ...grpc.CallOption) (*SdkFilesystemTrimStopResponse, error) { out := new(SdkFilesystemTrimStopResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemTrim/Stop", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemTrim/Stop", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -44190,7 +28567,7 @@ func (c *openStorageFilesystemTrimClient) Stop(ctx context.Context, in *SdkFiles func (c *openStorageFilesystemTrimClient) AutoFSTrimPush(ctx context.Context, in *SdkAutoFSTrimPushRequest, opts ...grpc.CallOption) (*SdkAutoFSTrimPushResponse, error) { out := new(SdkAutoFSTrimPushResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemTrim/AutoFSTrimPush", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemTrim/AutoFSTrimPush", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -44199,14 +28576,15 @@ func (c *openStorageFilesystemTrimClient) AutoFSTrimPush(ctx context.Context, in func (c *openStorageFilesystemTrimClient) AutoFSTrimPop(ctx context.Context, in *SdkAutoFSTrimPopRequest, opts ...grpc.CallOption) (*SdkAutoFSTrimPopResponse, error) { out := new(SdkAutoFSTrimPopResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemTrim/AutoFSTrimPop", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemTrim/AutoFSTrimPop", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -// OpenStorageFilesystemTrimServer is the server API for OpenStorageFilesystemTrim service. +// Server API for OpenStorageFilesystemTrim service + type OpenStorageFilesystemTrimServer interface { // Start a filesystem Trim background operation on a mounted volume Start(context.Context, *SdkFilesystemTrimStartRequest) (*SdkFilesystemTrimStartResponse, error) @@ -44225,32 +28603,6 @@ type OpenStorageFilesystemTrimServer interface { AutoFSTrimPop(context.Context, *SdkAutoFSTrimPopRequest) (*SdkAutoFSTrimPopResponse, error) } -// UnimplementedOpenStorageFilesystemTrimServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStorageFilesystemTrimServer struct { -} - -func (*UnimplementedOpenStorageFilesystemTrimServer) Start(context.Context, *SdkFilesystemTrimStartRequest) (*SdkFilesystemTrimStartResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Start not implemented") -} -func (*UnimplementedOpenStorageFilesystemTrimServer) Status(context.Context, *SdkFilesystemTrimStatusRequest) (*SdkFilesystemTrimStatusResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Status not implemented") -} -func (*UnimplementedOpenStorageFilesystemTrimServer) AutoFSTrimStatus(context.Context, *SdkAutoFSTrimStatusRequest) (*SdkAutoFSTrimStatusResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AutoFSTrimStatus not implemented") -} -func (*UnimplementedOpenStorageFilesystemTrimServer) AutoFSTrimUsage(context.Context, *SdkAutoFSTrimUsageRequest) (*SdkAutoFSTrimUsageResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AutoFSTrimUsage not implemented") -} -func (*UnimplementedOpenStorageFilesystemTrimServer) Stop(context.Context, *SdkFilesystemTrimStopRequest) (*SdkFilesystemTrimStopResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Stop not implemented") -} -func (*UnimplementedOpenStorageFilesystemTrimServer) AutoFSTrimPush(context.Context, *SdkAutoFSTrimPushRequest) (*SdkAutoFSTrimPushResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AutoFSTrimPush not implemented") -} -func (*UnimplementedOpenStorageFilesystemTrimServer) AutoFSTrimPop(context.Context, *SdkAutoFSTrimPopRequest) (*SdkAutoFSTrimPopResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AutoFSTrimPop not implemented") -} - func RegisterOpenStorageFilesystemTrimServer(s *grpc.Server, srv OpenStorageFilesystemTrimServer) { s.RegisterService(&_OpenStorageFilesystemTrim_serviceDesc, srv) } @@ -44418,9 +28770,8 @@ var _OpenStorageFilesystemTrim_serviceDesc = grpc.ServiceDesc{ Metadata: "api/api.proto", } -// OpenStorageFilesystemCheckClient is the client API for OpenStorageFilesystemCheck service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +// Client API for OpenStorageFilesystemCheck service + type OpenStorageFilesystemCheckClient interface { // Start a filesystem-check background operation on a unmounted volume. Start(ctx context.Context, in *SdkFilesystemCheckStartRequest, opts ...grpc.CallOption) (*SdkFilesystemCheckStartResponse, error) @@ -44429,25 +28780,19 @@ type OpenStorageFilesystemCheckClient interface { Status(ctx context.Context, in *SdkFilesystemCheckStatusRequest, opts ...grpc.CallOption) (*SdkFilesystemCheckStatusResponse, error) // Stop a filesystem check background operation on an unmounted volume, if any Stop(ctx context.Context, in *SdkFilesystemCheckStopRequest, opts ...grpc.CallOption) (*SdkFilesystemCheckStopResponse, error) - // List all fsck created snapshots on volume - ListSnapshots(ctx context.Context, in *SdkFilesystemCheckListSnapshotsRequest, opts ...grpc.CallOption) (*SdkFilesystemCheckListSnapshotsResponse, error) - // Delete all fsck created snapshots on volume - DeleteSnapshots(ctx context.Context, in *SdkFilesystemCheckDeleteSnapshotsRequest, opts ...grpc.CallOption) (*SdkFilesystemCheckDeleteSnapshotsResponse, error) - // List of all volumes which require fsck check/fix to be run - ListVolumes(ctx context.Context, in *SdkFilesystemCheckListVolumesRequest, opts ...grpc.CallOption) (*SdkFilesystemCheckListVolumesResponse, error) } type openStorageFilesystemCheckClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewOpenStorageFilesystemCheckClient(cc grpc.ClientConnInterface) OpenStorageFilesystemCheckClient { +func NewOpenStorageFilesystemCheckClient(cc *grpc.ClientConn) OpenStorageFilesystemCheckClient { return &openStorageFilesystemCheckClient{cc} } func (c *openStorageFilesystemCheckClient) Start(ctx context.Context, in *SdkFilesystemCheckStartRequest, opts ...grpc.CallOption) (*SdkFilesystemCheckStartResponse, error) { out := new(SdkFilesystemCheckStartResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemCheck/Start", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemCheck/Start", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -44456,7 +28801,7 @@ func (c *openStorageFilesystemCheckClient) Start(ctx context.Context, in *SdkFil func (c *openStorageFilesystemCheckClient) Status(ctx context.Context, in *SdkFilesystemCheckStatusRequest, opts ...grpc.CallOption) (*SdkFilesystemCheckStatusResponse, error) { out := new(SdkFilesystemCheckStatusResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemCheck/Status", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemCheck/Status", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -44465,41 +28810,15 @@ func (c *openStorageFilesystemCheckClient) Status(ctx context.Context, in *SdkFi func (c *openStorageFilesystemCheckClient) Stop(ctx context.Context, in *SdkFilesystemCheckStopRequest, opts ...grpc.CallOption) (*SdkFilesystemCheckStopResponse, error) { out := new(SdkFilesystemCheckStopResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemCheck/Stop", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *openStorageFilesystemCheckClient) ListSnapshots(ctx context.Context, in *SdkFilesystemCheckListSnapshotsRequest, opts ...grpc.CallOption) (*SdkFilesystemCheckListSnapshotsResponse, error) { - out := new(SdkFilesystemCheckListSnapshotsResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemCheck/ListSnapshots", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *openStorageFilesystemCheckClient) DeleteSnapshots(ctx context.Context, in *SdkFilesystemCheckDeleteSnapshotsRequest, opts ...grpc.CallOption) (*SdkFilesystemCheckDeleteSnapshotsResponse, error) { - out := new(SdkFilesystemCheckDeleteSnapshotsResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemCheck/DeleteSnapshots", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemCheck/Stop", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -func (c *openStorageFilesystemCheckClient) ListVolumes(ctx context.Context, in *SdkFilesystemCheckListVolumesRequest, opts ...grpc.CallOption) (*SdkFilesystemCheckListVolumesResponse, error) { - out := new(SdkFilesystemCheckListVolumesResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageFilesystemCheck/ListVolumes", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} +// Server API for OpenStorageFilesystemCheck service -// OpenStorageFilesystemCheckServer is the server API for OpenStorageFilesystemCheck service. type OpenStorageFilesystemCheckServer interface { // Start a filesystem-check background operation on a unmounted volume. Start(context.Context, *SdkFilesystemCheckStartRequest) (*SdkFilesystemCheckStartResponse, error) @@ -44508,35 +28827,6 @@ type OpenStorageFilesystemCheckServer interface { Status(context.Context, *SdkFilesystemCheckStatusRequest) (*SdkFilesystemCheckStatusResponse, error) // Stop a filesystem check background operation on an unmounted volume, if any Stop(context.Context, *SdkFilesystemCheckStopRequest) (*SdkFilesystemCheckStopResponse, error) - // List all fsck created snapshots on volume - ListSnapshots(context.Context, *SdkFilesystemCheckListSnapshotsRequest) (*SdkFilesystemCheckListSnapshotsResponse, error) - // Delete all fsck created snapshots on volume - DeleteSnapshots(context.Context, *SdkFilesystemCheckDeleteSnapshotsRequest) (*SdkFilesystemCheckDeleteSnapshotsResponse, error) - // List of all volumes which require fsck check/fix to be run - ListVolumes(context.Context, *SdkFilesystemCheckListVolumesRequest) (*SdkFilesystemCheckListVolumesResponse, error) -} - -// UnimplementedOpenStorageFilesystemCheckServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStorageFilesystemCheckServer struct { -} - -func (*UnimplementedOpenStorageFilesystemCheckServer) Start(context.Context, *SdkFilesystemCheckStartRequest) (*SdkFilesystemCheckStartResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Start not implemented") -} -func (*UnimplementedOpenStorageFilesystemCheckServer) Status(context.Context, *SdkFilesystemCheckStatusRequest) (*SdkFilesystemCheckStatusResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Status not implemented") -} -func (*UnimplementedOpenStorageFilesystemCheckServer) Stop(context.Context, *SdkFilesystemCheckStopRequest) (*SdkFilesystemCheckStopResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Stop not implemented") -} -func (*UnimplementedOpenStorageFilesystemCheckServer) ListSnapshots(context.Context, *SdkFilesystemCheckListSnapshotsRequest) (*SdkFilesystemCheckListSnapshotsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListSnapshots not implemented") -} -func (*UnimplementedOpenStorageFilesystemCheckServer) DeleteSnapshots(context.Context, *SdkFilesystemCheckDeleteSnapshotsRequest) (*SdkFilesystemCheckDeleteSnapshotsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteSnapshots not implemented") -} -func (*UnimplementedOpenStorageFilesystemCheckServer) ListVolumes(context.Context, *SdkFilesystemCheckListVolumesRequest) (*SdkFilesystemCheckListVolumesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListVolumes not implemented") } func RegisterOpenStorageFilesystemCheckServer(s *grpc.Server, srv OpenStorageFilesystemCheckServer) { @@ -44597,60 +28887,6 @@ func _OpenStorageFilesystemCheck_Stop_Handler(srv interface{}, ctx context.Conte return interceptor(ctx, in, info, handler) } -func _OpenStorageFilesystemCheck_ListSnapshots_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SdkFilesystemCheckListSnapshotsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OpenStorageFilesystemCheckServer).ListSnapshots(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/openstorage.api.OpenStorageFilesystemCheck/ListSnapshots", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OpenStorageFilesystemCheckServer).ListSnapshots(ctx, req.(*SdkFilesystemCheckListSnapshotsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OpenStorageFilesystemCheck_DeleteSnapshots_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SdkFilesystemCheckDeleteSnapshotsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OpenStorageFilesystemCheckServer).DeleteSnapshots(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/openstorage.api.OpenStorageFilesystemCheck/DeleteSnapshots", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OpenStorageFilesystemCheckServer).DeleteSnapshots(ctx, req.(*SdkFilesystemCheckDeleteSnapshotsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OpenStorageFilesystemCheck_ListVolumes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SdkFilesystemCheckListVolumesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OpenStorageFilesystemCheckServer).ListVolumes(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/openstorage.api.OpenStorageFilesystemCheck/ListVolumes", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OpenStorageFilesystemCheckServer).ListVolumes(ctx, req.(*SdkFilesystemCheckListVolumesRequest)) - } - return interceptor(ctx, in, info, handler) -} - var _OpenStorageFilesystemCheck_serviceDesc = grpc.ServiceDesc{ ServiceName: "openstorage.api.OpenStorageFilesystemCheck", HandlerType: (*OpenStorageFilesystemCheckServer)(nil), @@ -44667,26 +28903,13 @@ var _OpenStorageFilesystemCheck_serviceDesc = grpc.ServiceDesc{ MethodName: "Stop", Handler: _OpenStorageFilesystemCheck_Stop_Handler, }, - { - MethodName: "ListSnapshots", - Handler: _OpenStorageFilesystemCheck_ListSnapshots_Handler, - }, - { - MethodName: "DeleteSnapshots", - Handler: _OpenStorageFilesystemCheck_DeleteSnapshots_Handler, - }, - { - MethodName: "ListVolumes", - Handler: _OpenStorageFilesystemCheck_ListVolumes_Handler, - }, }, Streams: []grpc.StreamDesc{}, Metadata: "api/api.proto", } -// OpenStorageIdentityClient is the client API for OpenStorageIdentity service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +// Client API for OpenStorageIdentity service + type OpenStorageIdentityClient interface { // Capabilities returns the supported services by the cluster. // This allows SDK implementations to advertise their supported @@ -44699,16 +28922,16 @@ type OpenStorageIdentityClient interface { } type openStorageIdentityClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewOpenStorageIdentityClient(cc grpc.ClientConnInterface) OpenStorageIdentityClient { +func NewOpenStorageIdentityClient(cc *grpc.ClientConn) OpenStorageIdentityClient { return &openStorageIdentityClient{cc} } func (c *openStorageIdentityClient) Capabilities(ctx context.Context, in *SdkIdentityCapabilitiesRequest, opts ...grpc.CallOption) (*SdkIdentityCapabilitiesResponse, error) { out := new(SdkIdentityCapabilitiesResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageIdentity/Capabilities", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageIdentity/Capabilities", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -44717,14 +28940,15 @@ func (c *openStorageIdentityClient) Capabilities(ctx context.Context, in *SdkIde func (c *openStorageIdentityClient) Version(ctx context.Context, in *SdkIdentityVersionRequest, opts ...grpc.CallOption) (*SdkIdentityVersionResponse, error) { out := new(SdkIdentityVersionResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageIdentity/Version", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageIdentity/Version", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -// OpenStorageIdentityServer is the server API for OpenStorageIdentity service. +// Server API for OpenStorageIdentity service + type OpenStorageIdentityServer interface { // Capabilities returns the supported services by the cluster. // This allows SDK implementations to advertise their supported @@ -44736,17 +28960,6 @@ type OpenStorageIdentityServer interface { Version(context.Context, *SdkIdentityVersionRequest) (*SdkIdentityVersionResponse, error) } -// UnimplementedOpenStorageIdentityServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStorageIdentityServer struct { -} - -func (*UnimplementedOpenStorageIdentityServer) Capabilities(context.Context, *SdkIdentityCapabilitiesRequest) (*SdkIdentityCapabilitiesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Capabilities not implemented") -} -func (*UnimplementedOpenStorageIdentityServer) Version(context.Context, *SdkIdentityVersionRequest) (*SdkIdentityVersionResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Version not implemented") -} - func RegisterOpenStorageIdentityServer(s *grpc.Server, srv OpenStorageIdentityServer) { s.RegisterService(&_OpenStorageIdentity_serviceDesc, srv) } @@ -44804,45 +29017,37 @@ var _OpenStorageIdentity_serviceDesc = grpc.ServiceDesc{ Metadata: "api/api.proto", } -// OpenStorageClusterClient is the client API for OpenStorageCluster service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +// Client API for OpenStorageCluster service + type OpenStorageClusterClient interface { // InspectCurrent returns information about the current cluster InspectCurrent(ctx context.Context, in *SdkClusterInspectCurrentRequest, opts ...grpc.CallOption) (*SdkClusterInspectCurrentResponse, error) } type openStorageClusterClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewOpenStorageClusterClient(cc grpc.ClientConnInterface) OpenStorageClusterClient { +func NewOpenStorageClusterClient(cc *grpc.ClientConn) OpenStorageClusterClient { return &openStorageClusterClient{cc} } func (c *openStorageClusterClient) InspectCurrent(ctx context.Context, in *SdkClusterInspectCurrentRequest, opts ...grpc.CallOption) (*SdkClusterInspectCurrentResponse, error) { out := new(SdkClusterInspectCurrentResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCluster/InspectCurrent", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCluster/InspectCurrent", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -// OpenStorageClusterServer is the server API for OpenStorageCluster service. +// Server API for OpenStorageCluster service + type OpenStorageClusterServer interface { // InspectCurrent returns information about the current cluster InspectCurrent(context.Context, *SdkClusterInspectCurrentRequest) (*SdkClusterInspectCurrentResponse, error) } -// UnimplementedOpenStorageClusterServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStorageClusterServer struct { -} - -func (*UnimplementedOpenStorageClusterServer) InspectCurrent(context.Context, *SdkClusterInspectCurrentRequest) (*SdkClusterInspectCurrentResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method InspectCurrent not implemented") -} - func RegisterOpenStorageClusterServer(s *grpc.Server, srv OpenStorageClusterServer) { s.RegisterService(&_OpenStorageCluster_serviceDesc, srv) } @@ -44878,9 +29083,8 @@ var _OpenStorageCluster_serviceDesc = grpc.ServiceDesc{ Metadata: "api/api.proto", } -// OpenStorageClusterPairClient is the client API for OpenStorageClusterPair service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +// Client API for OpenStorageClusterPair service + type OpenStorageClusterPairClient interface { // Creates Pair with a remote cluster and returns details about the remote cluster // @@ -44909,16 +29113,16 @@ type OpenStorageClusterPairClient interface { } type openStorageClusterPairClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewOpenStorageClusterPairClient(cc grpc.ClientConnInterface) OpenStorageClusterPairClient { +func NewOpenStorageClusterPairClient(cc *grpc.ClientConn) OpenStorageClusterPairClient { return &openStorageClusterPairClient{cc} } func (c *openStorageClusterPairClient) Create(ctx context.Context, in *SdkClusterPairCreateRequest, opts ...grpc.CallOption) (*SdkClusterPairCreateResponse, error) { out := new(SdkClusterPairCreateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageClusterPair/Create", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageClusterPair/Create", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -44927,7 +29131,7 @@ func (c *openStorageClusterPairClient) Create(ctx context.Context, in *SdkCluste func (c *openStorageClusterPairClient) Inspect(ctx context.Context, in *SdkClusterPairInspectRequest, opts ...grpc.CallOption) (*SdkClusterPairInspectResponse, error) { out := new(SdkClusterPairInspectResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageClusterPair/Inspect", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageClusterPair/Inspect", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -44936,7 +29140,7 @@ func (c *openStorageClusterPairClient) Inspect(ctx context.Context, in *SdkClust func (c *openStorageClusterPairClient) Enumerate(ctx context.Context, in *SdkClusterPairEnumerateRequest, opts ...grpc.CallOption) (*SdkClusterPairEnumerateResponse, error) { out := new(SdkClusterPairEnumerateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageClusterPair/Enumerate", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageClusterPair/Enumerate", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -44945,7 +29149,7 @@ func (c *openStorageClusterPairClient) Enumerate(ctx context.Context, in *SdkClu func (c *openStorageClusterPairClient) GetToken(ctx context.Context, in *SdkClusterPairGetTokenRequest, opts ...grpc.CallOption) (*SdkClusterPairGetTokenResponse, error) { out := new(SdkClusterPairGetTokenResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageClusterPair/GetToken", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageClusterPair/GetToken", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -44954,7 +29158,7 @@ func (c *openStorageClusterPairClient) GetToken(ctx context.Context, in *SdkClus func (c *openStorageClusterPairClient) ResetToken(ctx context.Context, in *SdkClusterPairResetTokenRequest, opts ...grpc.CallOption) (*SdkClusterPairResetTokenResponse, error) { out := new(SdkClusterPairResetTokenResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageClusterPair/ResetToken", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageClusterPair/ResetToken", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -44963,14 +29167,15 @@ func (c *openStorageClusterPairClient) ResetToken(ctx context.Context, in *SdkCl func (c *openStorageClusterPairClient) Delete(ctx context.Context, in *SdkClusterPairDeleteRequest, opts ...grpc.CallOption) (*SdkClusterPairDeleteResponse, error) { out := new(SdkClusterPairDeleteResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageClusterPair/Delete", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageClusterPair/Delete", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -// OpenStorageClusterPairServer is the server API for OpenStorageClusterPair service. +// Server API for OpenStorageClusterPair service + type OpenStorageClusterPairServer interface { // Creates Pair with a remote cluster and returns details about the remote cluster // @@ -44998,29 +29203,6 @@ type OpenStorageClusterPairServer interface { Delete(context.Context, *SdkClusterPairDeleteRequest) (*SdkClusterPairDeleteResponse, error) } -// UnimplementedOpenStorageClusterPairServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStorageClusterPairServer struct { -} - -func (*UnimplementedOpenStorageClusterPairServer) Create(context.Context, *SdkClusterPairCreateRequest) (*SdkClusterPairCreateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") -} -func (*UnimplementedOpenStorageClusterPairServer) Inspect(context.Context, *SdkClusterPairInspectRequest) (*SdkClusterPairInspectResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Inspect not implemented") -} -func (*UnimplementedOpenStorageClusterPairServer) Enumerate(context.Context, *SdkClusterPairEnumerateRequest) (*SdkClusterPairEnumerateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Enumerate not implemented") -} -func (*UnimplementedOpenStorageClusterPairServer) GetToken(context.Context, *SdkClusterPairGetTokenRequest) (*SdkClusterPairGetTokenResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetToken not implemented") -} -func (*UnimplementedOpenStorageClusterPairServer) ResetToken(context.Context, *SdkClusterPairResetTokenRequest) (*SdkClusterPairResetTokenResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ResetToken not implemented") -} -func (*UnimplementedOpenStorageClusterPairServer) Delete(context.Context, *SdkClusterPairDeleteRequest) (*SdkClusterPairDeleteResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} - func RegisterOpenStorageClusterPairServer(s *grpc.Server, srv OpenStorageClusterPairServer) { s.RegisterService(&_OpenStorageClusterPair_serviceDesc, srv) } @@ -45166,9 +29348,8 @@ var _OpenStorageClusterPair_serviceDesc = grpc.ServiceDesc{ Metadata: "api/api.proto", } -// OpenStorageClusterDomainsClient is the client API for OpenStorageClusterDomains service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +// Client API for OpenStorageClusterDomains service + type OpenStorageClusterDomainsClient interface { // Enumerate returns names of all the cluster domains in the cluster Enumerate(ctx context.Context, in *SdkClusterDomainsEnumerateRequest, opts ...grpc.CallOption) (*SdkClusterDomainsEnumerateResponse, error) @@ -45186,16 +29367,16 @@ type OpenStorageClusterDomainsClient interface { } type openStorageClusterDomainsClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewOpenStorageClusterDomainsClient(cc grpc.ClientConnInterface) OpenStorageClusterDomainsClient { +func NewOpenStorageClusterDomainsClient(cc *grpc.ClientConn) OpenStorageClusterDomainsClient { return &openStorageClusterDomainsClient{cc} } func (c *openStorageClusterDomainsClient) Enumerate(ctx context.Context, in *SdkClusterDomainsEnumerateRequest, opts ...grpc.CallOption) (*SdkClusterDomainsEnumerateResponse, error) { out := new(SdkClusterDomainsEnumerateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageClusterDomains/Enumerate", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageClusterDomains/Enumerate", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -45204,7 +29385,7 @@ func (c *openStorageClusterDomainsClient) Enumerate(ctx context.Context, in *Sdk func (c *openStorageClusterDomainsClient) Inspect(ctx context.Context, in *SdkClusterDomainInspectRequest, opts ...grpc.CallOption) (*SdkClusterDomainInspectResponse, error) { out := new(SdkClusterDomainInspectResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageClusterDomains/Inspect", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageClusterDomains/Inspect", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -45213,7 +29394,7 @@ func (c *openStorageClusterDomainsClient) Inspect(ctx context.Context, in *SdkCl func (c *openStorageClusterDomainsClient) Activate(ctx context.Context, in *SdkClusterDomainActivateRequest, opts ...grpc.CallOption) (*SdkClusterDomainActivateResponse, error) { out := new(SdkClusterDomainActivateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageClusterDomains/Activate", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageClusterDomains/Activate", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -45222,14 +29403,15 @@ func (c *openStorageClusterDomainsClient) Activate(ctx context.Context, in *SdkC func (c *openStorageClusterDomainsClient) Deactivate(ctx context.Context, in *SdkClusterDomainDeactivateRequest, opts ...grpc.CallOption) (*SdkClusterDomainDeactivateResponse, error) { out := new(SdkClusterDomainDeactivateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageClusterDomains/Deactivate", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageClusterDomains/Deactivate", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -// OpenStorageClusterDomainsServer is the server API for OpenStorageClusterDomains service. +// Server API for OpenStorageClusterDomains service + type OpenStorageClusterDomainsServer interface { // Enumerate returns names of all the cluster domains in the cluster Enumerate(context.Context, *SdkClusterDomainsEnumerateRequest) (*SdkClusterDomainsEnumerateResponse, error) @@ -45246,23 +29428,6 @@ type OpenStorageClusterDomainsServer interface { Deactivate(context.Context, *SdkClusterDomainDeactivateRequest) (*SdkClusterDomainDeactivateResponse, error) } -// UnimplementedOpenStorageClusterDomainsServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStorageClusterDomainsServer struct { -} - -func (*UnimplementedOpenStorageClusterDomainsServer) Enumerate(context.Context, *SdkClusterDomainsEnumerateRequest) (*SdkClusterDomainsEnumerateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Enumerate not implemented") -} -func (*UnimplementedOpenStorageClusterDomainsServer) Inspect(context.Context, *SdkClusterDomainInspectRequest) (*SdkClusterDomainInspectResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Inspect not implemented") -} -func (*UnimplementedOpenStorageClusterDomainsServer) Activate(context.Context, *SdkClusterDomainActivateRequest) (*SdkClusterDomainActivateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Activate not implemented") -} -func (*UnimplementedOpenStorageClusterDomainsServer) Deactivate(context.Context, *SdkClusterDomainDeactivateRequest) (*SdkClusterDomainDeactivateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Deactivate not implemented") -} - func RegisterOpenStorageClusterDomainsServer(s *grpc.Server, srv OpenStorageClusterDomainsServer) { s.RegisterService(&_OpenStorageClusterDomains_serviceDesc, srv) } @@ -45364,9 +29529,8 @@ var _OpenStorageClusterDomains_serviceDesc = grpc.ServiceDesc{ Metadata: "api/api.proto", } -// OpenStoragePoolClient is the client API for OpenStoragePool service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +// Client API for OpenStoragePool service + type OpenStoragePoolClient interface { // Resize expands the specified storage pool based on the request parameters Resize(ctx context.Context, in *SdkStoragePoolResizeRequest, opts ...grpc.CallOption) (*SdkStoragePoolResizeResponse, error) @@ -45382,25 +29546,19 @@ type OpenStoragePoolClient interface { GetRebalanceJobStatus(ctx context.Context, in *SdkGetRebalanceJobStatusRequest, opts ...grpc.CallOption) (*SdkGetRebalanceJobStatusResponse, error) // EnumerateRebalanceJobs returns all rebalance jobs currently known to the system EnumerateRebalanceJobs(ctx context.Context, in *SdkEnumerateRebalanceJobsRequest, opts ...grpc.CallOption) (*SdkEnumerateRebalanceJobsResponse, error) - // CreateRebalanceSchedule creates a scheudle for the input rebalance requests - CreateRebalanceSchedule(ctx context.Context, in *SdkCreateRebalanceScheduleRequest, opts ...grpc.CallOption) (*SdkCreateRebalanceScheduleResponse, error) - // GetRebalanceSchedule returns the information of rebalance schedule - GetRebalanceSchedule(ctx context.Context, in *SdkGetRebalanceScheduleRequest, opts ...grpc.CallOption) (*SdkGetRebalanceScheduleResponse, error) - // DeleteRebalanceSchedule deletes the rebalance schedule - DeleteRebalanceSchedule(ctx context.Context, in *SdkDeleteRebalanceScheduleRequest, opts ...grpc.CallOption) (*SdkDeleteRebalanceScheduleResponse, error) } type openStoragePoolClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewOpenStoragePoolClient(cc grpc.ClientConnInterface) OpenStoragePoolClient { +func NewOpenStoragePoolClient(cc *grpc.ClientConn) OpenStoragePoolClient { return &openStoragePoolClient{cc} } func (c *openStoragePoolClient) Resize(ctx context.Context, in *SdkStoragePoolResizeRequest, opts ...grpc.CallOption) (*SdkStoragePoolResizeResponse, error) { out := new(SdkStoragePoolResizeResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStoragePool/Resize", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStoragePool/Resize", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -45409,7 +29567,7 @@ func (c *openStoragePoolClient) Resize(ctx context.Context, in *SdkStoragePoolRe func (c *openStoragePoolClient) Rebalance(ctx context.Context, in *SdkStorageRebalanceRequest, opts ...grpc.CallOption) (*SdkStorageRebalanceResponse, error) { out := new(SdkStorageRebalanceResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStoragePool/Rebalance", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStoragePool/Rebalance", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -45418,7 +29576,7 @@ func (c *openStoragePoolClient) Rebalance(ctx context.Context, in *SdkStorageReb func (c *openStoragePoolClient) UpdateRebalanceJobState(ctx context.Context, in *SdkUpdateRebalanceJobRequest, opts ...grpc.CallOption) (*SdkUpdateRebalanceJobResponse, error) { out := new(SdkUpdateRebalanceJobResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStoragePool/UpdateRebalanceJobState", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStoragePool/UpdateRebalanceJobState", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -45427,7 +29585,7 @@ func (c *openStoragePoolClient) UpdateRebalanceJobState(ctx context.Context, in func (c *openStoragePoolClient) GetRebalanceJobStatus(ctx context.Context, in *SdkGetRebalanceJobStatusRequest, opts ...grpc.CallOption) (*SdkGetRebalanceJobStatusResponse, error) { out := new(SdkGetRebalanceJobStatusResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStoragePool/GetRebalanceJobStatus", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStoragePool/GetRebalanceJobStatus", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -45436,41 +29594,15 @@ func (c *openStoragePoolClient) GetRebalanceJobStatus(ctx context.Context, in *S func (c *openStoragePoolClient) EnumerateRebalanceJobs(ctx context.Context, in *SdkEnumerateRebalanceJobsRequest, opts ...grpc.CallOption) (*SdkEnumerateRebalanceJobsResponse, error) { out := new(SdkEnumerateRebalanceJobsResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStoragePool/EnumerateRebalanceJobs", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *openStoragePoolClient) CreateRebalanceSchedule(ctx context.Context, in *SdkCreateRebalanceScheduleRequest, opts ...grpc.CallOption) (*SdkCreateRebalanceScheduleResponse, error) { - out := new(SdkCreateRebalanceScheduleResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStoragePool/CreateRebalanceSchedule", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *openStoragePoolClient) GetRebalanceSchedule(ctx context.Context, in *SdkGetRebalanceScheduleRequest, opts ...grpc.CallOption) (*SdkGetRebalanceScheduleResponse, error) { - out := new(SdkGetRebalanceScheduleResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStoragePool/GetRebalanceSchedule", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStoragePool/EnumerateRebalanceJobs", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -func (c *openStoragePoolClient) DeleteRebalanceSchedule(ctx context.Context, in *SdkDeleteRebalanceScheduleRequest, opts ...grpc.CallOption) (*SdkDeleteRebalanceScheduleResponse, error) { - out := new(SdkDeleteRebalanceScheduleResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStoragePool/DeleteRebalanceSchedule", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} +// Server API for OpenStoragePool service -// OpenStoragePoolServer is the server API for OpenStoragePool service. type OpenStoragePoolServer interface { // Resize expands the specified storage pool based on the request parameters Resize(context.Context, *SdkStoragePoolResizeRequest) (*SdkStoragePoolResizeResponse, error) @@ -45486,41 +29618,6 @@ type OpenStoragePoolServer interface { GetRebalanceJobStatus(context.Context, *SdkGetRebalanceJobStatusRequest) (*SdkGetRebalanceJobStatusResponse, error) // EnumerateRebalanceJobs returns all rebalance jobs currently known to the system EnumerateRebalanceJobs(context.Context, *SdkEnumerateRebalanceJobsRequest) (*SdkEnumerateRebalanceJobsResponse, error) - // CreateRebalanceSchedule creates a scheudle for the input rebalance requests - CreateRebalanceSchedule(context.Context, *SdkCreateRebalanceScheduleRequest) (*SdkCreateRebalanceScheduleResponse, error) - // GetRebalanceSchedule returns the information of rebalance schedule - GetRebalanceSchedule(context.Context, *SdkGetRebalanceScheduleRequest) (*SdkGetRebalanceScheduleResponse, error) - // DeleteRebalanceSchedule deletes the rebalance schedule - DeleteRebalanceSchedule(context.Context, *SdkDeleteRebalanceScheduleRequest) (*SdkDeleteRebalanceScheduleResponse, error) -} - -// UnimplementedOpenStoragePoolServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStoragePoolServer struct { -} - -func (*UnimplementedOpenStoragePoolServer) Resize(context.Context, *SdkStoragePoolResizeRequest) (*SdkStoragePoolResizeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Resize not implemented") -} -func (*UnimplementedOpenStoragePoolServer) Rebalance(context.Context, *SdkStorageRebalanceRequest) (*SdkStorageRebalanceResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Rebalance not implemented") -} -func (*UnimplementedOpenStoragePoolServer) UpdateRebalanceJobState(context.Context, *SdkUpdateRebalanceJobRequest) (*SdkUpdateRebalanceJobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateRebalanceJobState not implemented") -} -func (*UnimplementedOpenStoragePoolServer) GetRebalanceJobStatus(context.Context, *SdkGetRebalanceJobStatusRequest) (*SdkGetRebalanceJobStatusResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetRebalanceJobStatus not implemented") -} -func (*UnimplementedOpenStoragePoolServer) EnumerateRebalanceJobs(context.Context, *SdkEnumerateRebalanceJobsRequest) (*SdkEnumerateRebalanceJobsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method EnumerateRebalanceJobs not implemented") -} -func (*UnimplementedOpenStoragePoolServer) CreateRebalanceSchedule(context.Context, *SdkCreateRebalanceScheduleRequest) (*SdkCreateRebalanceScheduleResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateRebalanceSchedule not implemented") -} -func (*UnimplementedOpenStoragePoolServer) GetRebalanceSchedule(context.Context, *SdkGetRebalanceScheduleRequest) (*SdkGetRebalanceScheduleResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetRebalanceSchedule not implemented") -} -func (*UnimplementedOpenStoragePoolServer) DeleteRebalanceSchedule(context.Context, *SdkDeleteRebalanceScheduleRequest) (*SdkDeleteRebalanceScheduleResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteRebalanceSchedule not implemented") } func RegisterOpenStoragePoolServer(s *grpc.Server, srv OpenStoragePoolServer) { @@ -45617,60 +29714,6 @@ func _OpenStoragePool_EnumerateRebalanceJobs_Handler(srv interface{}, ctx contex return interceptor(ctx, in, info, handler) } -func _OpenStoragePool_CreateRebalanceSchedule_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SdkCreateRebalanceScheduleRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OpenStoragePoolServer).CreateRebalanceSchedule(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/openstorage.api.OpenStoragePool/CreateRebalanceSchedule", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OpenStoragePoolServer).CreateRebalanceSchedule(ctx, req.(*SdkCreateRebalanceScheduleRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OpenStoragePool_GetRebalanceSchedule_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SdkGetRebalanceScheduleRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OpenStoragePoolServer).GetRebalanceSchedule(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/openstorage.api.OpenStoragePool/GetRebalanceSchedule", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OpenStoragePoolServer).GetRebalanceSchedule(ctx, req.(*SdkGetRebalanceScheduleRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OpenStoragePool_DeleteRebalanceSchedule_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SdkDeleteRebalanceScheduleRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OpenStoragePoolServer).DeleteRebalanceSchedule(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/openstorage.api.OpenStoragePool/DeleteRebalanceSchedule", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OpenStoragePoolServer).DeleteRebalanceSchedule(ctx, req.(*SdkDeleteRebalanceScheduleRequest)) - } - return interceptor(ctx, in, info, handler) -} - var _OpenStoragePool_serviceDesc = grpc.ServiceDesc{ ServiceName: "openstorage.api.OpenStoragePool", HandlerType: (*OpenStoragePoolServer)(nil), @@ -45695,26 +29738,13 @@ var _OpenStoragePool_serviceDesc = grpc.ServiceDesc{ MethodName: "EnumerateRebalanceJobs", Handler: _OpenStoragePool_EnumerateRebalanceJobs_Handler, }, - { - MethodName: "CreateRebalanceSchedule", - Handler: _OpenStoragePool_CreateRebalanceSchedule_Handler, - }, - { - MethodName: "GetRebalanceSchedule", - Handler: _OpenStoragePool_GetRebalanceSchedule_Handler, - }, - { - MethodName: "DeleteRebalanceSchedule", - Handler: _OpenStoragePool_DeleteRebalanceSchedule_Handler, - }, }, Streams: []grpc.StreamDesc{}, Metadata: "api/api.proto", } -// OpenStorageDiagsClient is the client API for OpenStorageDiags service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +// Client API for OpenStorageDiags service + type OpenStorageDiagsClient interface { // Collect starts a job to collect diagnostics from set of nodes that are selected based on the selectors provided // in the SdkDiagsCollectRequest. See SdkDiagsCollectRequest for more details on how to select the nodes @@ -45723,23 +29753,24 @@ type OpenStorageDiagsClient interface { } type openStorageDiagsClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewOpenStorageDiagsClient(cc grpc.ClientConnInterface) OpenStorageDiagsClient { +func NewOpenStorageDiagsClient(cc *grpc.ClientConn) OpenStorageDiagsClient { return &openStorageDiagsClient{cc} } func (c *openStorageDiagsClient) Collect(ctx context.Context, in *SdkDiagsCollectRequest, opts ...grpc.CallOption) (*SdkDiagsCollectResponse, error) { out := new(SdkDiagsCollectResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageDiags/Collect", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageDiags/Collect", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -// OpenStorageDiagsServer is the server API for OpenStorageDiags service. +// Server API for OpenStorageDiags service + type OpenStorageDiagsServer interface { // Collect starts a job to collect diagnostics from set of nodes that are selected based on the selectors provided // in the SdkDiagsCollectRequest. See SdkDiagsCollectRequest for more details on how to select the nodes @@ -45747,14 +29778,6 @@ type OpenStorageDiagsServer interface { Collect(context.Context, *SdkDiagsCollectRequest) (*SdkDiagsCollectResponse, error) } -// UnimplementedOpenStorageDiagsServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStorageDiagsServer struct { -} - -func (*UnimplementedOpenStorageDiagsServer) Collect(context.Context, *SdkDiagsCollectRequest) (*SdkDiagsCollectResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Collect not implemented") -} - func RegisterOpenStorageDiagsServer(s *grpc.Server, srv OpenStorageDiagsServer) { s.RegisterService(&_OpenStorageDiags_serviceDesc, srv) } @@ -45790,9 +29813,8 @@ var _OpenStorageDiags_serviceDesc = grpc.ServiceDesc{ Metadata: "api/api.proto", } -// OpenStorageJobClient is the client API for OpenStorageJob service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +// Client API for OpenStorageJob service + type OpenStorageJobClient interface { // Update updates an existing job's state // Only acceptable state values are @@ -45807,16 +29829,16 @@ type OpenStorageJobClient interface { } type openStorageJobClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewOpenStorageJobClient(cc grpc.ClientConnInterface) OpenStorageJobClient { +func NewOpenStorageJobClient(cc *grpc.ClientConn) OpenStorageJobClient { return &openStorageJobClient{cc} } func (c *openStorageJobClient) Update(ctx context.Context, in *SdkUpdateJobRequest, opts ...grpc.CallOption) (*SdkUpdateJobResponse, error) { out := new(SdkUpdateJobResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageJob/Update", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageJob/Update", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -45825,7 +29847,7 @@ func (c *openStorageJobClient) Update(ctx context.Context, in *SdkUpdateJobReque func (c *openStorageJobClient) GetStatus(ctx context.Context, in *SdkGetJobStatusRequest, opts ...grpc.CallOption) (*SdkGetJobStatusResponse, error) { out := new(SdkGetJobStatusResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageJob/GetStatus", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageJob/GetStatus", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -45834,14 +29856,15 @@ func (c *openStorageJobClient) GetStatus(ctx context.Context, in *SdkGetJobStatu func (c *openStorageJobClient) Enumerate(ctx context.Context, in *SdkEnumerateJobsRequest, opts ...grpc.CallOption) (*SdkEnumerateJobsResponse, error) { out := new(SdkEnumerateJobsResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageJob/Enumerate", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageJob/Enumerate", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -// OpenStorageJobServer is the server API for OpenStorageJob service. +// Server API for OpenStorageJob service + type OpenStorageJobServer interface { // Update updates an existing job's state // Only acceptable state values are @@ -45855,20 +29878,6 @@ type OpenStorageJobServer interface { Enumerate(context.Context, *SdkEnumerateJobsRequest) (*SdkEnumerateJobsResponse, error) } -// UnimplementedOpenStorageJobServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStorageJobServer struct { -} - -func (*UnimplementedOpenStorageJobServer) Update(context.Context, *SdkUpdateJobRequest) (*SdkUpdateJobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") -} -func (*UnimplementedOpenStorageJobServer) GetStatus(context.Context, *SdkGetJobStatusRequest) (*SdkGetJobStatusResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetStatus not implemented") -} -func (*UnimplementedOpenStorageJobServer) Enumerate(context.Context, *SdkEnumerateJobsRequest) (*SdkEnumerateJobsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Enumerate not implemented") -} - func RegisterOpenStorageJobServer(s *grpc.Server, srv OpenStorageJobServer) { s.RegisterService(&_OpenStorageJob_serviceDesc, srv) } @@ -45948,9 +29957,8 @@ var _OpenStorageJob_serviceDesc = grpc.ServiceDesc{ Metadata: "api/api.proto", } -// OpenStorageNodeClient is the client API for OpenStorageNode service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +// Client API for OpenStorageNode service + type OpenStorageNodeClient interface { // Inspect returns information about the specified node Inspect(ctx context.Context, in *SdkNodeInspectRequest, opts ...grpc.CallOption) (*SdkNodeInspectResponse, error) @@ -45963,8 +29971,6 @@ type OpenStorageNodeClient interface { EnumerateWithFilters(ctx context.Context, in *SdkNodeEnumerateWithFiltersRequest, opts ...grpc.CallOption) (*SdkNodeEnumerateWithFiltersResponse, error) // Returns capacity usage of all volumes/snaps for a give node VolumeUsageByNode(ctx context.Context, in *SdkNodeVolumeUsageByNodeRequest, opts ...grpc.CallOption) (*SdkNodeVolumeUsageByNodeResponse, error) - // Triggers RelaxedReclaim purge for a give node - RelaxedReclaimPurge(ctx context.Context, in *SdkNodeRelaxedReclaimPurgeRequest, opts ...grpc.CallOption) (*SdkNodeRelaxedReclaimPurgeResponse, error) // DrainAttachments creates a task to drain volume attachments // from the provided node in the cluster. DrainAttachments(ctx context.Context, in *SdkNodeDrainAttachmentsRequest, opts ...grpc.CallOption) (*SdkJobResponse, error) @@ -45977,19 +29983,21 @@ type OpenStorageNodeClient interface { UncordonAttachments(ctx context.Context, in *SdkNodeUncordonAttachmentsRequest, opts ...grpc.CallOption) (*SdkNodeUncordonAttachmentsResponse, error) // Returns bytes used of multiple volumes for a give node VolumeBytesUsedByNode(ctx context.Context, in *SdkVolumeBytesUsedRequest, opts ...grpc.CallOption) (*SdkVolumeBytesUsedResponse, error) + // Returns a subset of nodes which do not share replicas of any volume in the cluster. + FilterNonOverlappingNodes(ctx context.Context, in *SdkFilterNonOverlappingNodesRequest, opts ...grpc.CallOption) (*SdkFilterNonOverlappingNodesResponse, error) } type openStorageNodeClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewOpenStorageNodeClient(cc grpc.ClientConnInterface) OpenStorageNodeClient { +func NewOpenStorageNodeClient(cc *grpc.ClientConn) OpenStorageNodeClient { return &openStorageNodeClient{cc} } func (c *openStorageNodeClient) Inspect(ctx context.Context, in *SdkNodeInspectRequest, opts ...grpc.CallOption) (*SdkNodeInspectResponse, error) { out := new(SdkNodeInspectResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageNode/Inspect", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageNode/Inspect", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -45998,7 +30006,7 @@ func (c *openStorageNodeClient) Inspect(ctx context.Context, in *SdkNodeInspectR func (c *openStorageNodeClient) InspectCurrent(ctx context.Context, in *SdkNodeInspectCurrentRequest, opts ...grpc.CallOption) (*SdkNodeInspectCurrentResponse, error) { out := new(SdkNodeInspectCurrentResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageNode/InspectCurrent", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageNode/InspectCurrent", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46007,7 +30015,7 @@ func (c *openStorageNodeClient) InspectCurrent(ctx context.Context, in *SdkNodeI func (c *openStorageNodeClient) Enumerate(ctx context.Context, in *SdkNodeEnumerateRequest, opts ...grpc.CallOption) (*SdkNodeEnumerateResponse, error) { out := new(SdkNodeEnumerateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageNode/Enumerate", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageNode/Enumerate", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46016,7 +30024,7 @@ func (c *openStorageNodeClient) Enumerate(ctx context.Context, in *SdkNodeEnumer func (c *openStorageNodeClient) EnumerateWithFilters(ctx context.Context, in *SdkNodeEnumerateWithFiltersRequest, opts ...grpc.CallOption) (*SdkNodeEnumerateWithFiltersResponse, error) { out := new(SdkNodeEnumerateWithFiltersResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageNode/EnumerateWithFilters", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageNode/EnumerateWithFilters", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46025,16 +30033,7 @@ func (c *openStorageNodeClient) EnumerateWithFilters(ctx context.Context, in *Sd func (c *openStorageNodeClient) VolumeUsageByNode(ctx context.Context, in *SdkNodeVolumeUsageByNodeRequest, opts ...grpc.CallOption) (*SdkNodeVolumeUsageByNodeResponse, error) { out := new(SdkNodeVolumeUsageByNodeResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageNode/VolumeUsageByNode", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *openStorageNodeClient) RelaxedReclaimPurge(ctx context.Context, in *SdkNodeRelaxedReclaimPurgeRequest, opts ...grpc.CallOption) (*SdkNodeRelaxedReclaimPurgeResponse, error) { - out := new(SdkNodeRelaxedReclaimPurgeResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageNode/RelaxedReclaimPurge", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageNode/VolumeUsageByNode", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46043,7 +30042,7 @@ func (c *openStorageNodeClient) RelaxedReclaimPurge(ctx context.Context, in *Sdk func (c *openStorageNodeClient) DrainAttachments(ctx context.Context, in *SdkNodeDrainAttachmentsRequest, opts ...grpc.CallOption) (*SdkJobResponse, error) { out := new(SdkJobResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageNode/DrainAttachments", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageNode/DrainAttachments", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46052,7 +30051,7 @@ func (c *openStorageNodeClient) DrainAttachments(ctx context.Context, in *SdkNod func (c *openStorageNodeClient) CordonAttachments(ctx context.Context, in *SdkNodeCordonAttachmentsRequest, opts ...grpc.CallOption) (*SdkNodeCordonAttachmentsResponse, error) { out := new(SdkNodeCordonAttachmentsResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageNode/CordonAttachments", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageNode/CordonAttachments", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46061,7 +30060,7 @@ func (c *openStorageNodeClient) CordonAttachments(ctx context.Context, in *SdkNo func (c *openStorageNodeClient) UncordonAttachments(ctx context.Context, in *SdkNodeUncordonAttachmentsRequest, opts ...grpc.CallOption) (*SdkNodeUncordonAttachmentsResponse, error) { out := new(SdkNodeUncordonAttachmentsResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageNode/UncordonAttachments", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageNode/UncordonAttachments", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46070,14 +30069,24 @@ func (c *openStorageNodeClient) UncordonAttachments(ctx context.Context, in *Sdk func (c *openStorageNodeClient) VolumeBytesUsedByNode(ctx context.Context, in *SdkVolumeBytesUsedRequest, opts ...grpc.CallOption) (*SdkVolumeBytesUsedResponse, error) { out := new(SdkVolumeBytesUsedResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageNode/VolumeBytesUsedByNode", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageNode/VolumeBytesUsedByNode", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -// OpenStorageNodeServer is the server API for OpenStorageNode service. +func (c *openStorageNodeClient) FilterNonOverlappingNodes(ctx context.Context, in *SdkFilterNonOverlappingNodesRequest, opts ...grpc.CallOption) (*SdkFilterNonOverlappingNodesResponse, error) { + out := new(SdkFilterNonOverlappingNodesResponse) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageNode/FilterNonOverlappingNodes", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for OpenStorageNode service + type OpenStorageNodeServer interface { // Inspect returns information about the specified node Inspect(context.Context, *SdkNodeInspectRequest) (*SdkNodeInspectResponse, error) @@ -46090,55 +30099,20 @@ type OpenStorageNodeServer interface { EnumerateWithFilters(context.Context, *SdkNodeEnumerateWithFiltersRequest) (*SdkNodeEnumerateWithFiltersResponse, error) // Returns capacity usage of all volumes/snaps for a give node VolumeUsageByNode(context.Context, *SdkNodeVolumeUsageByNodeRequest) (*SdkNodeVolumeUsageByNodeResponse, error) - // Triggers RelaxedReclaim purge for a give node - RelaxedReclaimPurge(context.Context, *SdkNodeRelaxedReclaimPurgeRequest) (*SdkNodeRelaxedReclaimPurgeResponse, error) - // DrainAttachments creates a task to drain volume attachments - // from the provided node in the cluster. - DrainAttachments(context.Context, *SdkNodeDrainAttachmentsRequest) (*SdkJobResponse, error) - // CordonAttachments disables any new volume attachments - // from the provided node in the cluster. Existing volume attachments - // will stay on the node. - CordonAttachments(context.Context, *SdkNodeCordonAttachmentsRequest) (*SdkNodeCordonAttachmentsResponse, error) - // UncordonAttachments re-enables volume attachments - // on the provided node in the cluster. - UncordonAttachments(context.Context, *SdkNodeUncordonAttachmentsRequest) (*SdkNodeUncordonAttachmentsResponse, error) - // Returns bytes used of multiple volumes for a give node - VolumeBytesUsedByNode(context.Context, *SdkVolumeBytesUsedRequest) (*SdkVolumeBytesUsedResponse, error) -} - -// UnimplementedOpenStorageNodeServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStorageNodeServer struct { -} - -func (*UnimplementedOpenStorageNodeServer) Inspect(context.Context, *SdkNodeInspectRequest) (*SdkNodeInspectResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Inspect not implemented") -} -func (*UnimplementedOpenStorageNodeServer) InspectCurrent(context.Context, *SdkNodeInspectCurrentRequest) (*SdkNodeInspectCurrentResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method InspectCurrent not implemented") -} -func (*UnimplementedOpenStorageNodeServer) Enumerate(context.Context, *SdkNodeEnumerateRequest) (*SdkNodeEnumerateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Enumerate not implemented") -} -func (*UnimplementedOpenStorageNodeServer) EnumerateWithFilters(context.Context, *SdkNodeEnumerateWithFiltersRequest) (*SdkNodeEnumerateWithFiltersResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method EnumerateWithFilters not implemented") -} -func (*UnimplementedOpenStorageNodeServer) VolumeUsageByNode(context.Context, *SdkNodeVolumeUsageByNodeRequest) (*SdkNodeVolumeUsageByNodeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method VolumeUsageByNode not implemented") -} -func (*UnimplementedOpenStorageNodeServer) RelaxedReclaimPurge(context.Context, *SdkNodeRelaxedReclaimPurgeRequest) (*SdkNodeRelaxedReclaimPurgeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RelaxedReclaimPurge not implemented") -} -func (*UnimplementedOpenStorageNodeServer) DrainAttachments(context.Context, *SdkNodeDrainAttachmentsRequest) (*SdkJobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DrainAttachments not implemented") -} -func (*UnimplementedOpenStorageNodeServer) CordonAttachments(context.Context, *SdkNodeCordonAttachmentsRequest) (*SdkNodeCordonAttachmentsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CordonAttachments not implemented") -} -func (*UnimplementedOpenStorageNodeServer) UncordonAttachments(context.Context, *SdkNodeUncordonAttachmentsRequest) (*SdkNodeUncordonAttachmentsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UncordonAttachments not implemented") -} -func (*UnimplementedOpenStorageNodeServer) VolumeBytesUsedByNode(context.Context, *SdkVolumeBytesUsedRequest) (*SdkVolumeBytesUsedResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method VolumeBytesUsedByNode not implemented") + // DrainAttachments creates a task to drain volume attachments + // from the provided node in the cluster. + DrainAttachments(context.Context, *SdkNodeDrainAttachmentsRequest) (*SdkJobResponse, error) + // CordonAttachments disables any new volume attachments + // from the provided node in the cluster. Existing volume attachments + // will stay on the node. + CordonAttachments(context.Context, *SdkNodeCordonAttachmentsRequest) (*SdkNodeCordonAttachmentsResponse, error) + // UncordonAttachments re-enables volume attachments + // on the provided node in the cluster. + UncordonAttachments(context.Context, *SdkNodeUncordonAttachmentsRequest) (*SdkNodeUncordonAttachmentsResponse, error) + // Returns bytes used of multiple volumes for a give node + VolumeBytesUsedByNode(context.Context, *SdkVolumeBytesUsedRequest) (*SdkVolumeBytesUsedResponse, error) + // Returns a subset of nodes which do not share replicas of any volume in the cluster. + FilterNonOverlappingNodes(context.Context, *SdkFilterNonOverlappingNodesRequest) (*SdkFilterNonOverlappingNodesResponse, error) } func RegisterOpenStorageNodeServer(s *grpc.Server, srv OpenStorageNodeServer) { @@ -46235,24 +30209,6 @@ func _OpenStorageNode_VolumeUsageByNode_Handler(srv interface{}, ctx context.Con return interceptor(ctx, in, info, handler) } -func _OpenStorageNode_RelaxedReclaimPurge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SdkNodeRelaxedReclaimPurgeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OpenStorageNodeServer).RelaxedReclaimPurge(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/openstorage.api.OpenStorageNode/RelaxedReclaimPurge", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OpenStorageNodeServer).RelaxedReclaimPurge(ctx, req.(*SdkNodeRelaxedReclaimPurgeRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _OpenStorageNode_DrainAttachments_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SdkNodeDrainAttachmentsRequest) if err := dec(in); err != nil { @@ -46325,6 +30281,24 @@ func _OpenStorageNode_VolumeBytesUsedByNode_Handler(srv interface{}, ctx context return interceptor(ctx, in, info, handler) } +func _OpenStorageNode_FilterNonOverlappingNodes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SdkFilterNonOverlappingNodesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OpenStorageNodeServer).FilterNonOverlappingNodes(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/openstorage.api.OpenStorageNode/FilterNonOverlappingNodes", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OpenStorageNodeServer).FilterNonOverlappingNodes(ctx, req.(*SdkFilterNonOverlappingNodesRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _OpenStorageNode_serviceDesc = grpc.ServiceDesc{ ServiceName: "openstorage.api.OpenStorageNode", HandlerType: (*OpenStorageNodeServer)(nil), @@ -46349,10 +30323,6 @@ var _OpenStorageNode_serviceDesc = grpc.ServiceDesc{ MethodName: "VolumeUsageByNode", Handler: _OpenStorageNode_VolumeUsageByNode_Handler, }, - { - MethodName: "RelaxedReclaimPurge", - Handler: _OpenStorageNode_RelaxedReclaimPurge_Handler, - }, { MethodName: "DrainAttachments", Handler: _OpenStorageNode_DrainAttachments_Handler, @@ -46369,14 +30339,17 @@ var _OpenStorageNode_serviceDesc = grpc.ServiceDesc{ MethodName: "VolumeBytesUsedByNode", Handler: _OpenStorageNode_VolumeBytesUsedByNode_Handler, }, + { + MethodName: "FilterNonOverlappingNodes", + Handler: _OpenStorageNode_FilterNonOverlappingNodes_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "api/api.proto", } -// OpenStorageBucketClient is the client API for OpenStorageBucket service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +// Client API for OpenStorageBucket service + type OpenStorageBucketClient interface { Create(ctx context.Context, in *BucketCreateRequest, opts ...grpc.CallOption) (*BucketCreateResponse, error) Delete(ctx context.Context, in *BucketDeleteRequest, opts ...grpc.CallOption) (*BucketDeleteResponse, error) @@ -46385,16 +30358,16 @@ type OpenStorageBucketClient interface { } type openStorageBucketClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewOpenStorageBucketClient(cc grpc.ClientConnInterface) OpenStorageBucketClient { +func NewOpenStorageBucketClient(cc *grpc.ClientConn) OpenStorageBucketClient { return &openStorageBucketClient{cc} } func (c *openStorageBucketClient) Create(ctx context.Context, in *BucketCreateRequest, opts ...grpc.CallOption) (*BucketCreateResponse, error) { out := new(BucketCreateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageBucket/Create", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageBucket/Create", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46403,7 +30376,7 @@ func (c *openStorageBucketClient) Create(ctx context.Context, in *BucketCreateRe func (c *openStorageBucketClient) Delete(ctx context.Context, in *BucketDeleteRequest, opts ...grpc.CallOption) (*BucketDeleteResponse, error) { out := new(BucketDeleteResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageBucket/Delete", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageBucket/Delete", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46412,7 +30385,7 @@ func (c *openStorageBucketClient) Delete(ctx context.Context, in *BucketDeleteRe func (c *openStorageBucketClient) GrantAccess(ctx context.Context, in *BucketGrantAccessRequest, opts ...grpc.CallOption) (*BucketGrantAccessResponse, error) { out := new(BucketGrantAccessResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageBucket/GrantAccess", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageBucket/GrantAccess", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46421,14 +30394,15 @@ func (c *openStorageBucketClient) GrantAccess(ctx context.Context, in *BucketGra func (c *openStorageBucketClient) RevokeAccess(ctx context.Context, in *BucketRevokeAccessRequest, opts ...grpc.CallOption) (*BucketRevokeAccessResponse, error) { out := new(BucketRevokeAccessResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageBucket/RevokeAccess", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageBucket/RevokeAccess", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -// OpenStorageBucketServer is the server API for OpenStorageBucket service. +// Server API for OpenStorageBucket service + type OpenStorageBucketServer interface { Create(context.Context, *BucketCreateRequest) (*BucketCreateResponse, error) Delete(context.Context, *BucketDeleteRequest) (*BucketDeleteResponse, error) @@ -46436,23 +30410,6 @@ type OpenStorageBucketServer interface { RevokeAccess(context.Context, *BucketRevokeAccessRequest) (*BucketRevokeAccessResponse, error) } -// UnimplementedOpenStorageBucketServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStorageBucketServer struct { -} - -func (*UnimplementedOpenStorageBucketServer) Create(context.Context, *BucketCreateRequest) (*BucketCreateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") -} -func (*UnimplementedOpenStorageBucketServer) Delete(context.Context, *BucketDeleteRequest) (*BucketDeleteResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} -func (*UnimplementedOpenStorageBucketServer) GrantAccess(context.Context, *BucketGrantAccessRequest) (*BucketGrantAccessResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GrantAccess not implemented") -} -func (*UnimplementedOpenStorageBucketServer) RevokeAccess(context.Context, *BucketRevokeAccessRequest) (*BucketRevokeAccessResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RevokeAccess not implemented") -} - func RegisterOpenStorageBucketServer(s *grpc.Server, srv OpenStorageBucketServer) { s.RegisterService(&_OpenStorageBucket_serviceDesc, srv) } @@ -46554,9 +30511,8 @@ var _OpenStorageBucket_serviceDesc = grpc.ServiceDesc{ Metadata: "api/api.proto", } -// OpenStorageVolumeClient is the client API for OpenStorageVolume service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +// Client API for OpenStorageVolume service + type OpenStorageVolumeClient interface { // Create creates a volume according to the specification provided // @@ -46634,7 +30590,7 @@ type OpenStorageVolumeClient interface { SnapshotEnumerate(ctx context.Context, in *SdkVolumeSnapshotEnumerateRequest, opts ...grpc.CallOption) (*SdkVolumeSnapshotEnumerateResponse, error) // SnapshotEnumerate returns a list of snapshots. // To filter all the snapshots for a specific volume which may no longer exist, - // specify a volume id. + // specifiy a volume id. // Labels can also be used to filter the snapshot list. // If neither are provided all snapshots will be returned. SnapshotEnumerateWithFilters(ctx context.Context, in *SdkVolumeSnapshotEnumerateWithFiltersRequest, opts ...grpc.CallOption) (*SdkVolumeSnapshotEnumerateWithFiltersResponse, error) @@ -46651,16 +30607,16 @@ type OpenStorageVolumeClient interface { } type openStorageVolumeClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewOpenStorageVolumeClient(cc grpc.ClientConnInterface) OpenStorageVolumeClient { +func NewOpenStorageVolumeClient(cc *grpc.ClientConn) OpenStorageVolumeClient { return &openStorageVolumeClient{cc} } func (c *openStorageVolumeClient) Create(ctx context.Context, in *SdkVolumeCreateRequest, opts ...grpc.CallOption) (*SdkVolumeCreateResponse, error) { out := new(SdkVolumeCreateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/Create", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/Create", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46669,7 +30625,7 @@ func (c *openStorageVolumeClient) Create(ctx context.Context, in *SdkVolumeCreat func (c *openStorageVolumeClient) Clone(ctx context.Context, in *SdkVolumeCloneRequest, opts ...grpc.CallOption) (*SdkVolumeCloneResponse, error) { out := new(SdkVolumeCloneResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/Clone", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/Clone", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46678,7 +30634,7 @@ func (c *openStorageVolumeClient) Clone(ctx context.Context, in *SdkVolumeCloneR func (c *openStorageVolumeClient) Delete(ctx context.Context, in *SdkVolumeDeleteRequest, opts ...grpc.CallOption) (*SdkVolumeDeleteResponse, error) { out := new(SdkVolumeDeleteResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/Delete", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/Delete", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46687,7 +30643,7 @@ func (c *openStorageVolumeClient) Delete(ctx context.Context, in *SdkVolumeDelet func (c *openStorageVolumeClient) Inspect(ctx context.Context, in *SdkVolumeInspectRequest, opts ...grpc.CallOption) (*SdkVolumeInspectResponse, error) { out := new(SdkVolumeInspectResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/Inspect", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/Inspect", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46696,7 +30652,7 @@ func (c *openStorageVolumeClient) Inspect(ctx context.Context, in *SdkVolumeInsp func (c *openStorageVolumeClient) InspectWithFilters(ctx context.Context, in *SdkVolumeInspectWithFiltersRequest, opts ...grpc.CallOption) (*SdkVolumeInspectWithFiltersResponse, error) { out := new(SdkVolumeInspectWithFiltersResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/InspectWithFilters", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/InspectWithFilters", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46705,7 +30661,7 @@ func (c *openStorageVolumeClient) InspectWithFilters(ctx context.Context, in *Sd func (c *openStorageVolumeClient) Update(ctx context.Context, in *SdkVolumeUpdateRequest, opts ...grpc.CallOption) (*SdkVolumeUpdateResponse, error) { out := new(SdkVolumeUpdateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/Update", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/Update", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46714,7 +30670,7 @@ func (c *openStorageVolumeClient) Update(ctx context.Context, in *SdkVolumeUpdat func (c *openStorageVolumeClient) Stats(ctx context.Context, in *SdkVolumeStatsRequest, opts ...grpc.CallOption) (*SdkVolumeStatsResponse, error) { out := new(SdkVolumeStatsResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/Stats", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/Stats", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46723,7 +30679,7 @@ func (c *openStorageVolumeClient) Stats(ctx context.Context, in *SdkVolumeStatsR func (c *openStorageVolumeClient) CapacityUsage(ctx context.Context, in *SdkVolumeCapacityUsageRequest, opts ...grpc.CallOption) (*SdkVolumeCapacityUsageResponse, error) { out := new(SdkVolumeCapacityUsageResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/CapacityUsage", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/CapacityUsage", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46732,7 +30688,7 @@ func (c *openStorageVolumeClient) CapacityUsage(ctx context.Context, in *SdkVolu func (c *openStorageVolumeClient) Enumerate(ctx context.Context, in *SdkVolumeEnumerateRequest, opts ...grpc.CallOption) (*SdkVolumeEnumerateResponse, error) { out := new(SdkVolumeEnumerateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/Enumerate", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/Enumerate", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46741,7 +30697,7 @@ func (c *openStorageVolumeClient) Enumerate(ctx context.Context, in *SdkVolumeEn func (c *openStorageVolumeClient) EnumerateWithFilters(ctx context.Context, in *SdkVolumeEnumerateWithFiltersRequest, opts ...grpc.CallOption) (*SdkVolumeEnumerateWithFiltersResponse, error) { out := new(SdkVolumeEnumerateWithFiltersResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/EnumerateWithFilters", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/EnumerateWithFilters", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46750,7 +30706,7 @@ func (c *openStorageVolumeClient) EnumerateWithFilters(ctx context.Context, in * func (c *openStorageVolumeClient) SnapshotCreate(ctx context.Context, in *SdkVolumeSnapshotCreateRequest, opts ...grpc.CallOption) (*SdkVolumeSnapshotCreateResponse, error) { out := new(SdkVolumeSnapshotCreateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/SnapshotCreate", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/SnapshotCreate", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46759,7 +30715,7 @@ func (c *openStorageVolumeClient) SnapshotCreate(ctx context.Context, in *SdkVol func (c *openStorageVolumeClient) SnapshotRestore(ctx context.Context, in *SdkVolumeSnapshotRestoreRequest, opts ...grpc.CallOption) (*SdkVolumeSnapshotRestoreResponse, error) { out := new(SdkVolumeSnapshotRestoreResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/SnapshotRestore", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/SnapshotRestore", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46768,7 +30724,7 @@ func (c *openStorageVolumeClient) SnapshotRestore(ctx context.Context, in *SdkVo func (c *openStorageVolumeClient) SnapshotEnumerate(ctx context.Context, in *SdkVolumeSnapshotEnumerateRequest, opts ...grpc.CallOption) (*SdkVolumeSnapshotEnumerateResponse, error) { out := new(SdkVolumeSnapshotEnumerateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/SnapshotEnumerate", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/SnapshotEnumerate", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46777,7 +30733,7 @@ func (c *openStorageVolumeClient) SnapshotEnumerate(ctx context.Context, in *Sdk func (c *openStorageVolumeClient) SnapshotEnumerateWithFilters(ctx context.Context, in *SdkVolumeSnapshotEnumerateWithFiltersRequest, opts ...grpc.CallOption) (*SdkVolumeSnapshotEnumerateWithFiltersResponse, error) { out := new(SdkVolumeSnapshotEnumerateWithFiltersResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/SnapshotEnumerateWithFilters", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/SnapshotEnumerateWithFilters", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46786,7 +30742,7 @@ func (c *openStorageVolumeClient) SnapshotEnumerateWithFilters(ctx context.Conte func (c *openStorageVolumeClient) SnapshotScheduleUpdate(ctx context.Context, in *SdkVolumeSnapshotScheduleUpdateRequest, opts ...grpc.CallOption) (*SdkVolumeSnapshotScheduleUpdateResponse, error) { out := new(SdkVolumeSnapshotScheduleUpdateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/SnapshotScheduleUpdate", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/SnapshotScheduleUpdate", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -46795,14 +30751,15 @@ func (c *openStorageVolumeClient) SnapshotScheduleUpdate(ctx context.Context, in func (c *openStorageVolumeClient) VolumeCatalog(ctx context.Context, in *SdkVolumeCatalogRequest, opts ...grpc.CallOption) (*SdkVolumeCatalogResponse, error) { out := new(SdkVolumeCatalogResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/VolumeCatalog", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageVolume/VolumeCatalog", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -// OpenStorageVolumeServer is the server API for OpenStorageVolume service. +// Server API for OpenStorageVolume service + type OpenStorageVolumeServer interface { // Create creates a volume according to the specification provided // @@ -46880,7 +30837,7 @@ type OpenStorageVolumeServer interface { SnapshotEnumerate(context.Context, *SdkVolumeSnapshotEnumerateRequest) (*SdkVolumeSnapshotEnumerateResponse, error) // SnapshotEnumerate returns a list of snapshots. // To filter all the snapshots for a specific volume which may no longer exist, - // specify a volume id. + // specifiy a volume id. // Labels can also be used to filter the snapshot list. // If neither are provided all snapshots will be returned. SnapshotEnumerateWithFilters(context.Context, *SdkVolumeSnapshotEnumerateWithFiltersRequest) (*SdkVolumeSnapshotEnumerateWithFiltersResponse, error) @@ -46896,59 +30853,6 @@ type OpenStorageVolumeServer interface { VolumeCatalog(context.Context, *SdkVolumeCatalogRequest) (*SdkVolumeCatalogResponse, error) } -// UnimplementedOpenStorageVolumeServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStorageVolumeServer struct { -} - -func (*UnimplementedOpenStorageVolumeServer) Create(context.Context, *SdkVolumeCreateRequest) (*SdkVolumeCreateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") -} -func (*UnimplementedOpenStorageVolumeServer) Clone(context.Context, *SdkVolumeCloneRequest) (*SdkVolumeCloneResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Clone not implemented") -} -func (*UnimplementedOpenStorageVolumeServer) Delete(context.Context, *SdkVolumeDeleteRequest) (*SdkVolumeDeleteResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} -func (*UnimplementedOpenStorageVolumeServer) Inspect(context.Context, *SdkVolumeInspectRequest) (*SdkVolumeInspectResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Inspect not implemented") -} -func (*UnimplementedOpenStorageVolumeServer) InspectWithFilters(context.Context, *SdkVolumeInspectWithFiltersRequest) (*SdkVolumeInspectWithFiltersResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method InspectWithFilters not implemented") -} -func (*UnimplementedOpenStorageVolumeServer) Update(context.Context, *SdkVolumeUpdateRequest) (*SdkVolumeUpdateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") -} -func (*UnimplementedOpenStorageVolumeServer) Stats(context.Context, *SdkVolumeStatsRequest) (*SdkVolumeStatsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Stats not implemented") -} -func (*UnimplementedOpenStorageVolumeServer) CapacityUsage(context.Context, *SdkVolumeCapacityUsageRequest) (*SdkVolumeCapacityUsageResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CapacityUsage not implemented") -} -func (*UnimplementedOpenStorageVolumeServer) Enumerate(context.Context, *SdkVolumeEnumerateRequest) (*SdkVolumeEnumerateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Enumerate not implemented") -} -func (*UnimplementedOpenStorageVolumeServer) EnumerateWithFilters(context.Context, *SdkVolumeEnumerateWithFiltersRequest) (*SdkVolumeEnumerateWithFiltersResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method EnumerateWithFilters not implemented") -} -func (*UnimplementedOpenStorageVolumeServer) SnapshotCreate(context.Context, *SdkVolumeSnapshotCreateRequest) (*SdkVolumeSnapshotCreateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SnapshotCreate not implemented") -} -func (*UnimplementedOpenStorageVolumeServer) SnapshotRestore(context.Context, *SdkVolumeSnapshotRestoreRequest) (*SdkVolumeSnapshotRestoreResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SnapshotRestore not implemented") -} -func (*UnimplementedOpenStorageVolumeServer) SnapshotEnumerate(context.Context, *SdkVolumeSnapshotEnumerateRequest) (*SdkVolumeSnapshotEnumerateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SnapshotEnumerate not implemented") -} -func (*UnimplementedOpenStorageVolumeServer) SnapshotEnumerateWithFilters(context.Context, *SdkVolumeSnapshotEnumerateWithFiltersRequest) (*SdkVolumeSnapshotEnumerateWithFiltersResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SnapshotEnumerateWithFilters not implemented") -} -func (*UnimplementedOpenStorageVolumeServer) SnapshotScheduleUpdate(context.Context, *SdkVolumeSnapshotScheduleUpdateRequest) (*SdkVolumeSnapshotScheduleUpdateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SnapshotScheduleUpdate not implemented") -} -func (*UnimplementedOpenStorageVolumeServer) VolumeCatalog(context.Context, *SdkVolumeCatalogRequest) (*SdkVolumeCatalogResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method VolumeCatalog not implemented") -} - func RegisterOpenStorageVolumeServer(s *grpc.Server, srv OpenStorageVolumeServer) { s.RegisterService(&_OpenStorageVolume_serviceDesc, srv) } @@ -47314,9 +31218,8 @@ var _OpenStorageVolume_serviceDesc = grpc.ServiceDesc{ Metadata: "api/api.proto", } -// OpenStorageWatchClient is the client API for OpenStorageWatch service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +// Client API for OpenStorageWatch service + type OpenStorageWatchClient interface { // Watch on resources managed by the driver and receive them as a stream of events. // @@ -47325,15 +31228,15 @@ type OpenStorageWatchClient interface { } type openStorageWatchClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewOpenStorageWatchClient(cc grpc.ClientConnInterface) OpenStorageWatchClient { +func NewOpenStorageWatchClient(cc *grpc.ClientConn) OpenStorageWatchClient { return &openStorageWatchClient{cc} } func (c *openStorageWatchClient) Watch(ctx context.Context, in *SdkWatchRequest, opts ...grpc.CallOption) (OpenStorageWatch_WatchClient, error) { - stream, err := c.cc.NewStream(ctx, &_OpenStorageWatch_serviceDesc.Streams[0], "/openstorage.api.OpenStorageWatch/Watch", opts...) + stream, err := grpc.NewClientStream(ctx, &_OpenStorageWatch_serviceDesc.Streams[0], c.cc, "/openstorage.api.OpenStorageWatch/Watch", opts...) if err != nil { return nil, err } @@ -47364,7 +31267,8 @@ func (x *openStorageWatchWatchClient) Recv() (*SdkWatchResponse, error) { return m, nil } -// OpenStorageWatchServer is the server API for OpenStorageWatch service. +// Server API for OpenStorageWatch service + type OpenStorageWatchServer interface { // Watch on resources managed by the driver and receive them as a stream of events. // @@ -47372,14 +31276,6 @@ type OpenStorageWatchServer interface { Watch(*SdkWatchRequest, OpenStorageWatch_WatchServer) error } -// UnimplementedOpenStorageWatchServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStorageWatchServer struct { -} - -func (*UnimplementedOpenStorageWatchServer) Watch(*SdkWatchRequest, OpenStorageWatch_WatchServer) error { - return status.Errorf(codes.Unimplemented, "method Watch not implemented") -} - func RegisterOpenStorageWatchServer(s *grpc.Server, srv OpenStorageWatchServer) { s.RegisterService(&_OpenStorageWatch_serviceDesc, srv) } @@ -47419,9 +31315,8 @@ var _OpenStorageWatch_serviceDesc = grpc.ServiceDesc{ Metadata: "api/api.proto", } -// OpenStorageMountAttachClient is the client API for OpenStorageMountAttach service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +// Client API for OpenStorageMountAttach service + type OpenStorageMountAttachClient interface { // Attach attaches device to the host that the client is communicating with. // @@ -47442,16 +31337,16 @@ type OpenStorageMountAttachClient interface { } type openStorageMountAttachClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewOpenStorageMountAttachClient(cc grpc.ClientConnInterface) OpenStorageMountAttachClient { +func NewOpenStorageMountAttachClient(cc *grpc.ClientConn) OpenStorageMountAttachClient { return &openStorageMountAttachClient{cc} } func (c *openStorageMountAttachClient) Attach(ctx context.Context, in *SdkVolumeAttachRequest, opts ...grpc.CallOption) (*SdkVolumeAttachResponse, error) { out := new(SdkVolumeAttachResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageMountAttach/Attach", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageMountAttach/Attach", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -47460,7 +31355,7 @@ func (c *openStorageMountAttachClient) Attach(ctx context.Context, in *SdkVolume func (c *openStorageMountAttachClient) Detach(ctx context.Context, in *SdkVolumeDetachRequest, opts ...grpc.CallOption) (*SdkVolumeDetachResponse, error) { out := new(SdkVolumeDetachResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageMountAttach/Detach", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageMountAttach/Detach", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -47469,7 +31364,7 @@ func (c *openStorageMountAttachClient) Detach(ctx context.Context, in *SdkVolume func (c *openStorageMountAttachClient) Mount(ctx context.Context, in *SdkVolumeMountRequest, opts ...grpc.CallOption) (*SdkVolumeMountResponse, error) { out := new(SdkVolumeMountResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageMountAttach/Mount", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageMountAttach/Mount", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -47478,14 +31373,15 @@ func (c *openStorageMountAttachClient) Mount(ctx context.Context, in *SdkVolumeM func (c *openStorageMountAttachClient) Unmount(ctx context.Context, in *SdkVolumeUnmountRequest, opts ...grpc.CallOption) (*SdkVolumeUnmountResponse, error) { out := new(SdkVolumeUnmountResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageMountAttach/Unmount", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageMountAttach/Unmount", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -// OpenStorageMountAttachServer is the server API for OpenStorageMountAttach service. +// Server API for OpenStorageMountAttach service + type OpenStorageMountAttachServer interface { // Attach attaches device to the host that the client is communicating with. // @@ -47505,23 +31401,6 @@ type OpenStorageMountAttachServer interface { Unmount(context.Context, *SdkVolumeUnmountRequest) (*SdkVolumeUnmountResponse, error) } -// UnimplementedOpenStorageMountAttachServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStorageMountAttachServer struct { -} - -func (*UnimplementedOpenStorageMountAttachServer) Attach(context.Context, *SdkVolumeAttachRequest) (*SdkVolumeAttachResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Attach not implemented") -} -func (*UnimplementedOpenStorageMountAttachServer) Detach(context.Context, *SdkVolumeDetachRequest) (*SdkVolumeDetachResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Detach not implemented") -} -func (*UnimplementedOpenStorageMountAttachServer) Mount(context.Context, *SdkVolumeMountRequest) (*SdkVolumeMountResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Mount not implemented") -} -func (*UnimplementedOpenStorageMountAttachServer) Unmount(context.Context, *SdkVolumeUnmountRequest) (*SdkVolumeUnmountResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Unmount not implemented") -} - func RegisterOpenStorageMountAttachServer(s *grpc.Server, srv OpenStorageMountAttachServer) { s.RegisterService(&_OpenStorageMountAttach_serviceDesc, srv) } @@ -47623,9 +31502,8 @@ var _OpenStorageMountAttach_serviceDesc = grpc.ServiceDesc{ Metadata: "api/api.proto", } -// OpenStorageMigrateClient is the client API for OpenStorageMigrate service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +// Client API for OpenStorageMigrate service + type OpenStorageMigrateClient interface { // Start a migration operation Start(ctx context.Context, in *SdkCloudMigrateStartRequest, opts ...grpc.CallOption) (*SdkCloudMigrateStartResponse, error) @@ -47637,16 +31515,16 @@ type OpenStorageMigrateClient interface { } type openStorageMigrateClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewOpenStorageMigrateClient(cc grpc.ClientConnInterface) OpenStorageMigrateClient { +func NewOpenStorageMigrateClient(cc *grpc.ClientConn) OpenStorageMigrateClient { return &openStorageMigrateClient{cc} } func (c *openStorageMigrateClient) Start(ctx context.Context, in *SdkCloudMigrateStartRequest, opts ...grpc.CallOption) (*SdkCloudMigrateStartResponse, error) { out := new(SdkCloudMigrateStartResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageMigrate/Start", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageMigrate/Start", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -47655,7 +31533,7 @@ func (c *openStorageMigrateClient) Start(ctx context.Context, in *SdkCloudMigrat func (c *openStorageMigrateClient) Cancel(ctx context.Context, in *SdkCloudMigrateCancelRequest, opts ...grpc.CallOption) (*SdkCloudMigrateCancelResponse, error) { out := new(SdkCloudMigrateCancelResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageMigrate/Cancel", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageMigrate/Cancel", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -47664,14 +31542,15 @@ func (c *openStorageMigrateClient) Cancel(ctx context.Context, in *SdkCloudMigra func (c *openStorageMigrateClient) Status(ctx context.Context, in *SdkCloudMigrateStatusRequest, opts ...grpc.CallOption) (*SdkCloudMigrateStatusResponse, error) { out := new(SdkCloudMigrateStatusResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageMigrate/Status", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageMigrate/Status", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -// OpenStorageMigrateServer is the server API for OpenStorageMigrate service. +// Server API for OpenStorageMigrate service + type OpenStorageMigrateServer interface { // Start a migration operation Start(context.Context, *SdkCloudMigrateStartRequest) (*SdkCloudMigrateStartResponse, error) @@ -47682,20 +31561,6 @@ type OpenStorageMigrateServer interface { Status(context.Context, *SdkCloudMigrateStatusRequest) (*SdkCloudMigrateStatusResponse, error) } -// UnimplementedOpenStorageMigrateServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStorageMigrateServer struct { -} - -func (*UnimplementedOpenStorageMigrateServer) Start(context.Context, *SdkCloudMigrateStartRequest) (*SdkCloudMigrateStartResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Start not implemented") -} -func (*UnimplementedOpenStorageMigrateServer) Cancel(context.Context, *SdkCloudMigrateCancelRequest) (*SdkCloudMigrateCancelResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Cancel not implemented") -} -func (*UnimplementedOpenStorageMigrateServer) Status(context.Context, *SdkCloudMigrateStatusRequest) (*SdkCloudMigrateStatusResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Status not implemented") -} - func RegisterOpenStorageMigrateServer(s *grpc.Server, srv OpenStorageMigrateServer) { s.RegisterService(&_OpenStorageMigrate_serviceDesc, srv) } @@ -47775,9 +31640,8 @@ var _OpenStorageMigrate_serviceDesc = grpc.ServiceDesc{ Metadata: "api/api.proto", } -// OpenStorageObjectstoreClient is the client API for OpenStorageObjectstore service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +// Client API for OpenStorageObjectstore service + type OpenStorageObjectstoreClient interface { // Inspect returns information about the object store endpoint Inspect(ctx context.Context, in *SdkObjectstoreInspectRequest, opts ...grpc.CallOption) (*SdkObjectstoreInspectResponse, error) @@ -47792,16 +31656,16 @@ type OpenStorageObjectstoreClient interface { } type openStorageObjectstoreClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewOpenStorageObjectstoreClient(cc grpc.ClientConnInterface) OpenStorageObjectstoreClient { +func NewOpenStorageObjectstoreClient(cc *grpc.ClientConn) OpenStorageObjectstoreClient { return &openStorageObjectstoreClient{cc} } func (c *openStorageObjectstoreClient) Inspect(ctx context.Context, in *SdkObjectstoreInspectRequest, opts ...grpc.CallOption) (*SdkObjectstoreInspectResponse, error) { out := new(SdkObjectstoreInspectResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageObjectstore/Inspect", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageObjectstore/Inspect", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -47810,7 +31674,7 @@ func (c *openStorageObjectstoreClient) Inspect(ctx context.Context, in *SdkObjec func (c *openStorageObjectstoreClient) Create(ctx context.Context, in *SdkObjectstoreCreateRequest, opts ...grpc.CallOption) (*SdkObjectstoreCreateResponse, error) { out := new(SdkObjectstoreCreateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageObjectstore/Create", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageObjectstore/Create", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -47819,7 +31683,7 @@ func (c *openStorageObjectstoreClient) Create(ctx context.Context, in *SdkObject func (c *openStorageObjectstoreClient) Delete(ctx context.Context, in *SdkObjectstoreDeleteRequest, opts ...grpc.CallOption) (*SdkObjectstoreDeleteResponse, error) { out := new(SdkObjectstoreDeleteResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageObjectstore/Delete", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageObjectstore/Delete", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -47828,14 +31692,15 @@ func (c *openStorageObjectstoreClient) Delete(ctx context.Context, in *SdkObject func (c *openStorageObjectstoreClient) Update(ctx context.Context, in *SdkObjectstoreUpdateRequest, opts ...grpc.CallOption) (*SdkObjectstoreUpdateResponse, error) { out := new(SdkObjectstoreUpdateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageObjectstore/Update", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageObjectstore/Update", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -// OpenStorageObjectstoreServer is the server API for OpenStorageObjectstore service. +// Server API for OpenStorageObjectstore service + type OpenStorageObjectstoreServer interface { // Inspect returns information about the object store endpoint Inspect(context.Context, *SdkObjectstoreInspectRequest) (*SdkObjectstoreInspectResponse, error) @@ -47849,23 +31714,6 @@ type OpenStorageObjectstoreServer interface { Update(context.Context, *SdkObjectstoreUpdateRequest) (*SdkObjectstoreUpdateResponse, error) } -// UnimplementedOpenStorageObjectstoreServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStorageObjectstoreServer struct { -} - -func (*UnimplementedOpenStorageObjectstoreServer) Inspect(context.Context, *SdkObjectstoreInspectRequest) (*SdkObjectstoreInspectResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Inspect not implemented") -} -func (*UnimplementedOpenStorageObjectstoreServer) Create(context.Context, *SdkObjectstoreCreateRequest) (*SdkObjectstoreCreateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") -} -func (*UnimplementedOpenStorageObjectstoreServer) Delete(context.Context, *SdkObjectstoreDeleteRequest) (*SdkObjectstoreDeleteResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} -func (*UnimplementedOpenStorageObjectstoreServer) Update(context.Context, *SdkObjectstoreUpdateRequest) (*SdkObjectstoreUpdateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") -} - func RegisterOpenStorageObjectstoreServer(s *grpc.Server, srv OpenStorageObjectstoreServer) { s.RegisterService(&_OpenStorageObjectstore_serviceDesc, srv) } @@ -47967,9 +31815,8 @@ var _OpenStorageObjectstore_serviceDesc = grpc.ServiceDesc{ Metadata: "api/api.proto", } -// OpenStorageCredentialsClient is the client API for OpenStorageCredentials service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +// Client API for OpenStorageCredentials service + type OpenStorageCredentialsClient interface { // Create is used to submit cloud credentials. It will return an // id of the credentials once they are verified to work. @@ -48013,16 +31860,16 @@ type OpenStorageCredentialsClient interface { } type openStorageCredentialsClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewOpenStorageCredentialsClient(cc grpc.ClientConnInterface) OpenStorageCredentialsClient { +func NewOpenStorageCredentialsClient(cc *grpc.ClientConn) OpenStorageCredentialsClient { return &openStorageCredentialsClient{cc} } func (c *openStorageCredentialsClient) Create(ctx context.Context, in *SdkCredentialCreateRequest, opts ...grpc.CallOption) (*SdkCredentialCreateResponse, error) { out := new(SdkCredentialCreateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCredentials/Create", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCredentials/Create", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48031,7 +31878,7 @@ func (c *openStorageCredentialsClient) Create(ctx context.Context, in *SdkCreden func (c *openStorageCredentialsClient) Update(ctx context.Context, in *SdkCredentialUpdateRequest, opts ...grpc.CallOption) (*SdkCredentialUpdateResponse, error) { out := new(SdkCredentialUpdateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCredentials/Update", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCredentials/Update", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48040,7 +31887,7 @@ func (c *openStorageCredentialsClient) Update(ctx context.Context, in *SdkCreden func (c *openStorageCredentialsClient) Enumerate(ctx context.Context, in *SdkCredentialEnumerateRequest, opts ...grpc.CallOption) (*SdkCredentialEnumerateResponse, error) { out := new(SdkCredentialEnumerateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCredentials/Enumerate", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCredentials/Enumerate", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48049,7 +31896,7 @@ func (c *openStorageCredentialsClient) Enumerate(ctx context.Context, in *SdkCre func (c *openStorageCredentialsClient) Inspect(ctx context.Context, in *SdkCredentialInspectRequest, opts ...grpc.CallOption) (*SdkCredentialInspectResponse, error) { out := new(SdkCredentialInspectResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCredentials/Inspect", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCredentials/Inspect", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48058,7 +31905,7 @@ func (c *openStorageCredentialsClient) Inspect(ctx context.Context, in *SdkCrede func (c *openStorageCredentialsClient) Delete(ctx context.Context, in *SdkCredentialDeleteRequest, opts ...grpc.CallOption) (*SdkCredentialDeleteResponse, error) { out := new(SdkCredentialDeleteResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCredentials/Delete", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCredentials/Delete", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48067,7 +31914,7 @@ func (c *openStorageCredentialsClient) Delete(ctx context.Context, in *SdkCreden func (c *openStorageCredentialsClient) Validate(ctx context.Context, in *SdkCredentialValidateRequest, opts ...grpc.CallOption) (*SdkCredentialValidateResponse, error) { out := new(SdkCredentialValidateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCredentials/Validate", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCredentials/Validate", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48076,14 +31923,15 @@ func (c *openStorageCredentialsClient) Validate(ctx context.Context, in *SdkCred func (c *openStorageCredentialsClient) DeleteReferences(ctx context.Context, in *SdkCredentialDeleteReferencesRequest, opts ...grpc.CallOption) (*SdkCredentialDeleteReferencesResponse, error) { out := new(SdkCredentialDeleteReferencesResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCredentials/DeleteReferences", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCredentials/DeleteReferences", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -// OpenStorageCredentialsServer is the server API for OpenStorageCredentials service. +// Server API for OpenStorageCredentials service + type OpenStorageCredentialsServer interface { // Create is used to submit cloud credentials. It will return an // id of the credentials once they are verified to work. @@ -48126,32 +31974,6 @@ type OpenStorageCredentialsServer interface { DeleteReferences(context.Context, *SdkCredentialDeleteReferencesRequest) (*SdkCredentialDeleteReferencesResponse, error) } -// UnimplementedOpenStorageCredentialsServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStorageCredentialsServer struct { -} - -func (*UnimplementedOpenStorageCredentialsServer) Create(context.Context, *SdkCredentialCreateRequest) (*SdkCredentialCreateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") -} -func (*UnimplementedOpenStorageCredentialsServer) Update(context.Context, *SdkCredentialUpdateRequest) (*SdkCredentialUpdateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") -} -func (*UnimplementedOpenStorageCredentialsServer) Enumerate(context.Context, *SdkCredentialEnumerateRequest) (*SdkCredentialEnumerateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Enumerate not implemented") -} -func (*UnimplementedOpenStorageCredentialsServer) Inspect(context.Context, *SdkCredentialInspectRequest) (*SdkCredentialInspectResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Inspect not implemented") -} -func (*UnimplementedOpenStorageCredentialsServer) Delete(context.Context, *SdkCredentialDeleteRequest) (*SdkCredentialDeleteResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} -func (*UnimplementedOpenStorageCredentialsServer) Validate(context.Context, *SdkCredentialValidateRequest) (*SdkCredentialValidateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Validate not implemented") -} -func (*UnimplementedOpenStorageCredentialsServer) DeleteReferences(context.Context, *SdkCredentialDeleteReferencesRequest) (*SdkCredentialDeleteReferencesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteReferences not implemented") -} - func RegisterOpenStorageCredentialsServer(s *grpc.Server, srv OpenStorageCredentialsServer) { s.RegisterService(&_OpenStorageCredentials_serviceDesc, srv) } @@ -48319,9 +32141,8 @@ var _OpenStorageCredentials_serviceDesc = grpc.ServiceDesc{ Metadata: "api/api.proto", } -// OpenStorageSchedulePolicyClient is the client API for OpenStorageSchedulePolicy service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +// Client API for OpenStorageSchedulePolicy service + type OpenStorageSchedulePolicyClient interface { // Create creates a new snapshot schedule. They can be setup daily, // weekly, or monthly. @@ -48337,16 +32158,16 @@ type OpenStorageSchedulePolicyClient interface { } type openStorageSchedulePolicyClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewOpenStorageSchedulePolicyClient(cc grpc.ClientConnInterface) OpenStorageSchedulePolicyClient { +func NewOpenStorageSchedulePolicyClient(cc *grpc.ClientConn) OpenStorageSchedulePolicyClient { return &openStorageSchedulePolicyClient{cc} } func (c *openStorageSchedulePolicyClient) Create(ctx context.Context, in *SdkSchedulePolicyCreateRequest, opts ...grpc.CallOption) (*SdkSchedulePolicyCreateResponse, error) { out := new(SdkSchedulePolicyCreateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageSchedulePolicy/Create", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageSchedulePolicy/Create", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48355,7 +32176,7 @@ func (c *openStorageSchedulePolicyClient) Create(ctx context.Context, in *SdkSch func (c *openStorageSchedulePolicyClient) Update(ctx context.Context, in *SdkSchedulePolicyUpdateRequest, opts ...grpc.CallOption) (*SdkSchedulePolicyUpdateResponse, error) { out := new(SdkSchedulePolicyUpdateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageSchedulePolicy/Update", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageSchedulePolicy/Update", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48364,7 +32185,7 @@ func (c *openStorageSchedulePolicyClient) Update(ctx context.Context, in *SdkSch func (c *openStorageSchedulePolicyClient) Enumerate(ctx context.Context, in *SdkSchedulePolicyEnumerateRequest, opts ...grpc.CallOption) (*SdkSchedulePolicyEnumerateResponse, error) { out := new(SdkSchedulePolicyEnumerateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageSchedulePolicy/Enumerate", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageSchedulePolicy/Enumerate", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48373,7 +32194,7 @@ func (c *openStorageSchedulePolicyClient) Enumerate(ctx context.Context, in *Sdk func (c *openStorageSchedulePolicyClient) Inspect(ctx context.Context, in *SdkSchedulePolicyInspectRequest, opts ...grpc.CallOption) (*SdkSchedulePolicyInspectResponse, error) { out := new(SdkSchedulePolicyInspectResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageSchedulePolicy/Inspect", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageSchedulePolicy/Inspect", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48382,14 +32203,15 @@ func (c *openStorageSchedulePolicyClient) Inspect(ctx context.Context, in *SdkSc func (c *openStorageSchedulePolicyClient) Delete(ctx context.Context, in *SdkSchedulePolicyDeleteRequest, opts ...grpc.CallOption) (*SdkSchedulePolicyDeleteResponse, error) { out := new(SdkSchedulePolicyDeleteResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageSchedulePolicy/Delete", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageSchedulePolicy/Delete", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -// OpenStorageSchedulePolicyServer is the server API for OpenStorageSchedulePolicy service. +// Server API for OpenStorageSchedulePolicy service + type OpenStorageSchedulePolicyServer interface { // Create creates a new snapshot schedule. They can be setup daily, // weekly, or monthly. @@ -48404,26 +32226,6 @@ type OpenStorageSchedulePolicyServer interface { Delete(context.Context, *SdkSchedulePolicyDeleteRequest) (*SdkSchedulePolicyDeleteResponse, error) } -// UnimplementedOpenStorageSchedulePolicyServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStorageSchedulePolicyServer struct { -} - -func (*UnimplementedOpenStorageSchedulePolicyServer) Create(context.Context, *SdkSchedulePolicyCreateRequest) (*SdkSchedulePolicyCreateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") -} -func (*UnimplementedOpenStorageSchedulePolicyServer) Update(context.Context, *SdkSchedulePolicyUpdateRequest) (*SdkSchedulePolicyUpdateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") -} -func (*UnimplementedOpenStorageSchedulePolicyServer) Enumerate(context.Context, *SdkSchedulePolicyEnumerateRequest) (*SdkSchedulePolicyEnumerateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Enumerate not implemented") -} -func (*UnimplementedOpenStorageSchedulePolicyServer) Inspect(context.Context, *SdkSchedulePolicyInspectRequest) (*SdkSchedulePolicyInspectResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Inspect not implemented") -} -func (*UnimplementedOpenStorageSchedulePolicyServer) Delete(context.Context, *SdkSchedulePolicyDeleteRequest) (*SdkSchedulePolicyDeleteResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} - func RegisterOpenStorageSchedulePolicyServer(s *grpc.Server, srv OpenStorageSchedulePolicyServer) { s.RegisterService(&_OpenStorageSchedulePolicy_serviceDesc, srv) } @@ -48547,9 +32349,8 @@ var _OpenStorageSchedulePolicy_serviceDesc = grpc.ServiceDesc{ Metadata: "api/api.proto", } -// OpenStorageCloudBackupClient is the client API for OpenStorageCloudBackup service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +// Client API for OpenStorageCloudBackup service + type OpenStorageCloudBackupClient interface { // Creates a backup request for a specified volume. Use // OpenStorageCloudBackup.Status() to get the current status of the @@ -48595,16 +32396,16 @@ type OpenStorageCloudBackupClient interface { } type openStorageCloudBackupClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewOpenStorageCloudBackupClient(cc grpc.ClientConnInterface) OpenStorageCloudBackupClient { +func NewOpenStorageCloudBackupClient(cc *grpc.ClientConn) OpenStorageCloudBackupClient { return &openStorageCloudBackupClient{cc} } func (c *openStorageCloudBackupClient) Create(ctx context.Context, in *SdkCloudBackupCreateRequest, opts ...grpc.CallOption) (*SdkCloudBackupCreateResponse, error) { out := new(SdkCloudBackupCreateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/Create", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/Create", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48613,7 +32414,7 @@ func (c *openStorageCloudBackupClient) Create(ctx context.Context, in *SdkCloudB func (c *openStorageCloudBackupClient) GroupCreate(ctx context.Context, in *SdkCloudBackupGroupCreateRequest, opts ...grpc.CallOption) (*SdkCloudBackupGroupCreateResponse, error) { out := new(SdkCloudBackupGroupCreateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/GroupCreate", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/GroupCreate", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48622,7 +32423,7 @@ func (c *openStorageCloudBackupClient) GroupCreate(ctx context.Context, in *SdkC func (c *openStorageCloudBackupClient) Restore(ctx context.Context, in *SdkCloudBackupRestoreRequest, opts ...grpc.CallOption) (*SdkCloudBackupRestoreResponse, error) { out := new(SdkCloudBackupRestoreResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/Restore", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/Restore", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48631,7 +32432,7 @@ func (c *openStorageCloudBackupClient) Restore(ctx context.Context, in *SdkCloud func (c *openStorageCloudBackupClient) Delete(ctx context.Context, in *SdkCloudBackupDeleteRequest, opts ...grpc.CallOption) (*SdkCloudBackupDeleteResponse, error) { out := new(SdkCloudBackupDeleteResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/Delete", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/Delete", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48640,7 +32441,7 @@ func (c *openStorageCloudBackupClient) Delete(ctx context.Context, in *SdkCloudB func (c *openStorageCloudBackupClient) DeleteAll(ctx context.Context, in *SdkCloudBackupDeleteAllRequest, opts ...grpc.CallOption) (*SdkCloudBackupDeleteAllResponse, error) { out := new(SdkCloudBackupDeleteAllResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/DeleteAll", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/DeleteAll", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48649,7 +32450,7 @@ func (c *openStorageCloudBackupClient) DeleteAll(ctx context.Context, in *SdkClo func (c *openStorageCloudBackupClient) EnumerateWithFilters(ctx context.Context, in *SdkCloudBackupEnumerateWithFiltersRequest, opts ...grpc.CallOption) (*SdkCloudBackupEnumerateWithFiltersResponse, error) { out := new(SdkCloudBackupEnumerateWithFiltersResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/EnumerateWithFilters", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/EnumerateWithFilters", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48658,7 +32459,7 @@ func (c *openStorageCloudBackupClient) EnumerateWithFilters(ctx context.Context, func (c *openStorageCloudBackupClient) Status(ctx context.Context, in *SdkCloudBackupStatusRequest, opts ...grpc.CallOption) (*SdkCloudBackupStatusResponse, error) { out := new(SdkCloudBackupStatusResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/Status", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/Status", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48667,7 +32468,7 @@ func (c *openStorageCloudBackupClient) Status(ctx context.Context, in *SdkCloudB func (c *openStorageCloudBackupClient) Catalog(ctx context.Context, in *SdkCloudBackupCatalogRequest, opts ...grpc.CallOption) (*SdkCloudBackupCatalogResponse, error) { out := new(SdkCloudBackupCatalogResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/Catalog", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/Catalog", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48676,7 +32477,7 @@ func (c *openStorageCloudBackupClient) Catalog(ctx context.Context, in *SdkCloud func (c *openStorageCloudBackupClient) History(ctx context.Context, in *SdkCloudBackupHistoryRequest, opts ...grpc.CallOption) (*SdkCloudBackupHistoryResponse, error) { out := new(SdkCloudBackupHistoryResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/History", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/History", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48685,7 +32486,7 @@ func (c *openStorageCloudBackupClient) History(ctx context.Context, in *SdkCloud func (c *openStorageCloudBackupClient) StateChange(ctx context.Context, in *SdkCloudBackupStateChangeRequest, opts ...grpc.CallOption) (*SdkCloudBackupStateChangeResponse, error) { out := new(SdkCloudBackupStateChangeResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/StateChange", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/StateChange", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48694,7 +32495,7 @@ func (c *openStorageCloudBackupClient) StateChange(ctx context.Context, in *SdkC func (c *openStorageCloudBackupClient) SchedCreate(ctx context.Context, in *SdkCloudBackupSchedCreateRequest, opts ...grpc.CallOption) (*SdkCloudBackupSchedCreateResponse, error) { out := new(SdkCloudBackupSchedCreateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/SchedCreate", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/SchedCreate", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48703,7 +32504,7 @@ func (c *openStorageCloudBackupClient) SchedCreate(ctx context.Context, in *SdkC func (c *openStorageCloudBackupClient) SchedUpdate(ctx context.Context, in *SdkCloudBackupSchedUpdateRequest, opts ...grpc.CallOption) (*SdkCloudBackupSchedUpdateResponse, error) { out := new(SdkCloudBackupSchedUpdateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/SchedUpdate", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/SchedUpdate", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48712,7 +32513,7 @@ func (c *openStorageCloudBackupClient) SchedUpdate(ctx context.Context, in *SdkC func (c *openStorageCloudBackupClient) SchedDelete(ctx context.Context, in *SdkCloudBackupSchedDeleteRequest, opts ...grpc.CallOption) (*SdkCloudBackupSchedDeleteResponse, error) { out := new(SdkCloudBackupSchedDeleteResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/SchedDelete", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/SchedDelete", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48721,7 +32522,7 @@ func (c *openStorageCloudBackupClient) SchedDelete(ctx context.Context, in *SdkC func (c *openStorageCloudBackupClient) SchedEnumerate(ctx context.Context, in *SdkCloudBackupSchedEnumerateRequest, opts ...grpc.CallOption) (*SdkCloudBackupSchedEnumerateResponse, error) { out := new(SdkCloudBackupSchedEnumerateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/SchedEnumerate", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/SchedEnumerate", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -48730,14 +32531,15 @@ func (c *openStorageCloudBackupClient) SchedEnumerate(ctx context.Context, in *S func (c *openStorageCloudBackupClient) Size(ctx context.Context, in *SdkCloudBackupSizeRequest, opts ...grpc.CallOption) (*SdkCloudBackupSizeResponse, error) { out := new(SdkCloudBackupSizeResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/Size", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStorageCloudBackup/Size", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -// OpenStorageCloudBackupServer is the server API for OpenStorageCloudBackup service. +// Server API for OpenStorageCloudBackup service + type OpenStorageCloudBackupServer interface { // Creates a backup request for a specified volume. Use // OpenStorageCloudBackup.Status() to get the current status of the @@ -48782,56 +32584,6 @@ type OpenStorageCloudBackupServer interface { Size(context.Context, *SdkCloudBackupSizeRequest) (*SdkCloudBackupSizeResponse, error) } -// UnimplementedOpenStorageCloudBackupServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStorageCloudBackupServer struct { -} - -func (*UnimplementedOpenStorageCloudBackupServer) Create(context.Context, *SdkCloudBackupCreateRequest) (*SdkCloudBackupCreateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") -} -func (*UnimplementedOpenStorageCloudBackupServer) GroupCreate(context.Context, *SdkCloudBackupGroupCreateRequest) (*SdkCloudBackupGroupCreateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GroupCreate not implemented") -} -func (*UnimplementedOpenStorageCloudBackupServer) Restore(context.Context, *SdkCloudBackupRestoreRequest) (*SdkCloudBackupRestoreResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Restore not implemented") -} -func (*UnimplementedOpenStorageCloudBackupServer) Delete(context.Context, *SdkCloudBackupDeleteRequest) (*SdkCloudBackupDeleteResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} -func (*UnimplementedOpenStorageCloudBackupServer) DeleteAll(context.Context, *SdkCloudBackupDeleteAllRequest) (*SdkCloudBackupDeleteAllResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteAll not implemented") -} -func (*UnimplementedOpenStorageCloudBackupServer) EnumerateWithFilters(context.Context, *SdkCloudBackupEnumerateWithFiltersRequest) (*SdkCloudBackupEnumerateWithFiltersResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method EnumerateWithFilters not implemented") -} -func (*UnimplementedOpenStorageCloudBackupServer) Status(context.Context, *SdkCloudBackupStatusRequest) (*SdkCloudBackupStatusResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Status not implemented") -} -func (*UnimplementedOpenStorageCloudBackupServer) Catalog(context.Context, *SdkCloudBackupCatalogRequest) (*SdkCloudBackupCatalogResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Catalog not implemented") -} -func (*UnimplementedOpenStorageCloudBackupServer) History(context.Context, *SdkCloudBackupHistoryRequest) (*SdkCloudBackupHistoryResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method History not implemented") -} -func (*UnimplementedOpenStorageCloudBackupServer) StateChange(context.Context, *SdkCloudBackupStateChangeRequest) (*SdkCloudBackupStateChangeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method StateChange not implemented") -} -func (*UnimplementedOpenStorageCloudBackupServer) SchedCreate(context.Context, *SdkCloudBackupSchedCreateRequest) (*SdkCloudBackupSchedCreateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SchedCreate not implemented") -} -func (*UnimplementedOpenStorageCloudBackupServer) SchedUpdate(context.Context, *SdkCloudBackupSchedUpdateRequest) (*SdkCloudBackupSchedUpdateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SchedUpdate not implemented") -} -func (*UnimplementedOpenStorageCloudBackupServer) SchedDelete(context.Context, *SdkCloudBackupSchedDeleteRequest) (*SdkCloudBackupSchedDeleteResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SchedDelete not implemented") -} -func (*UnimplementedOpenStorageCloudBackupServer) SchedEnumerate(context.Context, *SdkCloudBackupSchedEnumerateRequest) (*SdkCloudBackupSchedEnumerateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SchedEnumerate not implemented") -} -func (*UnimplementedOpenStorageCloudBackupServer) Size(context.Context, *SdkCloudBackupSizeRequest) (*SdkCloudBackupSizeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Size not implemented") -} - func RegisterOpenStorageCloudBackupServer(s *grpc.Server, srv OpenStorageCloudBackupServer) { s.RegisterService(&_OpenStorageCloudBackup_serviceDesc, srv) } @@ -49175,9 +32927,8 @@ var _OpenStorageCloudBackup_serviceDesc = grpc.ServiceDesc{ Metadata: "api/api.proto", } -// OpenStoragePolicyClient is the client API for OpenStoragePolicy service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +// Client API for OpenStoragePolicy service + type OpenStoragePolicyClient interface { // Creates a storage policy Create(ctx context.Context, in *SdkOpenStoragePolicyCreateRequest, opts ...grpc.CallOption) (*SdkOpenStoragePolicyCreateResponse, error) @@ -49200,16 +32951,16 @@ type OpenStoragePolicyClient interface { } type openStoragePolicyClient struct { - cc grpc.ClientConnInterface + cc *grpc.ClientConn } -func NewOpenStoragePolicyClient(cc grpc.ClientConnInterface) OpenStoragePolicyClient { +func NewOpenStoragePolicyClient(cc *grpc.ClientConn) OpenStoragePolicyClient { return &openStoragePolicyClient{cc} } func (c *openStoragePolicyClient) Create(ctx context.Context, in *SdkOpenStoragePolicyCreateRequest, opts ...grpc.CallOption) (*SdkOpenStoragePolicyCreateResponse, error) { out := new(SdkOpenStoragePolicyCreateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStoragePolicy/Create", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStoragePolicy/Create", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -49218,7 +32969,7 @@ func (c *openStoragePolicyClient) Create(ctx context.Context, in *SdkOpenStorage func (c *openStoragePolicyClient) Enumerate(ctx context.Context, in *SdkOpenStoragePolicyEnumerateRequest, opts ...grpc.CallOption) (*SdkOpenStoragePolicyEnumerateResponse, error) { out := new(SdkOpenStoragePolicyEnumerateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStoragePolicy/Enumerate", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStoragePolicy/Enumerate", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -49227,7 +32978,7 @@ func (c *openStoragePolicyClient) Enumerate(ctx context.Context, in *SdkOpenStor func (c *openStoragePolicyClient) Inspect(ctx context.Context, in *SdkOpenStoragePolicyInspectRequest, opts ...grpc.CallOption) (*SdkOpenStoragePolicyInspectResponse, error) { out := new(SdkOpenStoragePolicyInspectResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStoragePolicy/Inspect", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStoragePolicy/Inspect", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -49236,7 +32987,7 @@ func (c *openStoragePolicyClient) Inspect(ctx context.Context, in *SdkOpenStorag func (c *openStoragePolicyClient) Update(ctx context.Context, in *SdkOpenStoragePolicyUpdateRequest, opts ...grpc.CallOption) (*SdkOpenStoragePolicyUpdateResponse, error) { out := new(SdkOpenStoragePolicyUpdateResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStoragePolicy/Update", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStoragePolicy/Update", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -49245,7 +32996,7 @@ func (c *openStoragePolicyClient) Update(ctx context.Context, in *SdkOpenStorage func (c *openStoragePolicyClient) Delete(ctx context.Context, in *SdkOpenStoragePolicyDeleteRequest, opts ...grpc.CallOption) (*SdkOpenStoragePolicyDeleteResponse, error) { out := new(SdkOpenStoragePolicyDeleteResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStoragePolicy/Delete", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStoragePolicy/Delete", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -49254,7 +33005,7 @@ func (c *openStoragePolicyClient) Delete(ctx context.Context, in *SdkOpenStorage func (c *openStoragePolicyClient) SetDefault(ctx context.Context, in *SdkOpenStoragePolicySetDefaultRequest, opts ...grpc.CallOption) (*SdkOpenStoragePolicySetDefaultResponse, error) { out := new(SdkOpenStoragePolicySetDefaultResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStoragePolicy/SetDefault", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStoragePolicy/SetDefault", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -49263,7 +33014,7 @@ func (c *openStoragePolicyClient) SetDefault(ctx context.Context, in *SdkOpenSto func (c *openStoragePolicyClient) DefaultInspect(ctx context.Context, in *SdkOpenStoragePolicyDefaultInspectRequest, opts ...grpc.CallOption) (*SdkOpenStoragePolicyDefaultInspectResponse, error) { out := new(SdkOpenStoragePolicyDefaultInspectResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStoragePolicy/DefaultInspect", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStoragePolicy/DefaultInspect", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -49272,14 +33023,15 @@ func (c *openStoragePolicyClient) DefaultInspect(ctx context.Context, in *SdkOpe func (c *openStoragePolicyClient) Release(ctx context.Context, in *SdkOpenStoragePolicyReleaseRequest, opts ...grpc.CallOption) (*SdkOpenStoragePolicyReleaseResponse, error) { out := new(SdkOpenStoragePolicyReleaseResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStoragePolicy/Release", in, out, opts...) + err := grpc.Invoke(ctx, "/openstorage.api.OpenStoragePolicy/Release", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -// OpenStoragePolicyServer is the server API for OpenStoragePolicy service. +// Server API for OpenStoragePolicy service + type OpenStoragePolicyServer interface { // Creates a storage policy Create(context.Context, *SdkOpenStoragePolicyCreateRequest) (*SdkOpenStoragePolicyCreateResponse, error) @@ -49301,35 +33053,6 @@ type OpenStoragePolicyServer interface { Release(context.Context, *SdkOpenStoragePolicyReleaseRequest) (*SdkOpenStoragePolicyReleaseResponse, error) } -// UnimplementedOpenStoragePolicyServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStoragePolicyServer struct { -} - -func (*UnimplementedOpenStoragePolicyServer) Create(context.Context, *SdkOpenStoragePolicyCreateRequest) (*SdkOpenStoragePolicyCreateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Create not implemented") -} -func (*UnimplementedOpenStoragePolicyServer) Enumerate(context.Context, *SdkOpenStoragePolicyEnumerateRequest) (*SdkOpenStoragePolicyEnumerateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Enumerate not implemented") -} -func (*UnimplementedOpenStoragePolicyServer) Inspect(context.Context, *SdkOpenStoragePolicyInspectRequest) (*SdkOpenStoragePolicyInspectResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Inspect not implemented") -} -func (*UnimplementedOpenStoragePolicyServer) Update(context.Context, *SdkOpenStoragePolicyUpdateRequest) (*SdkOpenStoragePolicyUpdateResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") -} -func (*UnimplementedOpenStoragePolicyServer) Delete(context.Context, *SdkOpenStoragePolicyDeleteRequest) (*SdkOpenStoragePolicyDeleteResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") -} -func (*UnimplementedOpenStoragePolicyServer) SetDefault(context.Context, *SdkOpenStoragePolicySetDefaultRequest) (*SdkOpenStoragePolicySetDefaultResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SetDefault not implemented") -} -func (*UnimplementedOpenStoragePolicyServer) DefaultInspect(context.Context, *SdkOpenStoragePolicyDefaultInspectRequest) (*SdkOpenStoragePolicyDefaultInspectResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DefaultInspect not implemented") -} -func (*UnimplementedOpenStoragePolicyServer) Release(context.Context, *SdkOpenStoragePolicyReleaseRequest) (*SdkOpenStoragePolicyReleaseResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Release not implemented") -} - func RegisterOpenStoragePolicyServer(s *grpc.Server, srv OpenStoragePolicyServer) { s.RegisterService(&_OpenStoragePolicy_serviceDesc, srv) } @@ -49519,152 +33242,1397 @@ var _OpenStoragePolicy_serviceDesc = grpc.ServiceDesc{ Metadata: "api/api.proto", } -// OpenStorageVerifyChecksumClient is the client API for OpenStorageVerifyChecksum service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type OpenStorageVerifyChecksumClient interface { - // Start a verify checksum background operation on a volume. - Start(ctx context.Context, in *SdkVerifyChecksumStartRequest, opts ...grpc.CallOption) (*SdkVerifyChecksumStartResponse, error) - // Get Status of a verify checksum background operation on a volume - Status(ctx context.Context, in *SdkVerifyChecksumStatusRequest, opts ...grpc.CallOption) (*SdkVerifyChecksumStatusResponse, error) - // Stop a verify checksum background operation on a volume - Stop(ctx context.Context, in *SdkVerifyChecksumStopRequest, opts ...grpc.CallOption) (*SdkVerifyChecksumStopResponse, error) -} - -type openStorageVerifyChecksumClient struct { - cc grpc.ClientConnInterface -} - -func NewOpenStorageVerifyChecksumClient(cc grpc.ClientConnInterface) OpenStorageVerifyChecksumClient { - return &openStorageVerifyChecksumClient{cc} -} - -func (c *openStorageVerifyChecksumClient) Start(ctx context.Context, in *SdkVerifyChecksumStartRequest, opts ...grpc.CallOption) (*SdkVerifyChecksumStartResponse, error) { - out := new(SdkVerifyChecksumStartResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageVerifyChecksum/Start", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *openStorageVerifyChecksumClient) Status(ctx context.Context, in *SdkVerifyChecksumStatusRequest, opts ...grpc.CallOption) (*SdkVerifyChecksumStatusResponse, error) { - out := new(SdkVerifyChecksumStatusResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageVerifyChecksum/Status", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *openStorageVerifyChecksumClient) Stop(ctx context.Context, in *SdkVerifyChecksumStopRequest, opts ...grpc.CallOption) (*SdkVerifyChecksumStopResponse, error) { - out := new(SdkVerifyChecksumStopResponse) - err := c.cc.Invoke(ctx, "/openstorage.api.OpenStorageVerifyChecksum/Stop", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// OpenStorageVerifyChecksumServer is the server API for OpenStorageVerifyChecksum service. -type OpenStorageVerifyChecksumServer interface { - // Start a verify checksum background operation on a volume. - Start(context.Context, *SdkVerifyChecksumStartRequest) (*SdkVerifyChecksumStartResponse, error) - // Get Status of a verify checksum background operation on a volume - Status(context.Context, *SdkVerifyChecksumStatusRequest) (*SdkVerifyChecksumStatusResponse, error) - // Stop a verify checksum background operation on a volume - Stop(context.Context, *SdkVerifyChecksumStopRequest) (*SdkVerifyChecksumStopResponse, error) -} - -// UnimplementedOpenStorageVerifyChecksumServer can be embedded to have forward compatible implementations. -type UnimplementedOpenStorageVerifyChecksumServer struct { -} - -func (*UnimplementedOpenStorageVerifyChecksumServer) Start(context.Context, *SdkVerifyChecksumStartRequest) (*SdkVerifyChecksumStartResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Start not implemented") -} -func (*UnimplementedOpenStorageVerifyChecksumServer) Status(context.Context, *SdkVerifyChecksumStatusRequest) (*SdkVerifyChecksumStatusResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Status not implemented") -} -func (*UnimplementedOpenStorageVerifyChecksumServer) Stop(context.Context, *SdkVerifyChecksumStopRequest) (*SdkVerifyChecksumStopResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Stop not implemented") -} - -func RegisterOpenStorageVerifyChecksumServer(s *grpc.Server, srv OpenStorageVerifyChecksumServer) { - s.RegisterService(&_OpenStorageVerifyChecksum_serviceDesc, srv) -} - -func _OpenStorageVerifyChecksum_Start_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SdkVerifyChecksumStartRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OpenStorageVerifyChecksumServer).Start(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/openstorage.api.OpenStorageVerifyChecksum/Start", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OpenStorageVerifyChecksumServer).Start(ctx, req.(*SdkVerifyChecksumStartRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OpenStorageVerifyChecksum_Status_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SdkVerifyChecksumStatusRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OpenStorageVerifyChecksumServer).Status(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/openstorage.api.OpenStorageVerifyChecksum/Status", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OpenStorageVerifyChecksumServer).Status(ctx, req.(*SdkVerifyChecksumStatusRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OpenStorageVerifyChecksum_Stop_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SdkVerifyChecksumStopRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OpenStorageVerifyChecksumServer).Stop(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/openstorage.api.OpenStorageVerifyChecksum/Stop", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OpenStorageVerifyChecksumServer).Stop(ctx, req.(*SdkVerifyChecksumStopRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _OpenStorageVerifyChecksum_serviceDesc = grpc.ServiceDesc{ - ServiceName: "openstorage.api.OpenStorageVerifyChecksum", - HandlerType: (*OpenStorageVerifyChecksumServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Start", - Handler: _OpenStorageVerifyChecksum_Start_Handler, - }, - { - MethodName: "Status", - Handler: _OpenStorageVerifyChecksum_Status_Handler, - }, - { - MethodName: "Stop", - Handler: _OpenStorageVerifyChecksum_Stop_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "api/api.proto", +func init() { proto.RegisterFile("api/api.proto", fileDescriptor_api_bc0eb0e06839944e) } + +var fileDescriptor_api_bc0eb0e06839944e = []byte{ + // 22219 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0xbd, 0x59, 0x70, 0x24, 0x49, + 0x76, 0x20, 0x56, 0x91, 0x89, 0xf3, 0x01, 0x09, 0x24, 0x1c, 0x75, 0xa0, 0x50, 0x77, 0x74, 0x57, + 0x77, 0x35, 0xba, 0x0a, 0xd5, 0x8d, 0xbe, 0xef, 0x49, 0x00, 0x89, 0x42, 0x76, 0x03, 0x48, 0x74, + 0x24, 0x50, 0xd5, 0xdd, 0xc3, 0xd9, 0x98, 0x40, 0x66, 0x00, 0x15, 0x5d, 0x99, 0x19, 0xd9, 0x11, + 0x91, 0xe8, 0xc2, 0x0c, 0x87, 0xe4, 0x72, 0x6d, 0xb9, 0xcb, 0x7b, 0x78, 0x0c, 0x8f, 0xe1, 0xa1, + 0x95, 0x99, 0x48, 0xed, 0x41, 0x4a, 0x4b, 0x6a, 0x77, 0x6d, 0x49, 0x13, 0x49, 0x33, 0xda, 0x9a, + 0x78, 0xec, 0x6a, 0xf7, 0x83, 0x5a, 0x93, 0xed, 0x52, 0x94, 0xb4, 0x66, 0xd4, 0x9a, 0xd1, 0x44, + 0xf1, 0x43, 0x87, 0x99, 0xd6, 0x24, 0x33, 0xc9, 0xfc, 0xb9, 0x7b, 0x84, 0x7b, 0x1c, 0x79, 0x54, + 0xd5, 0x0c, 0x69, 0xd2, 0x0f, 0x90, 0xe1, 0xfe, 0xfc, 0xf9, 0x73, 0xf7, 0xe7, 0xcf, 0x9f, 0x3f, + 0x7f, 0xfe, 0x1c, 0x0a, 0x56, 0xc7, 0xb9, 0x6d, 0x75, 0x9c, 0xe5, 0x8e, 0xe7, 0x06, 0x2e, 0x99, + 0x75, 0x3b, 0x76, 0xdb, 0x0f, 0x5c, 0xcf, 0x3a, 0xb2, 0x97, 0xad, 0x8e, 0xb3, 0x78, 0xe5, 0xc8, + 0x75, 0x8f, 0x9a, 0xf6, 0x6d, 0xcc, 0x3e, 0xe8, 0x1e, 0xde, 0x0e, 0x9c, 0x96, 0xed, 0x07, 0x56, + 0xab, 0xc3, 0x4a, 0x2c, 0x5e, 0xe4, 0x00, 0x88, 0xa7, 0xdd, 0x76, 0x03, 0x2b, 0x70, 0xdc, 0xb6, + 0xcf, 0x72, 0xf5, 0xff, 0x90, 0x87, 0xd9, 0x1a, 0x43, 0x67, 0xd8, 0xbe, 0xdb, 0xf5, 0xea, 0x36, + 0x99, 0x81, 0x9c, 0xd3, 0x58, 0xd0, 0xae, 0x6a, 0x37, 0x26, 0x8d, 0x9c, 0xd3, 0x20, 0x04, 0x46, + 0x3a, 0x56, 0x70, 0x7f, 0x21, 0x87, 0x29, 0xf8, 0x9b, 0xbc, 0x0a, 0x63, 0x2d, 0xbb, 0xe1, 0x74, + 0x5b, 0x0b, 0xf9, 0xab, 0xda, 0x8d, 0x99, 0x95, 0xcb, 0xcb, 0x31, 0xc2, 0x96, 0x39, 0xd6, 0x6d, + 0x84, 0x32, 0x38, 0x34, 0x39, 0x0b, 0x63, 0x6e, 0xbb, 0xe9, 0xb4, 0xed, 0x85, 0x91, 0xab, 0xda, + 0x8d, 0x09, 0x83, 0x7f, 0xd1, 0x3a, 0x1c, 0xb7, 0xe3, 0x2f, 0x8c, 0x5e, 0xd5, 0x6e, 0x8c, 0x18, + 0xf8, 0x9b, 0x5c, 0x80, 0x49, 0xdf, 0xfe, 0xcc, 0xfc, 0xdc, 0x73, 0x02, 0x7b, 0x61, 0xec, 0xaa, + 0x76, 0x43, 0x33, 0x26, 0x7c, 0xfb, 0xb3, 0x7b, 0xf4, 0x9b, 0x9c, 0x07, 0xfa, 0xdb, 0xf4, 0x6c, + 0xab, 0xb1, 0x30, 0x8e, 0x79, 0xe3, 0xbe, 0xfd, 0x99, 0x61, 0x5b, 0x0d, 0x5a, 0x87, 0x67, 0xb5, + 0x1b, 0xc6, 0xbd, 0x85, 0x09, 0xcc, 0xe0, 0x5f, 0xb4, 0x0e, 0xdf, 0xf9, 0x8a, 0xbd, 0x30, 0xc9, + 0xea, 0xa0, 0xbf, 0x69, 0x5a, 0xd7, 0xb7, 0x1b, 0x0b, 0xc0, 0xd2, 0xe8, 0x6f, 0x72, 0x1d, 0x66, + 0x3c, 0xde, 0x4d, 0xa6, 0xdf, 0xb1, 0xed, 0xc6, 0xc2, 0x14, 0xb6, 0xbc, 0x20, 0x52, 0x6b, 0x34, + 0x91, 0xbc, 0x06, 0x93, 0x4d, 0xcb, 0x0f, 0x4c, 0xbf, 0x6e, 0xb5, 0x17, 0xa6, 0xaf, 0x6a, 0x37, + 0xa6, 0x56, 0x16, 0x97, 0x59, 0x67, 0x2f, 0x8b, 0xd1, 0x58, 0xde, 0x13, 0xa3, 0x61, 0x4c, 0x50, + 0xe0, 0x5a, 0xdd, 0x6a, 0x93, 0x45, 0x98, 0x68, 0xd9, 0x81, 0xd5, 0xb0, 0x02, 0x6b, 0xa1, 0x80, + 0xbd, 0x10, 0x7e, 0x93, 0xd3, 0x30, 0x5a, 0xb7, 0xea, 0xf7, 0xed, 0x85, 0x19, 0xcc, 0x60, 0x1f, + 0x64, 0x09, 0xe6, 0x3a, 0xae, 0xdb, 0x34, 0x05, 0x98, 0xd9, 0xb0, 0x8f, 0x17, 0x66, 0x11, 0x62, + 0x96, 0x66, 0x6c, 0xf3, 0xf4, 0x75, 0xfb, 0x98, 0xdc, 0x80, 0x62, 0xbd, 0xe9, 0x76, 0x1b, 0x66, + 0xc3, 0x73, 0x8e, 0x6d, 0x33, 0x38, 0xe9, 0xd8, 0x0b, 0x45, 0xa4, 0x7f, 0x06, 0xd3, 0xd7, 0x69, + 0xf2, 0xde, 0x49, 0xc7, 0xd6, 0xff, 0x61, 0x1e, 0xa6, 0xf8, 0x28, 0xed, 0xba, 0x6e, 0x93, 0x8e, + 0x7b, 0x65, 0x1d, 0xc7, 0x7d, 0xd4, 0xc8, 0x55, 0xd6, 0xc9, 0x12, 0xe4, 0xd7, 0x5c, 0x1f, 0x87, + 0x7d, 0x66, 0x65, 0x21, 0x31, 0xc0, 0x6b, 0xae, 0x4f, 0xd1, 0x18, 0x14, 0x88, 0xf2, 0xc3, 0xf6, + 0x50, 0xfc, 0xc0, 0xfe, 0x93, 0x8b, 0x30, 0x69, 0x58, 0x4e, 0x63, 0xcb, 0x3e, 0xb6, 0x9b, 0xc8, + 0x12, 0x93, 0x46, 0x94, 0x40, 0x73, 0xf7, 0xdc, 0xc0, 0x6a, 0xd6, 0xe8, 0xb0, 0x8d, 0xe3, 0x10, + 0x45, 0x09, 0x74, 0xec, 0xf6, 0xe9, 0xd8, 0x4d, 0xb0, 0xb1, 0xa3, 0xbf, 0xc9, 0x17, 0x60, 0xac, + 0x69, 0x1d, 0xd8, 0x4d, 0x7f, 0x61, 0xf2, 0x6a, 0xfe, 0xc6, 0xd4, 0xca, 0x8d, 0x2c, 0x3a, 0x68, + 0x8b, 0x97, 0xb7, 0x10, 0xb4, 0xdc, 0x0e, 0xbc, 0x13, 0x83, 0x97, 0x43, 0x8e, 0xe8, 0x3a, 0x8c, + 0x23, 0x26, 0x0d, 0xfc, 0x4d, 0xb6, 0x60, 0x06, 0x87, 0xda, 0xed, 0xd8, 0x1e, 0x72, 0x00, 0x72, + 0xc4, 0xd4, 0xca, 0xf5, 0x5e, 0xd8, 0xab, 0x02, 0xd8, 0x28, 0xd0, 0xc2, 0xe1, 0xe7, 0xe2, 0x1b, + 0x30, 0x25, 0x55, 0x4c, 0x8a, 0x90, 0x7f, 0x60, 0x9f, 0xf0, 0xf9, 0x46, 0x7f, 0x52, 0x26, 0x38, + 0xb6, 0x9a, 0x5d, 0x9b, 0xcf, 0x38, 0xf6, 0xf1, 0x66, 0xee, 0x75, 0x4d, 0xff, 0x29, 0x0d, 0xe6, + 0x6a, 0xf5, 0xfb, 0x76, 0xa3, 0xdb, 0xb4, 0xbd, 0x3d, 0xb7, 0xe3, 0x36, 0xdd, 0xa3, 0x13, 0xb2, + 0x11, 0x36, 0x5a, 0xc3, 0x46, 0x2f, 0x27, 0xc9, 0x8a, 0x97, 0x49, 0x6b, 0xfa, 0xe3, 0x10, 0xf6, + 0x9b, 0x39, 0x38, 0x9d, 0xd6, 0x76, 0x52, 0x82, 0x11, 0x64, 0x41, 0x0d, 0xd9, 0xe2, 0x56, 0x92, + 0xb2, 0xc6, 0x03, 0x79, 0x44, 0xc2, 0x82, 0xc8, 0x5a, 0x58, 0x94, 0xd2, 0xd1, 0xf2, 0x8f, 0x78, + 0x9d, 0xf4, 0x27, 0xa9, 0xc0, 0x58, 0xc7, 0xf2, 0xac, 0x96, 0xbf, 0x90, 0xc7, 0x06, 0xbf, 0x38, + 0xd0, 0x38, 0x2c, 0xef, 0x62, 0x19, 0xde, 0x66, 0x86, 0x80, 0xdc, 0x81, 0x31, 0x3f, 0xb0, 0x82, + 0xae, 0x8f, 0xdc, 0x37, 0xb3, 0x72, 0x7b, 0x60, 0x0a, 0x6b, 0x58, 0xcc, 0xe0, 0xc5, 0x69, 0xe7, + 0x49, 0xf8, 0x87, 0xea, 0xbc, 0x6f, 0x6a, 0x30, 0x2f, 0x06, 0xc6, 0xb0, 0x3f, 0xeb, 0x3a, 0x9e, + 0xdd, 0xb2, 0xdb, 0x01, 0xd9, 0x8c, 0x8d, 0xeb, 0x0b, 0x09, 0xda, 0x52, 0x4a, 0x3d, 0xe9, 0x91, + 0xfd, 0xdd, 0x1c, 0x14, 0xee, 0xba, 0xcd, 0x6e, 0xcb, 0xde, 0x72, 0xeb, 0x56, 0xe0, 0x7a, 0x74, + 0x86, 0xb4, 0xad, 0x96, 0xcd, 0x8b, 0xe3, 0x6f, 0xb2, 0x0f, 0x85, 0x63, 0x04, 0x32, 0x39, 0xc5, + 0xb9, 0x0c, 0x8a, 0x15, 0x54, 0xe2, 0x4b, 0xa2, 0x78, 0xfa, 0x58, 0x4a, 0x22, 0xaf, 0xc3, 0xa4, + 0xfb, 0x79, 0xdb, 0xf6, 0xfc, 0xfb, 0x4e, 0x07, 0x25, 0x0b, 0x95, 0xb1, 0x71, 0x94, 0x55, 0x01, + 0x61, 0x44, 0xc0, 0xe4, 0x26, 0x8c, 0x1e, 0x79, 0x6e, 0xb7, 0x83, 0xc3, 0x3a, 0xb5, 0x72, 0x36, + 0x51, 0xea, 0x0e, 0xcd, 0x35, 0x18, 0x10, 0xb9, 0x04, 0xc0, 0xc9, 0x77, 0x1a, 0x74, 0x11, 0xca, + 0x53, 0x39, 0xc4, 0x52, 0x2a, 0x0d, 0x7f, 0xf1, 0x3d, 0x98, 0x4b, 0x50, 0x3a, 0x54, 0x27, 0x2e, + 0xc1, 0x69, 0x86, 0xa0, 0xd2, 0xf6, 0x3b, 0x76, 0x3d, 0xa8, 0x76, 0x70, 0x11, 0xa6, 0x5d, 0xd9, + 0xb0, 0xed, 0x0e, 0x22, 0x99, 0x30, 0xf0, 0xb7, 0xfe, 0x32, 0x8c, 0xd5, 0xd8, 0x42, 0x7c, 0x16, + 0xd9, 0xdc, 0x6e, 0x07, 0xbc, 0x12, 0xfe, 0x85, 0x0b, 0x19, 0x5d, 0x96, 0xf8, 0x82, 0x4c, 0x7f, + 0xeb, 0xe7, 0x60, 0x14, 0x5b, 0x14, 0x5f, 0xbd, 0x75, 0x0b, 0xa0, 0xe2, 0xd6, 0x02, 0xcf, 0x0a, + 0xec, 0xa3, 0x13, 0xba, 0x6c, 0x5a, 0xfe, 0x49, 0xbb, 0x6e, 0x3a, 0x2e, 0xaf, 0x74, 0x1c, 0xbf, + 0x2b, 0x2e, 0x5d, 0x6e, 0x6d, 0xcb, 0x6b, 0x9e, 0x98, 0x56, 0xfd, 0x01, 0xa2, 0x9e, 0x30, 0x26, + 0x30, 0xa1, 0x54, 0x7f, 0x40, 0x33, 0x1b, 0x8e, 0x67, 0xd7, 0x03, 0x5a, 0x30, 0xcf, 0x32, 0x59, + 0x42, 0xc5, 0xd5, 0x5f, 0x86, 0xd1, 0x8f, 0xac, 0x20, 0xf0, 0xf4, 0xe7, 0x61, 0xf4, 0x2e, 0x6d, + 0x33, 0x99, 0x85, 0xa9, 0xfd, 0x9d, 0xda, 0x6e, 0x79, 0xad, 0xb2, 0x51, 0x29, 0xaf, 0x17, 0x4f, + 0x91, 0x39, 0x28, 0xac, 0x55, 0xef, 0x99, 0xd5, 0x1d, 0x73, 0xbd, 0xbc, 0x5d, 0xda, 0x59, 0x2f, + 0x6a, 0xfa, 0xd7, 0x00, 0xca, 0x0f, 0x3b, 0xae, 0x17, 0xd4, 0x3a, 0x76, 0x9d, 0x6c, 0xc2, 0xac, + 0x8d, 0x5f, 0x26, 0xae, 0x9d, 0x75, 0xb7, 0xc9, 0x45, 0xc6, 0x95, 0xc4, 0xc8, 0xb1, 0x52, 0xbb, + 0x1c, 0xcc, 0x98, 0xb1, 0x95, 0x6f, 0xba, 0x7c, 0x73, 0x4c, 0x2e, 0xeb, 0x65, 0xde, 0x4f, 0x05, + 0x96, 0xca, 0xbb, 0x5e, 0x7f, 0x1f, 0xa6, 0x77, 0x36, 0x6a, 0xbb, 0x9e, 0xfb, 0xf0, 0x04, 0x09, + 0xb8, 0x02, 0x53, 0x82, 0x00, 0xaa, 0xec, 0xb0, 0x0e, 0x04, 0x8e, 0x9b, 0xaa, 0x3c, 0x54, 0xe3, + 0xe8, 0x1e, 0x98, 0x92, 0x2a, 0x34, 0xee, 0x77, 0x0f, 0x68, 0x96, 0xbe, 0x0c, 0x53, 0xb5, 0x97, + 0x14, 0x54, 0x07, 0xdd, 0xfa, 0x03, 0x3b, 0x30, 0xa5, 0x79, 0x02, 0x2c, 0x69, 0xc7, 0x6a, 0xd9, + 0xfa, 0x65, 0x98, 0xde, 0xfd, 0x68, 0x3d, 0x2a, 0x10, 0x1f, 0xb3, 0x16, 0x14, 0x76, 0xbb, 0x9e, + 0xbd, 0xda, 0x74, 0xeb, 0x0f, 0x10, 0xe0, 0x12, 0x80, 0x6f, 0x7b, 0x8e, 0xd5, 0x34, 0xdb, 0xdd, + 0x16, 0x07, 0x9c, 0x64, 0x29, 0x3b, 0xdd, 0x16, 0xd1, 0xa1, 0x70, 0xd8, 0x6d, 0x36, 0xcd, 0x63, + 0xb7, 0xc9, 0xaa, 0x64, 0xf4, 0x4d, 0xd1, 0xc4, 0xbb, 0x6e, 0x93, 0xd6, 0x49, 0xc9, 0xef, 0xb8, + 0x0d, 0x96, 0x9d, 0x67, 0xe4, 0x77, 0xdc, 0x06, 0x92, 0xf3, 0x10, 0xa6, 0x69, 0x75, 0x1b, 0x4e, + 0xd3, 0xc6, 0xda, 0xae, 0xc1, 0x34, 0xef, 0x0a, 0xaf, 0xdb, 0xb4, 0x7d, 0x5e, 0x1f, 0xef, 0x1e, + 0x83, 0x26, 0x0d, 0x54, 0xe3, 0x35, 0x98, 0x6e, 0x1f, 0xfa, 0xa6, 0xdd, 0x6e, 0x74, 0x5c, 0xa7, + 0x1d, 0xf0, 0x5a, 0xa7, 0xda, 0x87, 0x7e, 0x99, 0x27, 0xe9, 0xbf, 0x9c, 0x87, 0xc9, 0xa8, 0x1b, + 0xca, 0x30, 0xd3, 0xa1, 0x1f, 0x71, 0x16, 0x48, 0x2a, 0x13, 0x58, 0x26, 0xe4, 0x80, 0x42, 0x47, + 0xfe, 0xa4, 0xfa, 0x55, 0x58, 0x27, 0x23, 0x2b, 0xfc, 0x26, 0xaf, 0xc3, 0x04, 0xa5, 0x89, 0x4e, + 0x42, 0x2e, 0x4f, 0x2e, 0x25, 0x90, 0xcb, 0x6c, 0x61, 0x8c, 0xb7, 0x0f, 0x7d, 0x24, 0xee, 0x15, + 0x18, 0xf7, 0x5f, 0x62, 0x05, 0x99, 0x48, 0xb9, 0x98, 0x5c, 0x29, 0x22, 0x1e, 0x30, 0xc6, 0xfc, + 0x97, 0xb0, 0xd8, 0xeb, 0x30, 0xd1, 0x79, 0xd8, 0x60, 0xe5, 0x46, 0x33, 0x2a, 0x94, 0x79, 0xc1, + 0x18, 0xef, 0x3c, 0x6c, 0x60, 0xc9, 0x0d, 0x98, 0xed, 0x74, 0x3d, 0xdb, 0x3c, 0xa0, 0x5c, 0xc0, + 0x10, 0x8c, 0x21, 0x82, 0x94, 0xee, 0x90, 0x99, 0xc5, 0x28, 0x74, 0x14, 0xde, 0x59, 0x83, 0x19, + 0xc4, 0x73, 0xe8, 0x34, 0x6d, 0x86, 0x66, 0x3c, 0x8b, 0x0e, 0x89, 0x09, 0x8c, 0xe9, 0x8e, 0xf4, + 0xa5, 0xff, 0xbe, 0x06, 0xf3, 0xb5, 0xfb, 0x96, 0x67, 0x37, 0x8e, 0x5f, 0xae, 0xd9, 0xde, 0xb1, + 0x53, 0x67, 0xac, 0x92, 0xb6, 0x16, 0xac, 0xf3, 0x25, 0x9f, 0x29, 0x8e, 0xc9, 0x25, 0x20, 0x05, + 0xcf, 0x32, 0xff, 0x1d, 0xad, 0xfa, 0xfa, 0x3d, 0x98, 0x92, 0x12, 0x93, 0x12, 0x65, 0x1a, 0x26, + 0x76, 0xaa, 0xeb, 0xe5, 0xdd, 0xaa, 0xb1, 0x57, 0xd4, 0x48, 0x01, 0x26, 0xd7, 0xb6, 0xf6, 0x6b, + 0x7b, 0x65, 0xa3, 0xb2, 0x5b, 0xcc, 0x91, 0x22, 0x4c, 0x6f, 0x55, 0x4b, 0xeb, 0xab, 0xa5, 0xad, + 0xd2, 0xce, 0x5a, 0xd9, 0x28, 0xe6, 0xc9, 0x04, 0x8c, 0xec, 0x54, 0x77, 0xca, 0xc5, 0x11, 0x7d, + 0x17, 0x16, 0x04, 0x05, 0x1b, 0x96, 0xd3, 0x74, 0x8f, 0x6d, 0x4f, 0x88, 0x47, 0x2a, 0xc9, 0x32, + 0x04, 0xd8, 0x0c, 0x40, 0xe9, 0xce, 0x1d, 0xa3, 0x5c, 0xab, 0x55, 0xee, 0x96, 0x8b, 0x1a, 0x01, + 0x18, 0xdb, 0xa9, 0x1a, 0xdb, 0xa5, 0xad, 0x62, 0x4e, 0x6f, 0xc2, 0x74, 0xd8, 0x26, 0xda, 0x29, + 0xdf, 0x01, 0x73, 0x87, 0x1c, 0xb3, 0xe9, 0x73, 0xd4, 0x9c, 0x95, 0x6f, 0x67, 0xf6, 0x46, 0x9c, + 0x96, 0x65, 0x24, 0xc4, 0x28, 0x1e, 0xc6, 0x69, 0xfc, 0xba, 0x06, 0xd3, 0xdb, 0x6e, 0xb7, 0x1d, + 0x2e, 0x22, 0xeb, 0x30, 0x2e, 0x24, 0x1d, 0xd3, 0x13, 0x96, 0x12, 0x95, 0xc8, 0xf0, 0xcb, 0xfc, + 0x3f, 0x5b, 0x6f, 0x45, 0xd1, 0xc5, 0x37, 0x61, 0x5a, 0xce, 0x18, 0x6a, 0x79, 0xfb, 0xb7, 0x39, + 0x98, 0xdb, 0xb0, 0xfc, 0x80, 0xca, 0x46, 0xc3, 0xee, 0x34, 0xa9, 0x6a, 0x64, 0x93, 0x33, 0x30, + 0xd6, 0xb0, 0x8f, 0x4d, 0x2e, 0xd9, 0x46, 0x8c, 0xd1, 0x86, 0x7d, 0x5c, 0x69, 0x90, 0x73, 0x30, + 0xde, 0x76, 0x1b, 0x74, 0xa5, 0x45, 0x44, 0x05, 0x63, 0x8c, 0x7e, 0x56, 0x1a, 0xe4, 0x1d, 0x98, + 0x08, 0x27, 0x3e, 0xdb, 0x45, 0x5c, 0x4b, 0x34, 0x44, 0xd4, 0x12, 0xce, 0xfd, 0xb0, 0x08, 0x25, + 0xd8, 0xaa, 0x37, 0xf9, 0xbe, 0x92, 0xfe, 0x24, 0xcf, 0x8a, 0x35, 0xc5, 0x6e, 0xd0, 0x1d, 0x93, + 0x53, 0xb7, 0x71, 0x0a, 0x4e, 0x8a, 0x25, 0xc3, 0x6e, 0xac, 0x63, 0x2a, 0x6d, 0x19, 0xce, 0x32, + 0x9c, 0x60, 0x13, 0x06, 0xfb, 0xa0, 0xcb, 0x6f, 0x60, 0x79, 0x47, 0x76, 0x80, 0x13, 0x66, 0xd2, + 0xe0, 0x5f, 0x28, 0x5f, 0x78, 0x79, 0xdc, 0x7b, 0xd0, 0x75, 0x92, 0x7f, 0xd3, 0x3c, 0xa7, 0xc5, + 0xf3, 0x26, 0x59, 0x9e, 0xf8, 0x26, 0x0b, 0x30, 0xde, 0xb0, 0x8f, 0x71, 0xfd, 0x60, 0x9b, 0x0b, + 0xf1, 0x49, 0x57, 0x57, 0xec, 0x12, 0xdc, 0x78, 0xb0, 0xcd, 0xe6, 0x04, 0x4d, 0xd8, 0xef, 0x3a, + 0x0d, 0xfd, 0x9b, 0x39, 0x98, 0x11, 0xcd, 0x5e, 0x73, 0xdb, 0x87, 0xce, 0x11, 0xdb, 0xfc, 0x06, + 0xdd, 0x8e, 0xe9, 0xb6, 0xf9, 0x7e, 0x6d, 0x1c, 0xbf, 0xab, 0x6d, 0x5a, 0x49, 0xc7, 0x73, 0x5b, + 0x6e, 0x60, 0xf3, 0x35, 0x5c, 0x7c, 0x92, 0xd7, 0x42, 0x4d, 0x37, 0x9f, 0xb1, 0xb0, 0x8a, 0x5a, + 0x54, 0xcd, 0x96, 0xbc, 0x0b, 0x13, 0x9e, 0xdd, 0x69, 0x3a, 0x75, 0x8b, 0x2a, 0xc9, 0x94, 0xc1, + 0xf4, 0xcc, 0xa2, 0xe1, 0xe8, 0x1b, 0x61, 0x19, 0xda, 0xbb, 0x0d, 0xc7, 0x0b, 0x4e, 0xb0, 0xf3, + 0x27, 0x0c, 0xf6, 0x41, 0x97, 0xb4, 0xba, 0xeb, 0x7a, 0x0d, 0xd6, 0xe8, 0x31, 0xb6, 0xa4, 0x61, + 0x0a, 0x6d, 0x35, 0x5d, 0xc5, 0x0f, 0x5d, 0xaf, 0x6e, 0x9b, 0x82, 0xff, 0x71, 0x10, 0x26, 0x8c, + 0x02, 0xa6, 0x8a, 0xc9, 0xa2, 0xff, 0x8b, 0x1c, 0x00, 0xdd, 0x54, 0xef, 0xba, 0x4d, 0xa7, 0x7e, + 0x42, 0x4a, 0x30, 0x1e, 0x78, 0xce, 0xd1, 0x91, 0xed, 0xf1, 0xf9, 0xf6, 0x6c, 0xca, 0x56, 0x48, + 0x40, 0xe3, 0xcf, 0x3d, 0x06, 0x6e, 0x88, 0x72, 0xe4, 0x5d, 0x18, 0xb3, 0xea, 0xb8, 0xc7, 0x63, + 0xf2, 0xeb, 0x99, 0x7e, 0x18, 0x4a, 0x08, 0x6d, 0xf0, 0x52, 0xba, 0x09, 0x53, 0x12, 0x5e, 0x72, + 0x06, 0xe6, 0x6a, 0x6b, 0xa5, 0x1d, 0x73, 0xcf, 0xa8, 0xdc, 0xb9, 0x53, 0x36, 0x4c, 0x14, 0x42, + 0xa7, 0xc8, 0x79, 0x38, 0xa3, 0x24, 0x57, 0x77, 0xcc, 0xed, 0xea, 0xfe, 0x0e, 0x15, 0x65, 0x97, + 0x61, 0x31, 0x9e, 0xb5, 0x53, 0xfe, 0x68, 0x8f, 0xe7, 0xe7, 0xf4, 0x4f, 0x58, 0x8b, 0x59, 0xb5, + 0xe4, 0x34, 0x14, 0x11, 0xba, 0xb4, 0xb6, 0x57, 0xa1, 0x90, 0x2a, 0x7a, 0x9e, 0x8a, 0xbf, 0xab, + 0x3b, 0x5b, 0x1f, 0x17, 0x35, 0x72, 0x01, 0xce, 0x25, 0xb2, 0x8c, 0xf2, 0x6e, 0xa9, 0x62, 0x14, + 0x73, 0x74, 0x7f, 0x09, 0x15, 0x77, 0xef, 0xbe, 0xe7, 0x06, 0x41, 0xd3, 0xa6, 0x7c, 0xe9, 0xd9, + 0x56, 0xc3, 0x44, 0xd3, 0x8c, 0x86, 0x93, 0x75, 0x82, 0x26, 0x54, 0xdc, 0x8e, 0x4f, 0x07, 0x10, + 0x4d, 0x33, 0x2c, 0x97, 0x4d, 0xe5, 0x49, 0x4c, 0xc1, 0xec, 0xa7, 0x61, 0x06, 0xcb, 0x1e, 0x7c, + 0x6e, 0xb6, 0x0e, 0x4e, 0x02, 0x9b, 0xb1, 0x5d, 0xc1, 0x98, 0xa6, 0xa9, 0xab, 0x9f, 0x6f, 0x63, + 0x1a, 0x79, 0x06, 0x66, 0x19, 0x92, 0x08, 0x6c, 0x04, 0xc1, 0x0a, 0x98, 0x2c, 0xe0, 0xf4, 0x9f, + 0x23, 0x00, 0x4c, 0x83, 0x46, 0x09, 0x7b, 0x11, 0x26, 0xed, 0xce, 0x7d, 0xbb, 0x65, 0x7b, 0x56, + 0x93, 0xeb, 0xb1, 0x51, 0x42, 0x68, 0xe8, 0xc9, 0x49, 0x86, 0x9e, 0xdb, 0x30, 0x76, 0xe8, 0x7a, + 0x2d, 0x2b, 0xe0, 0xdc, 0x7f, 0x2e, 0xc9, 0xc2, 0x35, 0x5c, 0x7d, 0x38, 0x18, 0x6d, 0x1e, 0x5f, + 0x79, 0x29, 0x2a, 0x4a, 0x54, 0xde, 0x98, 0xc4, 0x14, 0x34, 0x3e, 0x9c, 0x87, 0x89, 0xfb, 0x96, + 0xd9, 0x44, 0xbb, 0xc5, 0x28, 0x66, 0x8e, 0xdf, 0xb7, 0x98, 0xd5, 0x62, 0x09, 0xf2, 0x75, 0xd7, + 0x47, 0x96, 0xee, 0x69, 0x37, 0xa9, 0xbb, 0x3e, 0x79, 0x03, 0xc0, 0x71, 0xa9, 0xbe, 0x43, 0x57, + 0x67, 0x64, 0xf1, 0x99, 0x94, 0x1d, 0x4e, 0xc5, 0xdd, 0x65, 0x10, 0xc6, 0xa4, 0x23, 0x7e, 0x52, + 0xf1, 0xd4, 0xb0, 0x1b, 0xdd, 0x8e, 0xcd, 0x85, 0x10, 0xff, 0x22, 0xcf, 0xc3, 0x9c, 0xdf, 0xb6, + 0x3a, 0xfe, 0x7d, 0x37, 0x30, 0x9d, 0x76, 0x60, 0x7b, 0xc7, 0x56, 0x13, 0x65, 0x51, 0xc1, 0x28, + 0x8a, 0x8c, 0x0a, 0x4f, 0x27, 0x46, 0x7c, 0xdf, 0x06, 0x38, 0xc1, 0x6f, 0x65, 0xec, 0xdb, 0x70, + 0xad, 0xee, 0xb7, 0x69, 0x3b, 0x0b, 0x63, 0x3e, 0x2e, 0x6a, 0x28, 0xca, 0x26, 0x0c, 0xfe, 0x45, + 0xde, 0x86, 0x29, 0x2e, 0x13, 0x4c, 0xdf, 0x0e, 0xb8, 0xc9, 0xec, 0x42, 0xa2, 0x26, 0x83, 0xc1, + 0xd4, 0xec, 0xc0, 0x00, 0x2f, 0xfc, 0x4d, 0x9b, 0x65, 0x1d, 0x1d, 0x79, 0xf6, 0x11, 0x33, 0xcc, + 0xb1, 0x9e, 0x2f, 0xb0, 0x66, 0x49, 0x19, 0xa1, 0xe1, 0xc8, 0x6e, 0xd7, 0xbd, 0x93, 0x0e, 0x95, + 0xc3, 0x33, 0x9c, 0x3f, 0x44, 0x02, 0xb9, 0x0c, 0xd0, 0xb1, 0x7c, 0xbf, 0x73, 0xdf, 0xb3, 0x7c, + 0x1b, 0xed, 0x68, 0x93, 0x86, 0x94, 0xa2, 0xf4, 0xa0, 0xcf, 0x2d, 0x27, 0xdc, 0x86, 0x16, 0xf6, + 0xa0, 0xb0, 0xa8, 0x50, 0xe9, 0xe6, 0xd7, 0xad, 0xa6, 0xbd, 0x30, 0x87, 0xb4, 0xb0, 0x0f, 0xec, + 0x83, 0xc0, 0xa9, 0x3f, 0x38, 0x59, 0x20, 0xbc, 0x0f, 0xf0, 0x2b, 0xda, 0x96, 0x9e, 0x19, 0x64, + 0x5b, 0x7a, 0x1d, 0x66, 0xf0, 0x87, 0x69, 0xb7, 0x51, 0xec, 0x35, 0x16, 0xce, 0x32, 0x21, 0x88, + 0xa9, 0x65, 0x9e, 0x48, 0xdb, 0x53, 0x77, 0x5b, 0x1d, 0xcf, 0xf6, 0x7d, 0xbb, 0xb1, 0x70, 0x0e, + 0x41, 0xa4, 0x14, 0xba, 0x28, 0xd5, 0x2d, 0xbf, 0x6e, 0x35, 0xec, 0xc6, 0xc2, 0x02, 0x5b, 0x94, + 0xc4, 0x37, 0x5d, 0x2f, 0x3e, 0x75, 0xbb, 0x5e, 0xdb, 0x6a, 0x2e, 0x9c, 0x67, 0xeb, 0x05, 0xff, + 0xa4, 0xa5, 0x7c, 0xae, 0x9b, 0x2c, 0x2c, 0xb2, 0x52, 0xe2, 0x9b, 0xee, 0x70, 0x3e, 0xeb, 0xda, + 0x5d, 0xdb, 0x6c, 0xd8, 0x9d, 0xe0, 0xfe, 0xc2, 0x05, 0x6c, 0x3a, 0x60, 0xd2, 0x3a, 0x4d, 0x21, + 0x6f, 0xc0, 0x79, 0x26, 0xbe, 0xbb, 0x6d, 0xbf, 0xdb, 0xe1, 0x6b, 0xf0, 0xa1, 0xcf, 0xcc, 0x91, + 0x17, 0x11, 0xdb, 0x59, 0x04, 0xd8, 0x8f, 0xf2, 0x37, 0x70, 0x5e, 0xd0, 0xb1, 0x6b, 0xbb, 0x0d, + 0xc7, 0xaf, 0x5b, 0x5e, 0x63, 0xe1, 0x12, 0x1b, 0xbb, 0x30, 0x81, 0x32, 0x91, 0xe3, 0x46, 0x5a, + 0xd5, 0xe5, 0x0c, 0x26, 0x8a, 0xb6, 0xbc, 0x06, 0x38, 0xd1, 0xf6, 0xf7, 0x1e, 0x90, 0x4e, 0xd3, + 0xaa, 0xa3, 0xa1, 0x24, 0x42, 0x72, 0x05, 0x91, 0xdc, 0xc8, 0xe0, 0xf9, 0x5d, 0x51, 0x20, 0xc4, + 0x38, 0xd7, 0x89, 0x27, 0xd1, 0x91, 0xe2, 0x25, 0xcd, 0x0e, 0x2e, 0x0d, 0x0b, 0x57, 0xd9, 0xa6, + 0xd3, 0x17, 0xa6, 0x23, 0x5c, 0x9f, 0x14, 0x7b, 0xc6, 0xb5, 0x61, 0xec, 0x19, 0x6f, 0x87, 0xdb, + 0x53, 0x54, 0xe1, 0xf5, 0x8c, 0x76, 0x47, 0x3b, 0x6a, 0xb1, 0x77, 0x45, 0x79, 0xf9, 0x14, 0x14, + 0x0e, 0x3b, 0x66, 0xc7, 0xb3, 0x0f, 0x6d, 0xcf, 0x6e, 0xd7, 0xed, 0x85, 0xa7, 0xb0, 0x5f, 0xa7, + 0x0f, 0x3b, 0xbb, 0x61, 0x1a, 0x59, 0x81, 0xd1, 0x87, 0x74, 0x1b, 0xbf, 0xf0, 0x34, 0x8a, 0xa1, + 0xe4, 0xfe, 0x06, 0x37, 0xf9, 0x5c, 0x2f, 0x65, 0xa0, 0x94, 0x2c, 0xbf, 0x6e, 0xb5, 0x45, 0xa3, + 0xaf, 0x67, 0x90, 0x15, 0x2d, 0x99, 0x06, 0xf8, 0xd1, 0x72, 0xbd, 0x0a, 0x85, 0x16, 0xd5, 0x4c, + 0xc3, 0x9d, 0xfa, 0x33, 0x19, 0x3b, 0x13, 0x59, 0x7f, 0x35, 0xa6, 0x5b, 0xb2, 0xf6, 0x5b, 0x83, + 0xb3, 0x82, 0x2d, 0x4d, 0x15, 0xd9, 0xb3, 0x83, 0x20, 0x3b, 0x2d, 0x0a, 0x2b, 0x2a, 0xf5, 0x15, + 0x98, 0x62, 0x3b, 0x51, 0x76, 0xf8, 0x70, 0x83, 0x4d, 0x29, 0x4c, 0x62, 0xc7, 0x0f, 0x6f, 0x00, + 0xfb, 0x62, 0xa3, 0xf1, 0x5c, 0xc6, 0x48, 0x46, 0xbb, 0xba, 0xc9, 0x4e, 0xb8, 0xcb, 0xfd, 0x08, + 0xce, 0x84, 0x04, 0xfb, 0x6c, 0x87, 0xc3, 0xb0, 0x2c, 0x21, 0x96, 0xa7, 0x07, 0xd9, 0x2f, 0x19, + 0xf3, 0x7e, 0xca, 0x66, 0x6c, 0x15, 0x0a, 0x11, 0x66, 0x8a, 0xf1, 0xf9, 0x8c, 0x1e, 0x90, 0x77, + 0x2b, 0xc6, 0xb4, 0x2f, 0xef, 0x5d, 0xae, 0xc0, 0x94, 0xd5, 0x0d, 0x5c, 0xf3, 0xd0, 0x0f, 0x3c, + 0xa7, 0xb5, 0x70, 0x93, 0xb5, 0x9c, 0x26, 0x6d, 0x60, 0x0a, 0x9f, 0x80, 0x01, 0x57, 0x11, 0x16, + 0x6e, 0x65, 0x4e, 0x40, 0xa1, 0x45, 0xd0, 0x09, 0x18, 0x6a, 0x14, 0xf7, 0xe0, 0x74, 0xc0, 0x6d, + 0x96, 0xa6, 0x17, 0x19, 0x2d, 0x17, 0x5e, 0xc8, 0x68, 0x7b, 0x8a, 0x81, 0xd3, 0x98, 0x0f, 0x52, + 0x6c, 0xa5, 0x4b, 0x74, 0xcf, 0x65, 0xd6, 0x3d, 0xdb, 0x0a, 0xec, 0x90, 0x03, 0x56, 0x70, 0x0e, + 0xce, 0x1e, 0x5a, 0x6b, 0x98, 0x2e, 0x46, 0x97, 0xaa, 0xdb, 0xb6, 0xe5, 0x99, 0xfe, 0x49, 0xbb, + 0xbe, 0xf0, 0x12, 0x13, 0x6d, 0x34, 0xa1, 0x76, 0xd2, 0xae, 0x93, 0xcf, 0xe0, 0x72, 0x98, 0x69, + 0xf2, 0xf5, 0x87, 0x1d, 0x05, 0x09, 0x71, 0xf1, 0x32, 0x4e, 0x8f, 0x9b, 0x49, 0xbb, 0x01, 0x47, + 0x61, 0x44, 0x85, 0x42, 0x91, 0x71, 0xa1, 0x9d, 0x9d, 0xf9, 0xf8, 0xe6, 0xc5, 0x6f, 0xce, 0x41, + 0x31, 0x5a, 0xa0, 0xf7, 0x3b, 0x0d, 0xba, 0xfd, 0x3a, 0x2d, 0x6b, 0x41, 0x9b, 0xa7, 0xb8, 0x1e, + 0x74, 0x21, 0xae, 0xb7, 0x6c, 0x6a, 0x91, 0xe6, 0x72, 0x73, 0x20, 0xcd, 0x65, 0x33, 0xc7, 0x74, + 0x97, 0xb7, 0x86, 0xd3, 0x5d, 0x36, 0xf3, 0xb2, 0xf6, 0xb2, 0xa0, 0x6a, 0x2f, 0x9b, 0x23, 0xa1, + 0xfe, 0x72, 0x2b, 0x53, 0x7f, 0xd9, 0x1c, 0x4d, 0xd1, 0x60, 0x16, 0x54, 0x6d, 0x63, 0x73, 0xec, + 0x09, 0xe9, 0x1b, 0x57, 0x93, 0x4a, 0xc2, 0xe6, 0xb8, 0xa2, 0x26, 0xdc, 0xca, 0x54, 0x13, 0x36, + 0x27, 0x52, 0x14, 0x85, 0xb3, 0x8a, 0xa2, 0xb0, 0x39, 0x29, 0x54, 0x85, 0x05, 0x55, 0x55, 0xd8, + 0x84, 0x50, 0x59, 0x58, 0x16, 0xca, 0xc2, 0x7c, 0x2f, 0x65, 0x61, 0x73, 0x4a, 0xa8, 0x0b, 0x8b, + 0xd1, 0x5a, 0x8e, 0x4a, 0xc0, 0xe6, 0x74, 0xb4, 0x9a, 0x5f, 0x94, 0x56, 0x73, 0xd4, 0x01, 0x36, + 0x0b, 0xd2, 0x7a, 0x7e, 0x4d, 0x5d, 0xcf, 0xcf, 0x23, 0x85, 0x33, 0xca, 0x8a, 0xae, 0x2c, 0x5d, + 0x8b, 0xc3, 0x2c, 0x5d, 0x97, 0xe5, 0x05, 0xfd, 0x02, 0xd6, 0x3d, 0xdb, 0x63, 0x49, 0xbf, 0x38, + 0xdc, 0x92, 0xfe, 0xae, 0xba, 0x30, 0x5e, 0xea, 0xbb, 0x30, 0x6e, 0x16, 0x95, 0xa5, 0xf1, 0x22, + 0x4c, 0x1c, 0xf2, 0xcd, 0x2b, 0x6a, 0x13, 0x13, 0x9b, 0x73, 0x46, 0x98, 0x42, 0x5e, 0x16, 0x6b, + 0xe2, 0x95, 0xfe, 0x6b, 0xe2, 0x26, 0x11, 0xab, 0xe2, 0xbb, 0xea, 0xaa, 0x78, 0xb5, 0xef, 0xaa, + 0xb8, 0x39, 0xaf, 0xac, 0x8b, 0x65, 0x98, 0x09, 0x97, 0x32, 0xd6, 0xac, 0x6b, 0x03, 0xac, 0x65, + 0x9b, 0xa7, 0xa3, 0xa5, 0x11, 0x9b, 0x76, 0x17, 0xce, 0x25, 0x97, 0x46, 0x59, 0x7f, 0xe8, 0x83, + 0xef, 0x4c, 0x72, 0x75, 0xe4, 0xf6, 0x61, 0x65, 0x75, 0x44, 0x5d, 0x62, 0xf3, 0xac, 0xb2, 0x3e, + 0xbe, 0xa5, 0xac, 0x8f, 0x4f, 0xf7, 0x5b, 0x1f, 0x37, 0xcf, 0xc9, 0x2b, 0xe4, 0x27, 0x59, 0x2b, + 0xe4, 0xf5, 0xc1, 0x57, 0xc8, 0xcd, 0x85, 0xf4, 0x35, 0x72, 0x3d, 0xbe, 0x46, 0x3e, 0x33, 0xc0, + 0x1a, 0xb9, 0x79, 0x3e, 0xb6, 0x4a, 0x5e, 0x53, 0x57, 0xc9, 0x67, 0xb1, 0x07, 0x16, 0x95, 0x75, + 0xf2, 0x5d, 0x75, 0x9d, 0xbc, 0xd1, 0x77, 0x9d, 0xdc, 0xbc, 0xa0, 0xac, 0x94, 0x7e, 0xdf, 0x75, + 0xe8, 0xb9, 0xe1, 0xd7, 0xa1, 0xcd, 0x8b, 0x3d, 0x57, 0x22, 0x72, 0x13, 0xe6, 0xd0, 0x56, 0xac, + 0xd8, 0xed, 0x97, 0x50, 0xa4, 0x5d, 0x32, 0xd0, 0x1c, 0xbd, 0x13, 0x59, 0xef, 0x57, 0x01, 0x26, + 0xe8, 0x9a, 0x42, 0xb9, 0x6a, 0x75, 0x06, 0xa6, 0xc5, 0xba, 0x82, 0xdf, 0x93, 0x30, 0x5e, 0x77, + 0x7d, 0xfc, 0x59, 0x84, 0x99, 0x68, 0x9d, 0xc0, 0x94, 0x69, 0x00, 0x26, 0xec, 0xf1, 0xeb, 0x1c, + 0x9c, 0x49, 0x08, 0x7c, 0x01, 0xc6, 0x7a, 0x5d, 0xa0, 0x89, 0x84, 0x6f, 0xa2, 0xa0, 0x10, 0xc0, + 0x98, 0x31, 0x05, 0x93, 0x28, 0x5b, 0x43, 0x2c, 0x28, 0x4f, 0x45, 0x16, 0xdb, 0x52, 0xd1, 0x8f, + 0x02, 0x4c, 0x71, 0xf9, 0x28, 0xda, 0x10, 0xf2, 0x06, 0xfd, 0x9e, 0x83, 0x59, 0x49, 0x2a, 0x62, + 0xd2, 0x2c, 0x14, 0x42, 0xc1, 0x25, 0x60, 0x24, 0xf1, 0x23, 0xd0, 0x08, 0xf9, 0x21, 0xaa, 0x44, + 0xb1, 0x20, 0xe0, 0x25, 0xd1, 0x20, 0xf2, 0xc3, 0xd9, 0xb9, 0x7a, 0x1a, 0x48, 0x72, 0xce, 0xd2, + 0x52, 0xd2, 0x8c, 0x0b, 0xbb, 0x23, 0x9c, 0x61, 0x98, 0x72, 0x01, 0xce, 0xa7, 0x4e, 0x1b, 0xcc, + 0x9c, 0x87, 0x39, 0x85, 0xef, 0x05, 0x5a, 0x89, 0x8d, 0x45, 0x92, 0xc4, 0xb6, 0x98, 0xf4, 0x34, + 0xe8, 0xbd, 0x39, 0x51, 0x0c, 0x46, 0x82, 0x75, 0x68, 0x86, 0xfe, 0xef, 0xe7, 0x65, 0xe5, 0x84, + 0x4b, 0x38, 0xa1, 0x9c, 0x68, 0x99, 0xca, 0x49, 0x2e, 0x43, 0x39, 0xc9, 0x3f, 0x8a, 0x72, 0x32, + 0xf2, 0xa8, 0xca, 0xc9, 0xe8, 0x20, 0xca, 0xc9, 0x58, 0xa6, 0x72, 0xf2, 0x51, 0xdc, 0xbc, 0x32, + 0x8e, 0xe6, 0x95, 0x97, 0x7a, 0x98, 0x57, 0xb8, 0x65, 0xb1, 0x9f, 0x91, 0x25, 0x52, 0x7b, 0x26, + 0x7a, 0xab, 0x3d, 0x93, 0x8f, 0xa3, 0xf6, 0xc0, 0xa0, 0x6a, 0xcf, 0x54, 0x7f, 0xb5, 0x67, 0x3a, + 0x4b, 0xed, 0x29, 0x64, 0xa9, 0x3d, 0x33, 0x43, 0xab, 0x3d, 0xb3, 0xbd, 0xd4, 0x9e, 0x62, 0x3f, + 0xb5, 0x67, 0x2e, 0x45, 0xed, 0xb9, 0x2c, 0x5b, 0x92, 0x88, 0x50, 0x5e, 0x22, 0x5b, 0xd2, 0xad, + 0x34, 0xb3, 0xd4, 0x3c, 0x22, 0x2a, 0xa6, 0x18, 0xa6, 0xaa, 0x50, 0xe0, 0x22, 0xd3, 0xf6, 0xac, + 0xc0, 0xf5, 0x70, 0x8b, 0x32, 0x93, 0x72, 0x62, 0x93, 0x60, 0x08, 0xf6, 0xaf, 0xda, 0x31, 0xa6, + 0x29, 0x82, 0x2a, 0x2f, 0x4f, 0xee, 0xc2, 0x9c, 0x24, 0x77, 0x39, 0xd2, 0x97, 0x86, 0x46, 0x3a, + 0xcb, 0x67, 0x59, 0x88, 0xf7, 0x43, 0x98, 0x11, 0x22, 0x94, 0x23, 0x7d, 0x79, 0x68, 0xa4, 0x05, + 0xc4, 0x10, 0xa2, 0xbc, 0x0f, 0x8b, 0x69, 0x72, 0x9e, 0xa3, 0x7f, 0x65, 0x68, 0xf4, 0x0b, 0xf1, + 0xe9, 0x16, 0xd6, 0xa4, 0x68, 0x9c, 0xaf, 0x72, 0xa5, 0x2e, 0x5b, 0xe3, 0x7c, 0xed, 0xb1, 0x34, + 0xce, 0xd7, 0xfb, 0x6b, 0x9c, 0x44, 0xd1, 0x38, 0x63, 0xda, 0xe1, 0x1b, 0x8f, 0xaf, 0x1d, 0xbe, + 0xf9, 0x84, 0xb5, 0xc3, 0xb7, 0x9e, 0xa0, 0x76, 0xf8, 0x76, 0x5f, 0xed, 0xf0, 0x9d, 0xe1, 0xb4, + 0x43, 0x59, 0x61, 0x7f, 0x17, 0x91, 0x2f, 0x48, 0x0a, 0x7b, 0xa6, 0xee, 0xf8, 0xde, 0x10, 0xba, + 0xe3, 0xf9, 0x01, 0x75, 0xc7, 0x2f, 0x0c, 0xa2, 0x3b, 0x2e, 0xf6, 0xd6, 0x1d, 0x4b, 0xd8, 0x84, + 0x0b, 0xbd, 0x74, 0xc7, 0xd5, 0xfe, 0xba, 0xe3, 0x45, 0x59, 0x77, 0x7c, 0x7c, 0x83, 0xc2, 0x6d, + 0x98, 0x10, 0xd3, 0x8c, 0x4c, 0xc2, 0x68, 0xf9, 0xb3, 0xae, 0xd5, 0x2c, 0x9e, 0x22, 0x53, 0x30, + 0xbe, 0xed, 0xb4, 0x9d, 0x56, 0xb7, 0x55, 0xd4, 0xf0, 0xc3, 0x7a, 0x88, 0x1f, 0xb9, 0xff, 0x9f, + 0xaa, 0x82, 0xe1, 0x32, 0x20, 0x68, 0x48, 0x2c, 0x05, 0x03, 0x2b, 0x8d, 0xdf, 0x42, 0xbd, 0x30, + 0xae, 0x8f, 0x7e, 0x8b, 0xf4, 0x44, 0xbd, 0x04, 0x10, 0x29, 0x15, 0x94, 0xb9, 0xda, 0x6e, 0xc3, + 0x66, 0x3e, 0x09, 0x93, 0x06, 0xfb, 0x20, 0x97, 0x00, 0xd0, 0x93, 0xb9, 0xdb, 0x75, 0x1a, 0xcc, + 0x49, 0x70, 0xd2, 0x98, 0xa4, 0x29, 0xfb, 0x34, 0x41, 0xff, 0x07, 0x1a, 0xcc, 0x1a, 0xdd, 0x76, + 0xe0, 0xb4, 0x6c, 0x3c, 0x45, 0xde, 0xb6, 0x3a, 0xe4, 0x1e, 0x14, 0x3c, 0x96, 0x64, 0xfa, 0x34, + 0x8d, 0x3b, 0x39, 0xac, 0x24, 0x35, 0x1a, 0xb5, 0xa0, 0xf2, 0xcd, 0x55, 0x28, 0x4f, 0x4a, 0xa2, + 0xb3, 0x24, 0x01, 0x32, 0xd4, 0x2c, 0xf9, 0xc7, 0xa3, 0x30, 0x19, 0x5a, 0x3c, 0x28, 0x1c, 0xda, + 0x3c, 0x78, 0x59, 0xf6, 0x41, 0xde, 0x86, 0x11, 0xab, 0xde, 0x64, 0xe7, 0xa3, 0x69, 0x67, 0x0c, + 0x61, 0xf9, 0xe5, 0x52, 0xbd, 0x6e, 0xfb, 0xfe, 0x9a, 0xdb, 0x0e, 0x3c, 0xb7, 0x69, 0x60, 0xa9, + 0xc5, 0x5d, 0x98, 0xdf, 0xed, 0x1e, 0x34, 0x9d, 0xba, 0x92, 0x49, 0xde, 0x50, 0x9c, 0x6a, 0xaf, + 0xf7, 0x45, 0x1a, 0xb9, 0xd5, 0x2c, 0xfe, 0x51, 0x1e, 0x0a, 0x2a, 0xb2, 0x2d, 0x18, 0xc3, 0x69, + 0x20, 0xbc, 0x47, 0x5e, 0x1e, 0x94, 0x46, 0xa6, 0x87, 0x09, 0x4f, 0x53, 0x86, 0x83, 0x58, 0x50, + 0xa8, 0xbb, 0xcd, 0xa6, 0x75, 0xe0, 0xe2, 0x52, 0x2c, 0x1c, 0x41, 0xdf, 0x1a, 0x18, 0xe9, 0x9a, + 0x5c, 0x9a, 0xe1, 0x56, 0x31, 0x92, 0x0d, 0x18, 0xeb, 0x60, 0xa7, 0x70, 0x0f, 0xae, 0xe5, 0x1e, + 0xb8, 0x53, 0x7a, 0xcf, 0xe0, 0xa5, 0x17, 0xbf, 0x0c, 0x53, 0x52, 0x0b, 0x52, 0x46, 0xfe, 0x2d, + 0x79, 0xe4, 0x07, 0xee, 0xe7, 0x88, 0x41, 0x16, 0x8f, 0x80, 0x24, 0x9b, 0xf3, 0x2d, 0xa8, 0x48, + 0xbf, 0x09, 0x10, 0x65, 0x90, 0x09, 0x18, 0x31, 0x6c, 0xab, 0x51, 0x3c, 0x45, 0x65, 0x37, 0xae, + 0xb8, 0x45, 0x8d, 0xfe, 0x2c, 0x35, 0x5a, 0x4e, 0xbb, 0x98, 0xd3, 0xff, 0x87, 0x02, 0x8c, 0xb1, + 0xf5, 0x21, 0x71, 0xd7, 0xe3, 0x36, 0x8c, 0xb1, 0x5b, 0x20, 0x9c, 0x61, 0x93, 0xc7, 0xe4, 0xcc, + 0x37, 0xd5, 0xe0, 0x60, 0xd1, 0x81, 0x66, 0x7e, 0x90, 0x03, 0xcd, 0x45, 0x40, 0xff, 0x01, 0xb7, + 0xdd, 0x3c, 0xe1, 0x8e, 0x3a, 0xe1, 0x37, 0x79, 0x1d, 0xc6, 0x9b, 0xcc, 0x2d, 0x98, 0x3b, 0xca, + 0x5d, 0xee, 0xed, 0x3c, 0x6c, 0x08, 0x70, 0xf2, 0x02, 0x8c, 0xd6, 0xe9, 0x34, 0xe6, 0xfe, 0x71, + 0xbd, 0x6e, 0x61, 0x30, 0x40, 0x72, 0x1b, 0x46, 0x24, 0x4f, 0xb8, 0x0b, 0x3d, 0x94, 0x4e, 0x03, + 0x01, 0xe9, 0xe4, 0xee, 0xfa, 0xd6, 0x91, 0xcd, 0x2f, 0x1b, 0xb0, 0x0f, 0xf5, 0x0a, 0xc8, 0xe4, + 0x10, 0x57, 0x40, 0x22, 0x6f, 0x04, 0x18, 0xcc, 0x1b, 0xe1, 0x95, 0xd0, 0x79, 0x67, 0x0a, 0x0b, + 0x5c, 0xca, 0x22, 0x59, 0x75, 0xdd, 0x59, 0x81, 0x51, 0x26, 0x33, 0xa7, 0x33, 0xcc, 0x97, 0x51, + 0x29, 0xdb, 0x60, 0xa0, 0x78, 0x02, 0x14, 0x04, 0x16, 0x5d, 0x44, 0x4d, 0xb7, 0x8d, 0xbb, 0xb3, + 0x49, 0x03, 0x44, 0x52, 0xb5, 0x4d, 0xd6, 0x60, 0x26, 0x04, 0x60, 0xd8, 0x67, 0x32, 0xb0, 0x97, + 0x10, 0x8c, 0x61, 0x2f, 0x88, 0x32, 0x35, 0x51, 0x0b, 0x73, 0xc9, 0x62, 0x0e, 0xb5, 0xfc, 0x10, + 0x9e, 0x25, 0xa1, 0xbb, 0xed, 0x4d, 0x20, 0xbe, 0x5d, 0xef, 0x7a, 0xb6, 0x29, 0xc3, 0x89, 0x53, + 0x78, 0xcc, 0x59, 0x8f, 0xa0, 0x43, 0xa2, 0x19, 0xd8, 0x1c, 0x2e, 0x2c, 0x9c, 0x68, 0x04, 0xd8, + 0x0c, 0x01, 0x9c, 0xf6, 0xa1, 0xbb, 0x40, 0x50, 0x2a, 0x3d, 0x9b, 0xd1, 0x1f, 0x9c, 0xf0, 0x4a, + 0xfb, 0xd0, 0x65, 0x12, 0x88, 0x63, 0xa2, 0x09, 0xe4, 0x5d, 0x98, 0x96, 0xf6, 0xd7, 0xfe, 0xc2, + 0x3c, 0xa2, 0xea, 0xb9, 0xc1, 0x9e, 0x8a, 0x36, 0xd8, 0x3e, 0x29, 0xc7, 0xd7, 0xb3, 0xd3, 0x88, + 0xe0, 0x6a, 0xbf, 0xf5, 0x4c, 0x5d, 0xbd, 0x28, 0x47, 0xda, 0x9e, 0xe7, 0x7a, 0xe8, 0x49, 0x30, + 0x69, 0xb0, 0x0f, 0xf2, 0x3e, 0x14, 0xb9, 0xc1, 0xa1, 0xee, 0xb6, 0xfd, 0x6e, 0xcb, 0xf6, 0xfc, + 0x85, 0xb3, 0x88, 0xff, 0x4a, 0x46, 0x5b, 0xd7, 0x38, 0x9c, 0x31, 0x7b, 0xac, 0x7c, 0xfb, 0x74, + 0x04, 0x0e, 0x7d, 0xd3, 0xb3, 0x51, 0xb1, 0xe3, 0x87, 0x75, 0xc2, 0xbd, 0xa0, 0x78, 0xe8, 0x1b, + 0x98, 0xc1, 0xcf, 0xe0, 0x1a, 0xe4, 0xad, 0xb0, 0x83, 0x71, 0x2a, 0x2e, 0xf4, 0x9d, 0x0d, 0xbc, + 0x4f, 0x69, 0x02, 0x2d, 0xdc, 0xb0, 0xa3, 0xc2, 0xe7, 0xfb, 0x17, 0x66, 0xe0, 0xbc, 0xf0, 0xc4, + 0x61, 0x87, 0x79, 0xc6, 0xf1, 0x83, 0x89, 0x6c, 0xd7, 0x36, 0x06, 0x66, 0x84, 0x05, 0xc8, 0xbb, + 0x50, 0x08, 0xa7, 0xb0, 0x79, 0xe8, 0x3c, 0xc4, 0x03, 0x8a, 0xde, 0x75, 0x4f, 0x89, 0x69, 0xbc, + 0xe1, 0x3c, 0x24, 0x1f, 0x42, 0x31, 0x2a, 0xcf, 0xa7, 0xe8, 0xc5, 0x0c, 0xd7, 0xb3, 0x0d, 0xa7, + 0x69, 0xfb, 0x27, 0x7e, 0x60, 0xb7, 0x36, 0x6d, 0xab, 0x19, 0xfa, 0xd9, 0xcd, 0x08, 0x7c, 0xec, + 0x3b, 0x79, 0x2a, 0x7e, 0xe9, 0x49, 0x9e, 0x8a, 0x5f, 0x7e, 0xf4, 0x53, 0xf1, 0x4d, 0x20, 0x0d, + 0xdb, 0x73, 0x8e, 0xed, 0x86, 0x29, 0xd9, 0xd6, 0xae, 0xf4, 0x75, 0x5a, 0x2a, 0xf2, 0x52, 0x61, + 0x0a, 0x9d, 0xae, 0x4e, 0xdb, 0x0c, 0x3c, 0xcb, 0xbf, 0x4f, 0x45, 0xe7, 0x55, 0x76, 0xca, 0xec, + 0xb4, 0xf7, 0x78, 0xca, 0xe2, 0x3b, 0x30, 0x1b, 0x9b, 0x83, 0x43, 0x69, 0x66, 0xff, 0x2c, 0x07, + 0xa3, 0xb4, 0x37, 0xd1, 0xf9, 0x90, 0xae, 0x30, 0xbe, 0xf0, 0x41, 0xc5, 0x0f, 0x72, 0x0e, 0xc6, + 0xd1, 0x39, 0xad, 0xe5, 0x73, 0x27, 0xb1, 0x31, 0xfa, 0xb9, 0x8d, 0xfa, 0x29, 0xf3, 0x5a, 0x0b, + 0x3d, 0xd6, 0x46, 0x0c, 0xf4, 0x81, 0x5b, 0x45, 0x77, 0xb5, 0xb3, 0x30, 0x86, 0x9a, 0x36, 0xf3, + 0x52, 0x1b, 0x31, 0xf8, 0x17, 0x39, 0x0f, 0x13, 0x4c, 0x03, 0x6f, 0x89, 0x2b, 0x8c, 0xe3, 0xf8, + 0xbd, 0x8d, 0xae, 0x04, 0xdc, 0xc3, 0x0d, 0x51, 0x8e, 0x61, 0x2e, 0xf3, 0x9c, 0x63, 0x38, 0xaf, + 0xe0, 0x66, 0xaf, 0xe3, 0xb9, 0x47, 0x9e, 0xed, 0xfb, 0xfc, 0x9a, 0x1b, 0xa0, 0x31, 0x12, 0x53, + 0xc8, 0x3c, 0x8c, 0x3a, 0x2e, 0xc5, 0x3c, 0x21, 0x2e, 0x47, 0x32, 0x42, 0x11, 0xa1, 0x89, 0xd7, + 0x17, 0xd9, 0x95, 0xc6, 0x49, 0x4c, 0xc1, 0x7b, 0x70, 0xd8, 0xc1, 0x7c, 0xff, 0xd4, 0xf2, 0xf9, + 0xf5, 0x46, 0x10, 0x49, 0xdb, 0x3e, 0x79, 0x0a, 0x0a, 0xdd, 0xb6, 0xf3, 0x59, 0x97, 0xfb, 0x97, + 0xfb, 0x28, 0xc3, 0x47, 0x8c, 0x69, 0x96, 0x88, 0xde, 0xe3, 0xbe, 0xfe, 0x3d, 0x1a, 0xcc, 0xad, + 0x59, 0x1d, 0xab, 0xee, 0x04, 0x27, 0xfb, 0x74, 0xc5, 0x43, 0x01, 0x88, 0x6e, 0xb5, 0xf5, 0x66, + 0xd7, 0x77, 0x8e, 0x45, 0xab, 0x34, 0xf4, 0x80, 0x9b, 0x09, 0x93, 0x59, 0xcb, 0xae, 0x89, 0x4d, + 0x14, 0x87, 0x42, 0x93, 0xae, 0x31, 0xc5, 0xd2, 0xc2, 0xc6, 0x07, 0x6e, 0x60, 0x35, 0xa5, 0x0e, + 0xcf, 0x1b, 0x80, 0x49, 0x08, 0xa0, 0xff, 0xa9, 0x06, 0x53, 0x4c, 0x50, 0x21, 0x01, 0xe4, 0x02, + 0x4c, 0x86, 0x37, 0x75, 0x38, 0x2f, 0x4c, 0x88, 0x8b, 0x3a, 0x14, 0x1b, 0xcf, 0x94, 0xee, 0x24, + 0xf0, 0x9b, 0x3d, 0x78, 0x25, 0xe1, 0x02, 0x4c, 0x86, 0xdb, 0x0f, 0x7e, 0x1f, 0x61, 0x42, 0xec, + 0x3e, 0xd2, 0xda, 0xc5, 0x46, 0x39, 0xde, 0xae, 0x18, 0xd1, 0x6c, 0xc0, 0x25, 0xa2, 0xc9, 0x0b, + 0x70, 0x9a, 0xea, 0x26, 0x4d, 0x93, 0xdd, 0xc4, 0x14, 0x3b, 0x53, 0xee, 0x5e, 0x4c, 0x30, 0x6f, + 0x8d, 0x66, 0xd5, 0x78, 0x8e, 0xbe, 0x27, 0x76, 0xec, 0xd8, 0xca, 0xd5, 0x93, 0x1d, 0xb7, 0x61, + 0x93, 0xf7, 0x80, 0xdb, 0x7c, 0x4d, 0xa6, 0x7b, 0x30, 0xfd, 0x3c, 0x6b, 0x11, 0xc7, 0x92, 0x06, + 0xef, 0x00, 0xfc, 0xd0, 0xab, 0x30, 0xcb, 0xf2, 0x56, 0x43, 0xc6, 0xe8, 0xd7, 0x7f, 0x72, 0xc3, + 0x72, 0xf1, 0x86, 0xe9, 0x2e, 0x9c, 0x89, 0x21, 0xe4, 0xa4, 0x4a, 0x4e, 0xdd, 0xfc, 0xae, 0x52, + 0xe8, 0xd4, 0x4d, 0xeb, 0xe3, 0x0d, 0xc8, 0x65, 0xac, 0x74, 0x31, 0x9c, 0x48, 0x11, 0x6b, 0xc1, + 0xef, 0x68, 0x70, 0x86, 0x19, 0x45, 0xa4, 0x46, 0x22, 0x17, 0xc6, 0xc6, 0x5a, 0x4b, 0x8c, 0x75, + 0x04, 0x20, 0x39, 0x83, 0x72, 0x00, 0xe1, 0xc2, 0xd9, 0xe8, 0x72, 0xca, 0xd8, 0x4c, 0x1f, 0x6f, + 0x74, 0x19, 0x97, 0x9d, 0x87, 0x89, 0xce, 0x43, 0x9e, 0xc5, 0x78, 0x60, 0xbc, 0xf3, 0x90, 0x65, + 0x2d, 0xc3, 0x7c, 0xc7, 0xf6, 0xa8, 0x5a, 0x66, 0xca, 0x66, 0x1c, 0xe6, 0x58, 0x3e, 0xc7, 0xb3, + 0x4a, 0xa1, 0x2d, 0x47, 0x7f, 0x19, 0xe6, 0x0d, 0xbb, 0x69, 0x3d, 0xb4, 0x1b, 0x86, 0x5d, 0x6f, + 0x5a, 0x4e, 0x6b, 0xb7, 0xeb, 0x1d, 0xd9, 0x74, 0xfe, 0xb6, 0xbb, 0x2d, 0xb3, 0x43, 0x3f, 0x84, + 0x83, 0xfc, 0x64, 0xbb, 0xcb, 0x72, 0x1b, 0xfa, 0x7f, 0xa3, 0x41, 0x51, 0xbe, 0x78, 0x88, 0x86, + 0xbf, 0xb4, 0xcb, 0x16, 0x6f, 0xc0, 0x18, 0xb7, 0x23, 0x32, 0x85, 0xfd, 0x5a, 0x5f, 0x03, 0xaa, + 0xc1, 0x0b, 0x50, 0xd1, 0x88, 0x2e, 0x78, 0xfc, 0x3e, 0x17, 0xfb, 0xa0, 0x93, 0xd6, 0x6a, 0x36, + 0xdd, 0xcf, 0xcd, 0x2e, 0xba, 0x91, 0x70, 0x35, 0x7d, 0x0a, 0xd3, 0xb8, 0x67, 0x89, 0xe2, 0x0a, + 0x30, 0x3a, 0x84, 0x2b, 0x80, 0xfe, 0x5b, 0x79, 0x18, 0x2d, 0x35, 0x6d, 0x2f, 0x90, 0x36, 0x1e, + 0x79, 0xdc, 0x78, 0xbc, 0x01, 0x13, 0xbe, 0x7d, 0x6c, 0x7b, 0x4e, 0x70, 0xc2, 0x77, 0x41, 0x29, + 0x66, 0x35, 0x0e, 0x80, 0x9a, 0x71, 0x08, 0x4e, 0xbb, 0xd2, 0xa2, 0x38, 0x99, 0x73, 0x21, 0x13, + 0x21, 0x93, 0x98, 0x82, 0xbb, 0xa1, 0x05, 0x18, 0x6f, 0xd9, 0x7e, 0x38, 0x94, 0x93, 0x86, 0xf8, + 0xa4, 0xed, 0x08, 0x6f, 0xcb, 0x87, 0xed, 0xc8, 0x5e, 0xf7, 0x23, 0x60, 0xca, 0x5b, 0x1e, 0xbf, + 0x2e, 0x6f, 0x86, 0xde, 0xeb, 0x20, 0x92, 0x2a, 0xd8, 0x1c, 0xf1, 0xc5, 0x3d, 0x63, 0x2e, 0xa5, + 0x28, 0x88, 0x0c, 0x80, 0x35, 0x47, 0x80, 0x53, 0x7a, 0xeb, 0x4d, 0x3b, 0x3a, 0xda, 0x31, 0xc4, + 0x27, 0x5d, 0x01, 0x83, 0xa0, 0xc9, 0x85, 0x3d, 0xfd, 0x49, 0x9b, 0xce, 0xa5, 0x78, 0x60, 0x1d, + 0xf1, 0x5b, 0x05, 0x93, 0x2c, 0x65, 0xcf, 0x3a, 0xc2, 0xdb, 0xe4, 0x74, 0x01, 0xc7, 0x4d, 0x43, + 0xde, 0x60, 0x1f, 0xe4, 0x0d, 0x80, 0x43, 0xc7, 0xa3, 0x3a, 0x8b, 0x6d, 0x0f, 0x72, 0x73, 0x7d, + 0x12, 0xa1, 0x6b, 0xb6, 0xdd, 0xd6, 0xff, 0xa6, 0x06, 0x73, 0xb5, 0xc6, 0x03, 0x1c, 0x42, 0x9f, + 0x42, 0xd4, 0x3a, 0x56, 0x9b, 0x22, 0xf4, 0x03, 0x8b, 0x0e, 0x80, 0xc3, 0xb9, 0xb3, 0x0f, 0x42, + 0x84, 0x46, 0xdd, 0xed, 0x15, 0xbc, 0xab, 0xc5, 0x0a, 0xe6, 0xfa, 0x16, 0x1c, 0xb7, 0xdb, 0x0d, + 0xfa, 0xa5, 0xef, 0x00, 0x09, 0xc9, 0x58, 0xa3, 0x8d, 0x42, 0x3a, 0x2e, 0xc0, 0x64, 0xcb, 0x69, + 0x9b, 0xac, 0xc9, 0x8c, 0xb5, 0x26, 0x5a, 0x4e, 0x1b, 0x01, 0x30, 0xd3, 0x7a, 0xc8, 0x33, 0x73, + 0x3c, 0xd3, 0x7a, 0x88, 0x99, 0xfa, 0x8f, 0xe6, 0x60, 0x36, 0x44, 0xc8, 0xd4, 0x1d, 0xf2, 0x01, + 0xcc, 0x51, 0x6c, 0x82, 0xcd, 0x4c, 0xc9, 0xe2, 0xd2, 0x9b, 0x35, 0x37, 0x4f, 0x19, 0xb3, 0x2d, + 0xa7, 0x2d, 0x27, 0x91, 0x2b, 0x00, 0x8e, 0x6f, 0x8a, 0x71, 0xc5, 0x9b, 0x19, 0x9b, 0xa7, 0x8c, + 0x49, 0xc7, 0x5f, 0xe3, 0x63, 0x5b, 0x62, 0xbc, 0x68, 0xfa, 0x1d, 0xab, 0xcd, 0xf7, 0xd2, 0x7a, + 0xda, 0x55, 0x64, 0xb5, 0xeb, 0x37, 0x4f, 0x19, 0x13, 0x81, 0x18, 0x86, 0x75, 0x00, 0x6c, 0x1d, + 0xc3, 0xc1, 0x2e, 0xa9, 0x3d, 0x95, 0x8d, 0x23, 0xec, 0x37, 0x4a, 0x48, 0x5d, 0x7c, 0xac, 0x8e, + 0x42, 0xde, 0xed, 0x04, 0xfa, 0x97, 0x61, 0x31, 0x84, 0x94, 0x19, 0xf5, 0xc3, 0xae, 0xed, 0xa1, + 0xe3, 0x66, 0xc8, 0xff, 0x3d, 0xfb, 0x45, 0xe1, 0xf1, 0x69, 0x4f, 0xfa, 0xd2, 0xbf, 0x13, 0xce, + 0x85, 0x35, 0x94, 0xc4, 0x6c, 0x7d, 0x62, 0xe8, 0x63, 0x52, 0x21, 0x17, 0x93, 0x0a, 0xfa, 0x2f, + 0x6a, 0xb0, 0x90, 0x68, 0x60, 0xa5, 0xf1, 0xed, 0xaa, 0x3f, 0x2e, 0x41, 0xf2, 0x71, 0x09, 0xa2, + 0xff, 0x49, 0x0e, 0x66, 0x42, 0x02, 0x19, 0x59, 0x5f, 0x82, 0x79, 0x85, 0x2c, 0xf3, 0x33, 0x9a, + 0xcc, 0x27, 0xdc, 0xf3, 0xd9, 0x23, 0x9d, 0x18, 0xbf, 0xcd, 0x53, 0xc6, 0x9c, 0x97, 0x18, 0xd4, + 0x3d, 0x28, 0x46, 0x14, 0x73, 0xdc, 0x59, 0x66, 0xcb, 0x8c, 0x91, 0xdb, 0x3c, 0x65, 0xcc, 0x58, + 0xea, 0x58, 0xde, 0x83, 0x39, 0xa9, 0xa1, 0x1c, 0x2d, 0x63, 0xf0, 0xe7, 0xfa, 0x93, 0xcc, 0x47, + 0x84, 0x4e, 0x29, 0x2f, 0x36, 0x48, 0x2f, 0xc3, 0x88, 0xdb, 0x09, 0xc4, 0x95, 0xa4, 0xab, 0xd9, + 0xb8, 0xd8, 0x7c, 0x36, 0x10, 0x7a, 0x75, 0x1c, 0x46, 0x91, 0x04, 0xdd, 0x82, 0xa7, 0x43, 0x88, + 0x72, 0x9b, 0xee, 0x78, 0xad, 0xc0, 0xbe, 0xe7, 0x04, 0xf7, 0x37, 0x9c, 0x66, 0x60, 0x7b, 0x3e, + 0xdd, 0xd8, 0xda, 0x3e, 0x95, 0x96, 0xe3, 0xb4, 0x80, 0x63, 0x0b, 0xfb, 0xe8, 0x95, 0xec, 0x9a, + 0x90, 0x30, 0x43, 0xc0, 0xeb, 0xf7, 0xe0, 0x7a, 0x9f, 0x2a, 0xfc, 0x8e, 0xdb, 0xf6, 0xa9, 0x4e, + 0x31, 0x86, 0xbd, 0x26, 0xaa, 0x48, 0x5a, 0xd1, 0x10, 0x89, 0xc1, 0xa1, 0xf4, 0x1a, 0x9c, 0x0d, + 0x11, 0xaf, 0xdb, 0x4d, 0x3b, 0xb0, 0x9f, 0x00, 0xb5, 0xe7, 0xa5, 0xf9, 0x28, 0x90, 0x32, 0xfa, + 0xf4, 0x57, 0x61, 0x8c, 0xa5, 0x93, 0x9b, 0x30, 0x8a, 0x34, 0xf4, 0x21, 0x94, 0x01, 0xe9, 0xff, + 0x22, 0x07, 0xb3, 0xd5, 0x83, 0x4f, 0xed, 0x7a, 0x40, 0x41, 0x98, 0xde, 0x26, 0xe2, 0x6b, 0x68, + 0x52, 0x7c, 0x0d, 0x45, 0x29, 0xcd, 0xc5, 0x94, 0xd2, 0x05, 0x18, 0xb7, 0xdb, 0xd6, 0x41, 0xd3, + 0x6e, 0x70, 0x45, 0x45, 0x7c, 0xb2, 0x4b, 0x16, 0x61, 0xec, 0x86, 0xc9, 0xd0, 0xea, 0x75, 0x36, + 0xbc, 0xc2, 0xc5, 0x6e, 0xe6, 0xf0, 0x2f, 0x9c, 0x92, 0x68, 0x25, 0x35, 0xe9, 0x46, 0x92, 0x5f, + 0x39, 0x63, 0x29, 0x1f, 0xd8, 0x27, 0xec, 0x92, 0x75, 0xdd, 0xb3, 0x03, 0xcc, 0x1e, 0x17, 0x97, + 0xac, 0x69, 0x0a, 0xcd, 0xc6, 0x3b, 0x25, 0xcc, 0xaf, 0x85, 0x6e, 0xc5, 0xf0, 0xe4, 0x22, 0x4c, + 0x20, 0xcf, 0x41, 0xb1, 0xde, 0xf5, 0x3c, 0xbb, 0x1d, 0x44, 0x8e, 0x53, 0x93, 0xcc, 0xfd, 0x98, + 0xa7, 0x0b, 0xb7, 0x29, 0xb4, 0x55, 0x31, 0x32, 0x3a, 0xae, 0xc7, 0x2c, 0x80, 0x79, 0x83, 0x53, + 0xb6, 0xeb, 0x7a, 0x01, 0x06, 0xb0, 0xb1, 0x8f, 0x44, 0x98, 0x91, 0x49, 0x83, 0x7f, 0xe9, 0xbf, + 0xa6, 0xc1, 0x3c, 0x37, 0xda, 0xa0, 0x3f, 0xb3, 0x18, 0x74, 0xc9, 0x72, 0xaa, 0x0d, 0x67, 0x39, + 0x1d, 0xda, 0xdc, 0x2b, 0x0c, 0xa7, 0xf9, 0x01, 0x0d, 0xa7, 0xfa, 0x33, 0x30, 0xc3, 0xd2, 0x42, + 0x66, 0x0f, 0x0d, 0x57, 0x9a, 0x64, 0xb8, 0xd2, 0x3b, 0x22, 0x42, 0x82, 0x68, 0x1a, 0x87, 0x8e, + 0x1b, 0xa8, 0x37, 0x81, 0xdb, 0xa9, 0x4c, 0x8f, 0x83, 0x70, 0xd2, 0xb3, 0xec, 0x5b, 0x02, 0x93, + 0x31, 0x73, 0xac, 0x7c, 0xeb, 0x7f, 0xa0, 0x89, 0x3d, 0x17, 0x1a, 0xd4, 0xf8, 0x7d, 0xba, 0x37, + 0x61, 0x8c, 0xd9, 0xa5, 0xb8, 0xcc, 0xd7, 0x33, 0xd0, 0x32, 0x70, 0x8c, 0xf8, 0x61, 0xf0, 0x12, + 0xe4, 0x75, 0x18, 0x6d, 0x85, 0xea, 0xc5, 0x60, 0x45, 0x59, 0x01, 0xca, 0x7a, 0xcc, 0x4a, 0x83, + 0xd6, 0x4b, 0xb6, 0x18, 0xb0, 0xc3, 0x3f, 0x61, 0xdd, 0x94, 0x8d, 0xa0, 0x23, 0x71, 0x63, 0xa9, + 0xfe, 0x3b, 0xb9, 0xd0, 0xc7, 0xca, 0x0e, 0x9e, 0x04, 0x5b, 0xb0, 0x51, 0xce, 0x0d, 0x6a, 0x1e, + 0x7f, 0x33, 0x9c, 0x71, 0x59, 0xaa, 0x4b, 0xa2, 0xa7, 0xc3, 0x59, 0xb9, 0x19, 0x5d, 0x5f, 0x1e, + 0xc9, 0x08, 0x5f, 0x13, 0x6f, 0xda, 0xb7, 0xe0, 0x0a, 0xf3, 0x8f, 0x44, 0xdc, 0x40, 0xab, 0xe1, + 0xdc, 0x77, 0x1b, 0xc6, 0x18, 0xd7, 0xf0, 0x1e, 0x3c, 0x97, 0xc5, 0x64, 0x1c, 0xec, 0x09, 0xb2, + 0xe7, 0x4f, 0x52, 0x55, 0xbb, 0x6d, 0x75, 0xd4, 0xa9, 0x1e, 0x9f, 0x0e, 0xd2, 0x18, 0xe7, 0x86, + 0x1b, 0x63, 0xf9, 0x28, 0x26, 0x1f, 0x3b, 0x8a, 0x39, 0x0f, 0x13, 0x6d, 0xd7, 0xf4, 0xec, 0xc0, + 0x13, 0xc7, 0x34, 0xe3, 0x6d, 0xd7, 0xa0, 0x9f, 0xfa, 0x67, 0x40, 0x64, 0xaa, 0x78, 0x3f, 0x7d, + 0x11, 0xce, 0x0a, 0xb3, 0x33, 0xbb, 0x81, 0x11, 0xb6, 0x5e, 0xcb, 0x08, 0x94, 0x94, 0x36, 0xd9, + 0x8d, 0xd3, 0xc7, 0x29, 0xa9, 0x7a, 0x20, 0xae, 0x7e, 0xe2, 0xfa, 0xd1, 0xd3, 0x80, 0x91, 0x16, + 0xaa, 0xec, 0x15, 0x18, 0xe7, 0x15, 0x0f, 0x22, 0xb5, 0x04, 0xac, 0xfe, 0xab, 0x9a, 0x90, 0x5c, + 0xc2, 0x22, 0x9e, 0xba, 0xff, 0xbe, 0x08, 0x93, 0xf4, 0xbf, 0xdf, 0xb1, 0xea, 0x82, 0xab, 0xa2, + 0x04, 0x5a, 0x22, 0xdc, 0x94, 0x4e, 0xf2, 0x70, 0x46, 0x92, 0xa9, 0x64, 0x44, 0x31, 0x95, 0x5c, + 0x02, 0xc0, 0x9d, 0x32, 0x33, 0x68, 0x30, 0x83, 0x02, 0xdb, 0x3b, 0xa3, 0x3d, 0x23, 0xcc, 0x46, + 0x8c, 0x63, 0x52, 0x36, 0x2a, 0xb4, 0xff, 0x4a, 0x13, 0x12, 0x94, 0xbb, 0xac, 0x08, 0x96, 0x39, + 0x07, 0xe3, 0xbe, 0x77, 0x6c, 0xd6, 0x5b, 0xa1, 0x69, 0xc6, 0xf7, 0x8e, 0xd7, 0x5a, 0x0d, 0xf2, + 0x25, 0x98, 0xe1, 0x19, 0x26, 0x8f, 0xa6, 0xc4, 0xec, 0x33, 0xaf, 0x65, 0xce, 0x3f, 0x19, 0xef, + 0x72, 0x0d, 0xb1, 0xc8, 0x31, 0x95, 0xa6, 0x7d, 0x29, 0x69, 0xf1, 0x3d, 0x98, 0x4b, 0x80, 0x0c, + 0x67, 0xc4, 0xd5, 0xe0, 0x92, 0x52, 0x73, 0xa5, 0xed, 0x07, 0x56, 0xbb, 0xde, 0x67, 0x29, 0x21, + 0x46, 0xa8, 0x16, 0xb0, 0xf6, 0xbc, 0xd9, 0xbb, 0x3d, 0x71, 0xac, 0xcb, 0xcc, 0x0c, 0xcf, 0x8f, + 0xb5, 0xa3, 0xe8, 0x4e, 0x52, 0xf2, 0x50, 0xcd, 0xf8, 0x86, 0x26, 0x8c, 0x66, 0x61, 0x07, 0x72, + 0xf2, 0x6f, 0xc2, 0xfc, 0xb1, 0xdb, 0x34, 0xe9, 0x20, 0x78, 0x7e, 0xc7, 0x74, 0x0f, 0x3e, 0x35, + 0xeb, 0x7c, 0xe7, 0x3a, 0x8a, 0xc7, 0x31, 0x35, 0xef, 0xd8, 0xf0, 0x3b, 0xd5, 0x83, 0x4f, 0xd7, + 0xda, 0x01, 0xd9, 0x41, 0x7b, 0x96, 0x80, 0xe6, 0x6d, 0x5b, 0x1e, 0xae, 0x6d, 0x18, 0xd4, 0x88, + 0x61, 0xd5, 0x1b, 0x40, 0xee, 0x78, 0x56, 0xe7, 0x3e, 0x06, 0x84, 0xf3, 0xd6, 0xee, 0x5b, 0xed, + 0x23, 0xdb, 0x0f, 0x67, 0x90, 0x26, 0xcd, 0xa0, 0x37, 0x61, 0xe4, 0x81, 0xd3, 0x6e, 0x64, 0x5e, + 0x88, 0x4f, 0xa0, 0x61, 0xfe, 0x06, 0xb4, 0x8c, 0xfe, 0x2c, 0xcc, 0xae, 0x35, 0xbb, 0x7e, 0x60, + 0x7b, 0x7d, 0x14, 0x80, 0x9f, 0xd2, 0xa0, 0x40, 0x57, 0x86, 0xe3, 0x90, 0x71, 0x37, 0x61, 0xc2, + 0xb0, 0x3f, 0xb3, 0xfd, 0xe0, 0x83, 0xbb, 0x5c, 0xdd, 0x4c, 0xfa, 0xba, 0x2b, 0x25, 0x96, 0x05, + 0x38, 0x1b, 0xbb, 0xb0, 0xf4, 0xe2, 0x5b, 0x50, 0x50, 0xb2, 0xe4, 0xf1, 0xcb, 0xf7, 0x1b, 0xbf, + 0xaf, 0xc0, 0x8c, 0x52, 0x8b, 0x4f, 0x74, 0x98, 0xe6, 0xbf, 0xd7, 0x24, 0x53, 0x83, 0x92, 0x46, + 0xd6, 0x63, 0xad, 0xe1, 0xe3, 0x75, 0xb9, 0x77, 0x0b, 0x0c, 0xb5, 0x90, 0xfe, 0x7f, 0x69, 0x70, + 0x16, 0x0f, 0xd0, 0xfb, 0xaf, 0x04, 0x1f, 0xc0, 0xd8, 0x96, 0x1c, 0x7a, 0xeb, 0xa5, 0xf4, 0x93, + 0xf8, 0x04, 0x22, 0x35, 0x5e, 0x18, 0xf7, 0x2e, 0x56, 0xe3, 0x61, 0xe5, 0x63, 0xf1, 0xb0, 0xc8, + 0x12, 0xcc, 0x35, 0x70, 0x87, 0x60, 0xba, 0x6d, 0x0c, 0xd0, 0xd0, 0xf5, 0x84, 0xa1, 0x70, 0x96, + 0x65, 0x54, 0xdb, 0x1b, 0x2c, 0xf9, 0x71, 0x42, 0x8f, 0xfd, 0x99, 0x06, 0xe7, 0x12, 0x44, 0x73, + 0x26, 0xda, 0x87, 0x49, 0x61, 0x56, 0x17, 0x5b, 0x9d, 0xd7, 0xfa, 0xb7, 0x58, 0xcc, 0x70, 0x51, + 0x92, 0xb5, 0x3a, 0xc2, 0x14, 0xf1, 0x66, 0x4e, 0xe2, 0xcd, 0x45, 0x0b, 0x66, 0xd4, 0x22, 0x29, + 0xcd, 0x78, 0x43, 0x6e, 0x46, 0xaa, 0xe1, 0x25, 0x41, 0x87, 0xdc, 0xd6, 0xff, 0x6e, 0x22, 0x0c, + 0xc6, 0x88, 0x06, 0xf5, 0xf8, 0xf0, 0x16, 0x21, 0x5f, 0xef, 0x74, 0x11, 0xb9, 0x66, 0xd0, 0x9f, + 0x74, 0x21, 0xac, 0x77, 0xba, 0x66, 0xdd, 0xf5, 0x6c, 0x1f, 0x0f, 0x81, 0xf3, 0xc6, 0x44, 0xbd, + 0xd3, 0x5d, 0xa3, 0xdf, 0x68, 0xed, 0xb2, 0x5b, 0x26, 0x9a, 0xee, 0xb9, 0x71, 0x7b, 0xa2, 0x65, + 0xb7, 0x30, 0x78, 0x22, 0x5d, 0xde, 0x69, 0x26, 0x9e, 0x1c, 0x71, 0xeb, 0x76, 0xcb, 0x6e, 0xe1, + 0xf1, 0x00, 0xcf, 0x3a, 0xf4, 0x6c, 0x5b, 0x1c, 0x64, 0xb5, 0xec, 0xd6, 0x86, 0x67, 0xa3, 0x4d, + 0xdc, 0x3a, 0x3e, 0x32, 0x9b, 0xae, 0xc5, 0x0c, 0x9e, 0x79, 0x63, 0xdc, 0x3a, 0x3e, 0xda, 0x72, + 0x2d, 0xe6, 0x35, 0xc2, 0x24, 0xee, 0x78, 0x86, 0x3b, 0x43, 0xcc, 0x2f, 0xe1, 0x1d, 0x18, 0x6d, + 0x38, 0xfe, 0x03, 0x11, 0xa5, 0xf1, 0xd9, 0xac, 0xf8, 0x7d, 0xb4, 0x2b, 0x96, 0xd7, 0x29, 0x24, + 0x1b, 0x29, 0x56, 0x8a, 0xac, 0xc0, 0x68, 0xc7, 0x75, 0xc3, 0x68, 0x05, 0x17, 0x7b, 0x85, 0xff, + 0x33, 0x18, 0x28, 0x5d, 0x06, 0x5b, 0x47, 0xad, 0xc0, 0x74, 0x3a, 0x62, 0x57, 0x45, 0x3f, 0x2b, + 0x1d, 0x9a, 0x81, 0x31, 0x35, 0x9d, 0x0e, 0xda, 0x42, 0x27, 0x8d, 0x31, 0xfa, 0x59, 0x41, 0x67, + 0x95, 0xfb, 0xae, 0x1f, 0xe0, 0x6a, 0xcc, 0xfc, 0x13, 0xc2, 0x6f, 0xb2, 0x0d, 0x53, 0xb8, 0x88, + 0x73, 0xb7, 0xfe, 0x62, 0x86, 0x78, 0x92, 0x9b, 0x41, 0xff, 0xc8, 0x73, 0x0d, 0xda, 0x61, 0x02, + 0x59, 0x86, 0x79, 0xe1, 0xb5, 0xe8, 0x99, 0x88, 0x18, 0x6b, 0x9d, 0x63, 0x87, 0x0a, 0x61, 0x16, + 0x45, 0x81, 0xba, 0xc0, 0x2b, 0x30, 0xb6, 0x79, 0x8f, 0x4a, 0x59, 0x74, 0x49, 0x4f, 0xb3, 0x4c, + 0x6d, 0x5a, 0x5e, 0xe3, 0x73, 0xcb, 0x63, 0xa2, 0x98, 0x03, 0x93, 0x3d, 0x98, 0x45, 0xcf, 0x09, + 0x27, 0x38, 0x11, 0x67, 0xd5, 0xf3, 0x58, 0xfe, 0xf9, 0x9e, 0x94, 0xd7, 0x78, 0x19, 0x71, 0x5e, + 0xed, 0x2b, 0xdf, 0xe4, 0x43, 0x20, 0x11, 0xf1, 0xe2, 0x6e, 0xee, 0xc2, 0xe9, 0x2c, 0x1b, 0x66, + 0x3c, 0x14, 0xa5, 0xd4, 0xbe, 0x30, 0xa2, 0xe5, 0x12, 0xcc, 0xb5, 0xdd, 0xb6, 0xf9, 0x59, 0xd7, + 0xf5, 0xba, 0x2d, 0xb3, 0x65, 0xb7, 0x0e, 0x6c, 0x8f, 0xc7, 0x3e, 0x98, 0x6d, 0xbb, 0xed, 0x0f, + 0x31, 0x7d, 0x1b, 0x93, 0xc9, 0x75, 0x98, 0xa9, 0xb3, 0x15, 0xc6, 0x6c, 0xb8, 0x2d, 0xcb, 0x69, + 0xa3, 0x8b, 0xc2, 0xa4, 0x51, 0xe0, 0xa9, 0xeb, 0x98, 0xb8, 0xf8, 0x09, 0x40, 0xc4, 0x48, 0x29, + 0xf3, 0xf7, 0x55, 0x75, 0xfe, 0x5e, 0xcd, 0xea, 0x11, 0x61, 0x99, 0x92, 0xfd, 0xbc, 0xde, 0x81, + 0xd9, 0xd8, 0xe8, 0x0e, 0x25, 0xe7, 0xa8, 0x78, 0x51, 0xbb, 0x34, 0x11, 0x7e, 0xaa, 0x00, 0x93, + 0xfb, 0x3b, 0xb5, 0xf2, 0xda, 0xbe, 0x51, 0x5e, 0x67, 0xbe, 0xb7, 0xe2, 0x23, 0x47, 0x74, 0xb8, + 0xcc, 0x3f, 0xcc, 0xd2, 0xd6, 0x56, 0xf5, 0x9e, 0x89, 0x5f, 0x95, 0xbd, 0x8f, 0x4d, 0xa3, 0xbc, + 0x5d, 0xbd, 0x5b, 0xda, 0x2a, 0xe6, 0x75, 0x1b, 0x66, 0x38, 0xfd, 0x7c, 0x35, 0x96, 0xe6, 0xac, + 0x36, 0xd8, 0x9c, 0x65, 0x12, 0x29, 0x27, 0x87, 0x05, 0x96, 0x82, 0xc9, 0xe1, 0x6f, 0xfd, 0xf7, + 0x34, 0x98, 0x5f, 0xc5, 0x38, 0x77, 0xea, 0x62, 0x95, 0xa6, 0x39, 0x47, 0x56, 0x8e, 0x9c, 0x6c, + 0xe5, 0x50, 0xc2, 0xb7, 0xe5, 0x63, 0xe1, 0xdb, 0xee, 0xc3, 0x79, 0xab, 0xed, 0xb6, 0x4f, 0x5a, + 0x6e, 0xd7, 0x67, 0xf5, 0x30, 0xb7, 0xb7, 0x6d, 0xb7, 0x21, 0x2e, 0xf9, 0x24, 0x6f, 0x10, 0x94, + 0xb2, 0x4a, 0x18, 0xd9, 0xc8, 0xf4, 0x97, 0xe0, 0xb4, 0xda, 0x10, 0xbe, 0xee, 0x5c, 0x80, 0x49, + 0x1e, 0xdb, 0x2f, 0xda, 0x7e, 0xb0, 0x84, 0x4a, 0x43, 0xff, 0xfe, 0xb0, 0xf9, 0xaa, 0x55, 0xae, + 0x57, 0xa1, 0x47, 0xea, 0x87, 0x6b, 0x30, 0x8d, 0x67, 0x09, 0x26, 0xc3, 0x22, 0x0e, 0xe9, 0x30, + 0x8d, 0x11, 0xa0, 0x9f, 0x15, 0x0d, 0x88, 0xd9, 0xf2, 0xbe, 0x1b, 0x16, 0x58, 0xfa, 0x1d, 0xcf, + 0x6a, 0xf3, 0x16, 0x0f, 0x44, 0xe7, 0x35, 0x98, 0xb6, 0xea, 0xec, 0x80, 0x41, 0x8e, 0xf8, 0xc7, + 0xd3, 0x50, 0x2c, 0x3d, 0x05, 0x85, 0xd0, 0xb2, 0x85, 0x67, 0x92, 0x8c, 0xee, 0x69, 0x61, 0xdb, + 0xa2, 0x69, 0xfa, 0xf7, 0x69, 0x70, 0x3e, 0x85, 0x02, 0xde, 0xbf, 0xcc, 0x46, 0x87, 0xb5, 0x84, + 0x34, 0x4c, 0xf2, 0x94, 0x4a, 0x83, 0xbc, 0x0f, 0x53, 0x75, 0xcf, 0x6e, 0xd8, 0xed, 0xc0, 0xb1, + 0x7a, 0x78, 0xd5, 0xca, 0xc3, 0xb9, 0x16, 0xc1, 0x1b, 0x72, 0x61, 0xfd, 0x9e, 0xa0, 0xc3, 0xb0, + 0x8f, 0xdd, 0x07, 0xf6, 0x10, 0x5d, 0xa1, 0x12, 0x99, 0x8b, 0x11, 0xa9, 0x5f, 0x84, 0xc5, 0x34, + 0xc4, 0x7c, 0x00, 0x1c, 0x38, 0x97, 0x41, 0x1e, 0xd1, 0xc3, 0xfe, 0x7b, 0x60, 0x9f, 0x44, 0x15, + 0x4f, 0x85, 0x36, 0xca, 0x4a, 0x83, 0x8a, 0x46, 0x6e, 0xa5, 0x94, 0x6c, 0x99, 0x8c, 0x84, 0x59, + 0x96, 0x51, 0x12, 0xd0, 0x7a, 0x0b, 0xae, 0xd5, 0x1a, 0x0f, 0xaa, 0x1d, 0xbb, 0xad, 0x1c, 0x24, + 0xab, 0x73, 0x73, 0x33, 0x11, 0xba, 0x44, 0xcb, 0x38, 0x49, 0x8e, 0x1f, 0x48, 0xc7, 0xa2, 0x9b, + 0xe8, 0x4f, 0x83, 0xde, 0xab, 0x3a, 0xde, 0xfe, 0x67, 0xd0, 0xf0, 0x9e, 0x80, 0x0a, 0x0d, 0xe4, + 0x42, 0xf7, 0xed, 0xa2, 0xf5, 0xbc, 0x17, 0x1c, 0x67, 0x99, 0x2d, 0x28, 0x2a, 0x0d, 0x88, 0x8c, + 0xdf, 0x03, 0x34, 0x61, 0x56, 0x6e, 0x82, 0x63, 0xfb, 0xfa, 0xeb, 0xe9, 0x8d, 0xe0, 0x81, 0x5b, + 0x7b, 0x08, 0x34, 0xdd, 0x85, 0xa7, 0x7a, 0x96, 0xe4, 0xe4, 0x3e, 0xb9, 0xfe, 0x7e, 0x2d, 0x7d, + 0x78, 0x55, 0xd9, 0x93, 0x46, 0x69, 0xc6, 0x40, 0xc5, 0x24, 0x45, 0x06, 0xf7, 0x30, 0x27, 0x80, + 0x6f, 0x1b, 0xf7, 0x88, 0xea, 0x38, 0x51, 0x6f, 0xa5, 0x73, 0x45, 0x8d, 0xca, 0xb9, 0x43, 0xab, + 0xdb, 0xec, 0x39, 0x42, 0x37, 0xe0, 0x99, 0x7e, 0x85, 0x79, 0x35, 0x19, 0xc4, 0x18, 0x76, 0xd3, + 0xb6, 0xfc, 0x90, 0x45, 0xaf, 0xa7, 0x8f, 0x78, 0x08, 0xc5, 0x91, 0x3d, 0x0f, 0xcf, 0xa5, 0x77, + 0x37, 0xd6, 0xa9, 0x72, 0x96, 0x7e, 0x0c, 0x4b, 0x83, 0x00, 0x3f, 0x71, 0x66, 0x6a, 0xc1, 0x65, + 0x0a, 0xc2, 0x55, 0xb1, 0x34, 0x41, 0xf1, 0x01, 0xcc, 0x86, 0x57, 0x6b, 0x94, 0xca, 0x52, 0x0f, + 0xaa, 0x55, 0x4c, 0xc6, 0x8c, 0xaf, 0x7c, 0xeb, 0xd7, 0xe0, 0x4a, 0x66, 0x75, 0x21, 0xff, 0x25, + 0x29, 0x52, 0x99, 0xef, 0x5b, 0x4e, 0x51, 0x8c, 0xf9, 0x9e, 0xc2, 0x19, 0xa1, 0x82, 0x24, 0xe4, + 0x56, 0x03, 0x59, 0x27, 0x13, 0x88, 0x0f, 0xdc, 0xbb, 0x30, 0x11, 0x13, 0x56, 0x83, 0xd0, 0x1c, + 0x96, 0xd1, 0x5f, 0x49, 0xa1, 0x76, 0x00, 0x19, 0xf5, 0xd7, 0xe0, 0x6a, 0x76, 0x31, 0x4e, 0xda, + 0x9b, 0xa1, 0x4b, 0xd1, 0xe0, 0x9d, 0xc9, 0x4b, 0xe8, 0x2f, 0xa7, 0x8c, 0x59, 0x7f, 0x79, 0x94, + 0xd6, 0xf5, 0x31, 0x61, 0xb4, 0x95, 0x82, 0x58, 0xdc, 0xfb, 0x5c, 0xb7, 0x9c, 0x26, 0x7a, 0x47, + 0xdd, 0x77, 0xbb, 0x1e, 0x37, 0x9f, 0xe1, 0x6f, 0xaa, 0x5b, 0xb5, 0x9c, 0x76, 0x97, 0x07, 0xc3, + 0x1c, 0x35, 0xf8, 0x97, 0xfe, 0x3d, 0x5a, 0x6a, 0xf7, 0x31, 0x74, 0xf7, 0x6c, 0xfb, 0x41, 0xf3, + 0x84, 0xbc, 0x08, 0xf9, 0x86, 0x75, 0x92, 0x19, 0x85, 0xba, 0xd6, 0x78, 0xb0, 0xe7, 0xb4, 0x6c, + 0x0a, 0xdc, 0xb0, 0x4e, 0x0c, 0x0a, 0x1b, 0x92, 0x90, 0x4b, 0x25, 0x21, 0xaf, 0x90, 0xf0, 0xe5, + 0xd4, 0x91, 0xe0, 0xfe, 0x99, 0x6e, 0x3b, 0xb8, 0xdf, 0xc4, 0x4d, 0x84, 0x20, 0x61, 0x74, 0xf8, + 0x1a, 0xde, 0x49, 0xe1, 0x56, 0x51, 0xc3, 0xae, 0xed, 0x39, 0x6e, 0xc3, 0xa9, 0x93, 0x05, 0x18, + 0xf7, 0xed, 0xba, 0xdb, 0x6e, 0x08, 0x27, 0x4e, 0xf1, 0xa9, 0xff, 0xdf, 0x39, 0x38, 0x9f, 0x59, + 0x9e, 0x69, 0xad, 0x01, 0xdd, 0x6d, 0xb1, 0x62, 0xfc, 0x8b, 0x6c, 0xc2, 0x68, 0x83, 0x0e, 0xc7, + 0xc2, 0xef, 0x33, 0xe6, 0xb9, 0xdd, 0x9f, 0x79, 0x94, 0x61, 0xdc, 0x3c, 0x65, 0x30, 0x04, 0xe4, + 0x03, 0x18, 0xfb, 0x1c, 0x47, 0x62, 0xe1, 0x0f, 0x18, 0xaa, 0x17, 0x06, 0x47, 0xc5, 0x86, 0x70, + 0xf3, 0x94, 0xc1, 0x51, 0x90, 0x1d, 0x18, 0x6f, 0xb1, 0x4e, 0x5d, 0xf8, 0x43, 0x86, 0xed, 0xc5, + 0xc1, 0xb1, 0xf1, 0xe1, 0xd8, 0x3c, 0x65, 0x08, 0x24, 0xe4, 0x43, 0x98, 0xe8, 0xf0, 0x2e, 0x5c, + 0xf8, 0xe7, 0x0c, 0xe1, 0xca, 0xe0, 0x08, 0x45, 0xef, 0x6f, 0x9e, 0x32, 0x42, 0x34, 0xab, 0x05, + 0x98, 0x62, 0xbf, 0xd1, 0xc0, 0xaf, 0x7f, 0x86, 0x9e, 0x56, 0x6a, 0xf9, 0xd4, 0x7d, 0xd4, 0x26, + 0x4c, 0x0a, 0x49, 0x26, 0x6c, 0x7f, 0x4b, 0x83, 0x93, 0x62, 0x44, 0x85, 0xf5, 0xbf, 0x3e, 0x8a, + 0x4e, 0x3f, 0x91, 0x46, 0x3a, 0xd0, 0x26, 0x8e, 0x6f, 0x41, 0xf8, 0xe6, 0x85, 0x7d, 0x61, 0x10, + 0x76, 0x76, 0x39, 0xd2, 0x71, 0xdb, 0xa8, 0xa2, 0xe6, 0x79, 0x10, 0xf6, 0x30, 0xf5, 0x03, 0x3b, + 0x16, 0x0f, 0x6f, 0x64, 0x98, 0xa0, 0x42, 0x17, 0x60, 0xb2, 0xeb, 0xdb, 0x26, 0x5e, 0x75, 0xe4, + 0x81, 0x65, 0x27, 0xba, 0xbe, 0x8d, 0x77, 0x86, 0xa9, 0x7e, 0xee, 0x58, 0x2d, 0xb1, 0x24, 0x30, + 0xaf, 0xdb, 0x49, 0xc7, 0x6a, 0xf1, 0x5e, 0xbc, 0x01, 0x45, 0xff, 0x25, 0x53, 0xac, 0x9b, 0xf5, + 0xa6, 0xc5, 0xdd, 0xae, 0x27, 0x8d, 0x19, 0xff, 0xa5, 0x70, 0x9b, 0x6c, 0xf9, 0x3e, 0x31, 0x60, + 0xc6, 0xfa, 0xdc, 0x37, 0xa3, 0x5d, 0x83, 0x60, 0xeb, 0x74, 0x8f, 0x98, 0xcf, 0x25, 0x6d, 0x9e, + 0xf7, 0xda, 0xe6, 0x29, 0xa3, 0x60, 0xc9, 0xe9, 0xe4, 0x23, 0x28, 0x5a, 0x5f, 0xe9, 0x7a, 0xb6, + 0x8c, 0x95, 0x73, 0x78, 0xea, 0xb8, 0x95, 0x28, 0x70, 0x1a, 0xde, 0x59, 0x4b, 0xcd, 0x21, 0x5f, + 0x84, 0x39, 0xe6, 0x3b, 0x27, 0xa3, 0xfe, 0xc3, 0x1e, 0xee, 0x41, 0x77, 0x10, 0x3a, 0x0d, 0x77, + 0xf1, 0x28, 0x96, 0x45, 0xbb, 0xa2, 0x7d, 0xa8, 0x74, 0xc5, 0x3f, 0xef, 0xd1, 0x15, 0x3b, 0x87, + 0xe9, 0x5d, 0xd1, 0x96, 0xd3, 0x57, 0xe7, 0x60, 0x36, 0xc2, 0xc7, 0xd8, 0x7e, 0x15, 0x2e, 0xa4, + 0xb2, 0x20, 0x5f, 0x9b, 0x9e, 0x82, 0x82, 0x54, 0x22, 0xdc, 0x21, 0x4d, 0x47, 0x89, 0x95, 0x86, + 0xfe, 0xc3, 0x5a, 0x8c, 0x8f, 0x55, 0xad, 0x61, 0x10, 0x1c, 0xe4, 0x7d, 0x00, 0xe6, 0x00, 0x6b, + 0x7a, 0xf6, 0x67, 0x7c, 0x9f, 0x99, 0xda, 0x87, 0x19, 0xb3, 0xc5, 0x98, 0xec, 0x8a, 0x4a, 0xf5, + 0x4b, 0xb1, 0x36, 0xc5, 0xb4, 0x8a, 0xaf, 0xe7, 0x98, 0xe7, 0x4d, 0x0a, 0xf7, 0xc4, 0x5c, 0x56, + 0xb4, 0xde, 0x2e, 0x2b, 0xb9, 0xb8, 0xcb, 0x4a, 0x2f, 0x13, 0x42, 0x64, 0x76, 0x18, 0x51, 0xcc, + 0x0e, 0x57, 0x60, 0xaa, 0xe1, 0xf8, 0xd6, 0x41, 0xd3, 0x36, 0x7d, 0xbf, 0xc9, 0xa7, 0x16, 0xf0, + 0xa4, 0x9a, 0xdf, 0x24, 0x37, 0x81, 0x08, 0x00, 0xbc, 0x52, 0xec, 0x07, 0x27, 0x4d, 0x9b, 0x4f, + 0xb2, 0x22, 0xcf, 0xd9, 0xc5, 0x28, 0xd2, 0x27, 0x4d, 0x9b, 0xbc, 0x0c, 0x67, 0x7d, 0xdb, 0xc3, + 0x48, 0xe8, 0x4e, 0xc3, 0x36, 0xa3, 0xe9, 0xcf, 0x67, 0xdc, 0x69, 0x96, 0x5b, 0x73, 0x1a, 0x76, + 0x39, 0xcc, 0xd3, 0x4d, 0x5c, 0x7a, 0xd2, 0x39, 0x3f, 0x61, 0x88, 0xd0, 0x92, 0x86, 0x08, 0xe6, + 0x62, 0x83, 0x20, 0x51, 0xc7, 0x88, 0x3d, 0x3b, 0xdd, 0x19, 0xdf, 0x45, 0x0e, 0xc9, 0xe0, 0x7f, + 0xbc, 0xa5, 0xec, 0xb9, 0x9f, 0xe2, 0x73, 0x17, 0xa1, 0x11, 0x82, 0xa7, 0x54, 0xd0, 0x48, 0xfe, + 0xa9, 0xcf, 0xc5, 0x1a, 0x7f, 0x09, 0x82, 0x7e, 0x53, 0xbc, 0x3f, 0xa9, 0xe1, 0x58, 0xa6, 0xb1, + 0x3f, 0xba, 0x2b, 0x61, 0x63, 0xc3, 0x73, 0x58, 0xfc, 0xea, 0xf1, 0xb0, 0x44, 0xe4, 0x17, 0x82, + 0x9e, 0x6e, 0xb2, 0x5f, 0x48, 0xb5, 0x13, 0xf8, 0xe4, 0x59, 0x98, 0x0d, 0x9c, 0x96, 0xed, 0x76, + 0x03, 0x53, 0x2c, 0xe2, 0x2c, 0x7a, 0xf2, 0x0c, 0x4f, 0xae, 0xf1, 0xb5, 0xfc, 0xe7, 0x73, 0xcc, + 0xdb, 0x51, 0x65, 0x31, 0xc5, 0xe4, 0xa2, 0x9a, 0x12, 0x24, 0x1e, 0xfb, 0x2b, 0xc0, 0x44, 0x83, + 0x0b, 0xec, 0x6c, 0x76, 0x9b, 0xe8, 0xc1, 0x6e, 0xef, 0x31, 0x67, 0xd7, 0x38, 0xbb, 0xf1, 0xfe, + 0xe9, 0x6f, 0xf8, 0xd2, 0xdf, 0xc6, 0x19, 0x9e, 0x64, 0xa7, 0xa8, 0x87, 0x25, 0x7e, 0xca, 0xc5, + 0xf8, 0x49, 0xff, 0x06, 0xf3, 0x45, 0x8d, 0x31, 0x0d, 0x2f, 0xfb, 0x97, 0xc8, 0x35, 0x57, 0xe0, + 0x92, 0x22, 0xb7, 0x12, 0x5b, 0x9d, 0x3b, 0xa8, 0x94, 0xa7, 0x02, 0x70, 0xea, 0xaf, 0xc3, 0x8c, + 0x22, 0x6b, 0x45, 0x38, 0x80, 0x82, 0x2c, 0x6c, 0xfd, 0x84, 0xd4, 0x8f, 0xed, 0x64, 0x06, 0x92, + 0xfa, 0x7f, 0x3c, 0x02, 0x17, 0xd3, 0x91, 0x0c, 0xb1, 0x76, 0x84, 0x4a, 0x4e, 0x2e, 0x55, 0xc9, + 0xc9, 0x2b, 0x4a, 0xce, 0x5f, 0x8e, 0xf6, 0x52, 0xcb, 0xd2, 0x49, 0x9e, 0x1b, 0x40, 0x27, 0x61, + 0x5d, 0x91, 0x54, 0x4a, 0x3e, 0xce, 0x56, 0x4a, 0x9e, 0x1f, 0x48, 0x29, 0x09, 0x11, 0x27, 0xb4, + 0x92, 0xef, 0xe8, 0xa1, 0x95, 0xdc, 0x1c, 0x4c, 0x2b, 0x09, 0x91, 0x27, 0xd5, 0x92, 0x5a, 0x96, + 0x5a, 0xf2, 0xdc, 0x00, 0x6a, 0x49, 0xd4, 0x1b, 0x7d, 0xf5, 0x92, 0x52, 0x4c, 0xa5, 0x50, 0x37, + 0xb5, 0x03, 0x31, 0x68, 0x5c, 0x0d, 0x88, 0xed, 0x70, 0xd7, 0x62, 0xec, 0x7b, 0xd7, 0x6a, 0x3a, + 0xc3, 0xaa, 0x2d, 0x89, 0x29, 0x1b, 0x21, 0xe1, 0xb5, 0x7c, 0x80, 0xd6, 0xd7, 0x24, 0x11, 0x3c, + 0x08, 0xb4, 0x3f, 0x54, 0x6d, 0xcf, 0xa2, 0x31, 0xae, 0x17, 0x32, 0x5e, 0xeb, 0xcf, 0x69, 0xe8, + 0xb1, 0xcc, 0xfd, 0x1f, 0xd1, 0x5b, 0x52, 0x0a, 0xb5, 0xcc, 0x55, 0x18, 0xf9, 0x1e, 0x17, 0x4b, + 0x12, 0x7e, 0x4f, 0xbd, 0x74, 0x9c, 0xeb, 0x30, 0xc3, 0xb3, 0xeb, 0x6e, 0x3b, 0xb0, 0x1f, 0x8a, + 0x49, 0x5a, 0x60, 0xa9, 0x6b, 0x2c, 0x91, 0xae, 0x62, 0x61, 0xd4, 0x20, 0xb6, 0x56, 0x85, 0xdf, + 0xfa, 0x6f, 0xe6, 0xe0, 0x4c, 0x48, 0x1d, 0xde, 0x78, 0x95, 0x4e, 0x01, 0xb2, 0x9d, 0xcd, 0x54, + 0xa7, 0xcd, 0x5c, 0xdc, 0x69, 0xb3, 0x14, 0xf9, 0x35, 0x32, 0xbf, 0xb3, 0x67, 0xd3, 0x38, 0x32, + 0xa5, 0x4b, 0x42, 0x87, 0x46, 0xf2, 0x65, 0x98, 0xc1, 0x57, 0x1c, 0x3d, 0x53, 0xf5, 0x90, 0x7c, + 0x23, 0x1b, 0x93, 0x4c, 0xfe, 0x32, 0xf3, 0xc9, 0x51, 0x9c, 0x25, 0x0b, 0x0d, 0x39, 0x6d, 0xf1, + 0x0b, 0x40, 0x92, 0x40, 0x43, 0x1d, 0x5e, 0x2e, 0x48, 0x23, 0xcb, 0x2b, 0xe7, 0x83, 0xfe, 0xe3, + 0x4c, 0x17, 0xe2, 0x17, 0xf7, 0xda, 0xca, 0xfd, 0xe4, 0xc8, 0x83, 0x44, 0xea, 0x42, 0x4d, 0xf6, + 0x20, 0xd9, 0x0e, 0x3b, 0xf2, 0x03, 0x78, 0xaa, 0xed, 0x9a, 0x0d, 0xbb, 0x69, 0x9d, 0x98, 0x07, + 0xf6, 0xa1, 0x8b, 0x21, 0x01, 0x9a, 0x76, 0xe0, 0xb4, 0x8f, 0xcc, 0xd8, 0x00, 0x4c, 0x18, 0x97, + 0xdb, 0xee, 0x3a, 0x85, 0x5c, 0x45, 0xc0, 0x75, 0x0e, 0x17, 0x22, 0xd3, 0x7f, 0x27, 0x97, 0x24, + 0xea, 0x49, 0x8c, 0xf6, 0x6a, 0x7c, 0xb4, 0x6f, 0x64, 0x8f, 0x91, 0xda, 0x17, 0xd1, 0x70, 0x1f, + 0x64, 0x0c, 0xf7, 0x5b, 0x7d, 0x51, 0x7d, 0x3b, 0x07, 0x7c, 0x11, 0x95, 0x95, 0x58, 0xf5, 0x7c, + 0xc8, 0x7f, 0x21, 0x97, 0x98, 0xe7, 0x03, 0x75, 0xae, 0x34, 0x57, 0x72, 0x8f, 0x38, 0x57, 0xac, + 0x44, 0xe7, 0xe5, 0x33, 0xbc, 0xff, 0xd2, 0x09, 0xfc, 0xb6, 0xf4, 0xdd, 0x9b, 0x12, 0xf3, 0x89, + 0xda, 0xb9, 0x76, 0x12, 0xf3, 0xf1, 0xd6, 0x12, 0x3e, 0xde, 0xdf, 0x25, 0x75, 0xed, 0xba, 0x2d, + 0x8b, 0xd0, 0xf0, 0x22, 0xa7, 0x26, 0x5f, 0xe4, 0x5c, 0x81, 0x33, 0x5d, 0x36, 0x3c, 0xd1, 0xac, + 0x41, 0xc7, 0x76, 0x36, 0x51, 0xe6, 0x79, 0xa6, 0x98, 0x28, 0xe8, 0xc1, 0x8e, 0x4e, 0xc1, 0xec, + 0x5d, 0xbf, 0xc8, 0x29, 0x98, 0x7d, 0xab, 0x63, 0xcb, 0xe0, 0x9f, 0xf8, 0xd8, 0x2a, 0xed, 0x7a, + 0xac, 0xb1, 0x55, 0x08, 0xfc, 0xb6, 0x8c, 0xed, 0x79, 0x69, 0x6c, 0x45, 0xed, 0x7c, 0x5a, 0xfc, + 0x4f, 0xf2, 0xf2, 0xd7, 0xdf, 0xa8, 0x36, 0xb4, 0xfb, 0xfd, 0x07, 0xe1, 0x43, 0xa1, 0xf9, 0x0c, + 0xdf, 0xbf, 0xf4, 0xda, 0x9f, 0xf4, 0x5b, 0xa1, 0xaf, 0x4a, 0x5d, 0x90, 0xf4, 0x9b, 0xc8, 0x64, + 0x11, 0xfd, 0xff, 0xd4, 0xa4, 0x05, 0x78, 0xad, 0xe9, 0xb6, 0x7b, 0x76, 0xcf, 0x05, 0x98, 0x64, + 0x0f, 0x61, 0x4a, 0xb7, 0x85, 0x58, 0x42, 0xa5, 0x41, 0x1c, 0x98, 0xb3, 0x1a, 0x0d, 0x87, 0x8e, + 0xa1, 0xd5, 0x34, 0x95, 0x5e, 0x79, 0xbb, 0x47, 0xaf, 0x48, 0x75, 0x2e, 0x97, 0xc2, 0xf2, 0x72, + 0xf7, 0x14, 0xad, 0x58, 0xf2, 0xe2, 0x1a, 0x9c, 0x49, 0x05, 0x1d, 0xaa, 0xcb, 0x5e, 0x91, 0x39, + 0x83, 0x51, 0x31, 0x48, 0x8f, 0xbd, 0xa2, 0xcc, 0xc5, 0x98, 0xaf, 0x49, 0x76, 0x31, 0x95, 0x47, + 0x15, 0xf5, 0xf3, 0x73, 0x29, 0x2b, 0xb6, 0xfd, 0xea, 0x39, 0xbd, 0xdf, 0x8b, 0x4f, 0xef, 0x2c, + 0x5f, 0x7f, 0xf5, 0xe9, 0xd3, 0x70, 0x72, 0xeb, 0x7f, 0xa6, 0x49, 0x0b, 0x4a, 0x7c, 0xcf, 0x36, + 0xf4, 0x05, 0x8c, 0xb4, 0xfd, 0xdb, 0x76, 0x6c, 0x7a, 0xbc, 0x92, 0xcd, 0x08, 0xb1, 0xfa, 0x9f, + 0xf4, 0x04, 0xf9, 0x3f, 0x72, 0x78, 0x38, 0xa8, 0xd4, 0x95, 0x72, 0xe7, 0x30, 0xad, 0x11, 0xf7, + 0x62, 0x8d, 0x78, 0xaf, 0x6f, 0x23, 0x92, 0x88, 0x53, 0x1f, 0xbc, 0x7e, 0xf4, 0x5d, 0x6c, 0x18, + 0xfb, 0x6b, 0x74, 0x90, 0xd8, 0x5f, 0x12, 0xa3, 0x8c, 0x3d, 0x0a, 0xa3, 0x3c, 0x4e, 0xbf, 0x7f, + 0x8a, 0x07, 0xf5, 0xd9, 0xbd, 0xc3, 0xb9, 0x6d, 0x0d, 0xc6, 0x19, 0x1b, 0x89, 0x33, 0xd9, 0xe7, + 0x06, 0xe6, 0x14, 0x43, 0x94, 0xd4, 0xff, 0x77, 0x59, 0xd8, 0xab, 0x96, 0xe7, 0x9e, 0x13, 0x69, + 0x08, 0x21, 0xae, 0x60, 0x4d, 0x1d, 0xd4, 0x57, 0xf8, 0x12, 0x32, 0xd2, 0x37, 0x28, 0x04, 0xc7, + 0x85, 0xe0, 0x8f, 0xd3, 0xc5, 0xb2, 0x68, 0x89, 0x19, 0xb8, 0xbf, 0x28, 0x49, 0x77, 0x8c, 0xca, + 0x33, 0x50, 0x7f, 0x5c, 0x87, 0x99, 0xb6, 0x1b, 0x98, 0xf5, 0x6e, 0xab, 0xdb, 0xb4, 0x02, 0xe7, + 0x58, 0x3c, 0x68, 0x58, 0x68, 0xbb, 0xc1, 0x5a, 0x98, 0xa8, 0x6f, 0x48, 0xbd, 0xcd, 0x91, 0x87, + 0xd7, 0x2b, 0x30, 0xa2, 0x99, 0xcf, 0x45, 0xc7, 0xd9, 0x54, 0x07, 0x47, 0x9f, 0x85, 0x3d, 0xf3, + 0xf5, 0xb7, 0x71, 0xe7, 0xcc, 0x05, 0xb1, 0x1c, 0xf3, 0x66, 0x20, 0xc1, 0x1a, 0xa0, 0x25, 0x2c, + 0xb5, 0x34, 0xa7, 0xc6, 0x80, 0xf9, 0x3a, 0xcf, 0x60, 0x81, 0x45, 0x58, 0x20, 0xb2, 0xac, 0x23, + 0xf6, 0x44, 0xd8, 0x1d, 0x63, 0xae, 0x1e, 0x4f, 0xd2, 0x2f, 0xa0, 0x99, 0x9c, 0xd5, 0x9a, 0x30, + 0xce, 0xbd, 0x85, 0x16, 0x8b, 0x44, 0x66, 0x64, 0x92, 0x94, 0x3c, 0xfc, 0xb5, 0x98, 0x87, 0xbf, + 0xfe, 0x4f, 0x73, 0x68, 0x27, 0x88, 0x95, 0x1e, 0x50, 0x54, 0x7d, 0x1c, 0xe3, 0xe4, 0x52, 0x36, + 0x27, 0xf7, 0x40, 0xfd, 0x97, 0x29, 0xac, 0x1e, 0x67, 0x22, 0x6c, 0xa0, 0x51, 0xa4, 0x57, 0xf3, + 0x06, 0x1b, 0x82, 0x7f, 0xa7, 0x49, 0x3c, 0x25, 0xae, 0x1f, 0xa8, 0xca, 0x63, 0xbf, 0xbb, 0x70, + 0x89, 0x91, 0xa9, 0xc5, 0x46, 0xa6, 0xc7, 0xce, 0x32, 0xb5, 0xc6, 0x27, 0xbd, 0x1e, 0xae, 0xa2, + 0x1b, 0x46, 0x7a, 0x85, 0xd1, 0xbe, 0x28, 0x0a, 0x09, 0xdc, 0x08, 0xed, 0x43, 0x22, 0xf4, 0x77, + 0x43, 0x37, 0x53, 0x70, 0x18, 0x36, 0x5e, 0x38, 0x1f, 0xa8, 0x9f, 0x62, 0x15, 0xe4, 0x12, 0x15, + 0xe8, 0xe8, 0xa9, 0x91, 0x51, 0x01, 0x17, 0x71, 0x5f, 0x40, 0x5f, 0x0b, 0x15, 0x26, 0x3e, 0x23, + 0x7b, 0x4b, 0x90, 0x3d, 0x49, 0x33, 0x48, 0xc1, 0x10, 0x46, 0x0a, 0x98, 0x17, 0x41, 0x8d, 0x22, + 0x9a, 0x05, 0xf3, 0xcc, 0x1d, 0x2b, 0xa5, 0x29, 0x13, 0xfd, 0x99, 0x06, 0x37, 0xb3, 0xd1, 0xa6, + 0xcc, 0xe7, 0x9e, 0x5d, 0x65, 0x85, 0xec, 0xc3, 0xfc, 0x0c, 0x2a, 0xfd, 0xd9, 0x67, 0xc8, 0x09, + 0xfe, 0x38, 0xcc, 0x64, 0xc2, 0xad, 0x01, 0xab, 0x7f, 0xc4, 0xce, 0xfc, 0x1a, 0xba, 0x0f, 0xaa, + 0x15, 0x08, 0xaf, 0x8a, 0x21, 0x16, 0xfa, 0x57, 0xe1, 0x5c, 0x32, 0x56, 0x35, 0xde, 0x19, 0xe5, + 0x01, 0x91, 0xcf, 0xc4, 0x1f, 0x51, 0xd8, 0xa1, 0x99, 0xfa, 0x73, 0xf0, 0x6c, 0xdf, 0xea, 0x39, + 0x3b, 0x36, 0x31, 0x9c, 0xcd, 0x3d, 0x2b, 0x88, 0xf6, 0xe8, 0x1f, 0x84, 0xc1, 0xc4, 0xec, 0x63, + 0x9b, 0x5f, 0x5a, 0x9b, 0x4a, 0x7b, 0xdd, 0x56, 0x54, 0x21, 0x97, 0xde, 0x3c, 0x25, 0x02, 0x8b, + 0x95, 0x69, 0xe1, 0xd5, 0x69, 0x00, 0xc4, 0xc2, 0x6c, 0xe3, 0x6d, 0x8c, 0x55, 0xc5, 0xe1, 0x43, + 0xa7, 0xdc, 0xb4, 0xea, 0x9e, 0xed, 0x5b, 0x5d, 0x68, 0x92, 0xef, 0x51, 0xdf, 0x2f, 0xca, 0xdb, + 0x45, 0xa5, 0x91, 0xef, 0x87, 0x0c, 0x9a, 0x15, 0x24, 0x3a, 0xb5, 0xdc, 0x93, 0xe6, 0xc4, 0x2f, + 0x49, 0x3a, 0x89, 0xda, 0x2d, 0x4f, 0x62, 0x3f, 0xa3, 0xbf, 0x89, 0x12, 0x6f, 0xc7, 0x6d, 0xd8, + 0x89, 0x98, 0x71, 0xd2, 0xa5, 0xdf, 0xd4, 0x78, 0x6c, 0xba, 0x87, 0xc2, 0x2c, 0xa3, 0x2c, 0x27, + 0x72, 0x07, 0xe6, 0xe4, 0xb8, 0x73, 0xbd, 0x15, 0x95, 0x24, 0x9a, 0xd9, 0x63, 0x35, 0x54, 0x1b, + 0x77, 0x9b, 0x5c, 0x93, 0xaf, 0xe3, 0xf8, 0x09, 0x75, 0xe5, 0x2e, 0xca, 0xbf, 0x4c, 0x20, 0x4e, + 0xda, 0x0b, 0x70, 0x5a, 0xbd, 0xec, 0xc3, 0x27, 0x0e, 0x9b, 0xb3, 0x44, 0xb9, 0xf2, 0xc3, 0x66, + 0xcd, 0x2e, 0x3b, 0xa3, 0x94, 0x33, 0x62, 0xdb, 0xdb, 0x65, 0x98, 0x4f, 0xc1, 0xc9, 0xfb, 0x6d, + 0x2e, 0x81, 0x52, 0x6f, 0x63, 0xf7, 0xa7, 0x63, 0x8c, 0x24, 0xcb, 0x30, 0x28, 0xa9, 0xbc, 0x70, + 0x7c, 0xd3, 0xaa, 0x4b, 0x6a, 0xee, 0x84, 0xe3, 0xb3, 0xbb, 0xa0, 0xfa, 0x87, 0xc9, 0xfa, 0x30, + 0x47, 0x92, 0x37, 0xc3, 0x36, 0x81, 0x2d, 0x69, 0x19, 0x28, 0xb9, 0x0c, 0xa9, 0x25, 0x47, 0x6d, + 0xdd, 0xb6, 0x1e, 0xb3, 0xe2, 0xa7, 0x93, 0xa3, 0x2c, 0x23, 0xe5, 0x55, 0x5f, 0x93, 0x5b, 0xcc, + 0xfb, 0x76, 0x8d, 0x45, 0x51, 0x11, 0xec, 0xf2, 0x25, 0xb9, 0x05, 0x71, 0x10, 0x3e, 0x0a, 0x6f, + 0xc0, 0x38, 0xa7, 0x80, 0x73, 0xef, 0x95, 0xac, 0x4b, 0x5d, 0xe2, 0x8a, 0xb2, 0x80, 0xd7, 0x5f, + 0x40, 0x09, 0x43, 0xd9, 0x39, 0xc6, 0x2c, 0x99, 0x13, 0xeb, 0xbf, 0x1d, 0x85, 0xfc, 0xfb, 0xee, + 0x41, 0xe2, 0xe2, 0xe6, 0x0b, 0x22, 0x04, 0x73, 0x2e, 0x23, 0x4e, 0xea, 0xfb, 0xee, 0xc1, 0xb2, + 0x12, 0x80, 0xf9, 0x96, 0x14, 0x34, 0x60, 0x66, 0xe5, 0x7c, 0x6a, 0x81, 0x28, 0xa2, 0x3b, 0xf9, + 0x08, 0xe6, 0x1a, 0x1e, 0xed, 0x79, 0x16, 0x85, 0xa4, 0x65, 0xb7, 0x03, 0x7f, 0xe1, 0xeb, 0x59, + 0x87, 0x10, 0xb4, 0x49, 0xeb, 0x14, 0xbc, 0x14, 0x41, 0xbf, 0xef, 0x1e, 0x6c, 0x9e, 0x32, 0x8a, + 0x8d, 0x58, 0x32, 0xf9, 0x84, 0x0e, 0xae, 0xdb, 0x6d, 0xa0, 0xa5, 0xd4, 0x0c, 0x3c, 0xab, 0xed, + 0x1f, 0xda, 0xde, 0xc2, 0x8f, 0xe5, 0x33, 0x96, 0x0e, 0x0c, 0x69, 0x89, 0x56, 0xd4, 0x3d, 0x0e, + 0xcb, 0x30, 0x93, 0x08, 0x8b, 0xc8, 0x20, 0x9b, 0x2c, 0x4e, 0xbc, 0x5d, 0x0f, 0xcc, 0x86, 0x63, + 0x1d, 0xf9, 0x0b, 0x3f, 0x9e, 0xcf, 0xb8, 0x77, 0xb7, 0xc6, 0xc0, 0xd6, 0x29, 0x14, 0xc3, 0x37, + 0x5d, 0x97, 0x92, 0xc8, 0x5b, 0x78, 0x25, 0xc8, 0x0a, 0x6c, 0x16, 0x45, 0xae, 0x7f, 0x1c, 0x3f, + 0x60, 0xe0, 0x18, 0x7f, 0x6e, 0x9d, 0x87, 0xef, 0xe5, 0xbe, 0x5e, 0x03, 0x46, 0x11, 0xc7, 0x88, + 0xbd, 0x6c, 0xc9, 0xc5, 0x70, 0x74, 0x9f, 0xc2, 0x08, 0xde, 0xaf, 0x3c, 0x0d, 0x45, 0xe9, 0xda, + 0x9e, 0xb9, 0xf7, 0xf1, 0x6e, 0xb9, 0x78, 0x8a, 0x4c, 0xc0, 0x08, 0x3e, 0xcb, 0xae, 0x91, 0x33, + 0x30, 0xb7, 0x6e, 0x94, 0x2a, 0x3b, 0x66, 0x69, 0x6f, 0xaf, 0xb4, 0xb6, 0xb9, 0x5d, 0xde, 0xd9, + 0xab, 0x15, 0x73, 0x64, 0x01, 0x4e, 0xaf, 0x6d, 0x55, 0xf7, 0xd7, 0xcd, 0x75, 0xa3, 0x72, 0xb7, + 0x6c, 0xee, 0x19, 0xa5, 0x9d, 0xda, 0x46, 0xd9, 0x28, 0xe6, 0xc9, 0x1c, 0x14, 0xd6, 0xaa, 0x5b, + 0x5b, 0xe5, 0xb5, 0x3d, 0x73, 0xbd, 0x52, 0xba, 0x53, 0x2b, 0x8e, 0xe8, 0x0e, 0x8b, 0x6c, 0x6b, + 0x53, 0x64, 0x72, 0x65, 0xb5, 0xbd, 0xd2, 0x5e, 0x99, 0xbd, 0xd1, 0xb1, 0x5b, 0xde, 0x59, 0xaf, + 0xec, 0xdc, 0x61, 0xf7, 0x04, 0x8d, 0xfd, 0x9d, 0x1d, 0xfa, 0x91, 0xa3, 0x74, 0xac, 0x53, 0x3a, + 0xf2, 0x04, 0x60, 0x6c, 0xb7, 0xb4, 0x5f, 0x2b, 0xaf, 0x17, 0x47, 0x48, 0x01, 0x26, 0xd7, 0x4a, + 0x3b, 0x6b, 0xe5, 0xad, 0xad, 0xf2, 0x7a, 0x71, 0x94, 0x66, 0x6d, 0x94, 0x2a, 0xf4, 0xf7, 0xd8, + 0xea, 0x28, 0xe4, 0x3f, 0x75, 0x0f, 0xf4, 0xd7, 0x31, 0x10, 0xd9, 0xfb, 0xee, 0x41, 0x38, 0xb1, + 0x9e, 0xc1, 0x0c, 0x3e, 0xa9, 0x4e, 0xa7, 0x31, 0xa8, 0x81, 0x25, 0x2f, 0xc2, 0x62, 0x0a, 0xbf, + 0x71, 0xc3, 0x8e, 0xfe, 0x5b, 0x6c, 0x83, 0x93, 0xc6, 0x91, 0xfd, 0x66, 0x1b, 0x29, 0xc3, 0x84, + 0x6f, 0x53, 0x1e, 0xc0, 0xab, 0xda, 0xe9, 0xa6, 0x1a, 0x5c, 0xbd, 0x6b, 0x1c, 0x4a, 0x7e, 0x40, + 0x36, 0x2c, 0x4a, 0x9e, 0x82, 0x82, 0xdb, 0x6e, 0x9e, 0x98, 0xe1, 0x1b, 0x51, 0xec, 0xd0, 0x63, + 0x9a, 0x26, 0x8a, 0x47, 0x5c, 0xc8, 0x59, 0x18, 0x73, 0x7c, 0xbf, 0x6b, 0x7b, 0xc2, 0xc9, 0x89, + 0x7d, 0xe9, 0xff, 0x24, 0x07, 0xe7, 0x32, 0xa6, 0x53, 0x36, 0xe1, 0x67, 0x61, 0xac, 0x26, 0x82, + 0x53, 0x60, 0x7a, 0x2d, 0x8c, 0x59, 0xc5, 0x2b, 0xc9, 0xcb, 0x95, 0x90, 0x2a, 0x00, 0x06, 0xe7, + 0xb0, 0xa9, 0xe6, 0xca, 0x77, 0xbc, 0xa9, 0x3e, 0xd5, 0x3d, 0xba, 0xd1, 0x90, 0x50, 0xfc, 0x55, + 0x98, 0x2e, 0xdf, 0xd0, 0xe0, 0x4c, 0xaa, 0xac, 0xc0, 0xa0, 0xef, 0x2c, 0x54, 0x1c, 0x4a, 0x0b, + 0x5f, 0xbe, 0x7e, 0x57, 0x64, 0x39, 0xeb, 0x3c, 0x83, 0x29, 0xd2, 0x0d, 0xdb, 0x0f, 0x9c, 0x36, + 0x7b, 0x70, 0xc5, 0xe1, 0xc1, 0x2e, 0xa2, 0x5d, 0xdc, 0x19, 0x29, 0x5b, 0x84, 0xc2, 0xa8, 0xc8, + 0x71, 0xc3, 0xf2, 0x72, 0xdc, 0x30, 0xfd, 0x67, 0x34, 0x98, 0x8d, 0x49, 0x1b, 0x52, 0x82, 0x71, + 0x8f, 0x47, 0x70, 0xe8, 0xa1, 0xc2, 0x22, 0x38, 0x2f, 0x2a, 0x3a, 0x5d, 0x94, 0x23, 0xab, 0x30, + 0xc1, 0x2a, 0x08, 0xfd, 0xb3, 0x93, 0xa2, 0x53, 0x46, 0x80, 0x0f, 0x32, 0xe2, 0xd5, 0xdb, 0xb0, + 0x9c, 0xfe, 0x47, 0x1a, 0x9c, 0x49, 0x85, 0x41, 0x05, 0xd1, 0x6d, 0x44, 0x27, 0x24, 0x6e, 0xc3, + 0x26, 0xab, 0xea, 0x9a, 0x73, 0x73, 0xb0, 0xea, 0xd4, 0x55, 0x48, 0x0a, 0x9b, 0x9a, 0x57, 0xc2, + 0xa6, 0xea, 0x9b, 0x42, 0x02, 0x25, 0x6e, 0x29, 0x0f, 0x28, 0x7b, 0xb8, 0x80, 0x19, 0xd1, 0xbf, + 0x87, 0x1d, 0x29, 0xa6, 0xf4, 0x1e, 0x79, 0x55, 0x6a, 0x56, 0x9a, 0xda, 0x89, 0x65, 0x28, 0xcf, + 0x87, 0x13, 0x9c, 0x35, 0xfd, 0xed, 0x50, 0xc1, 0xce, 0x65, 0x3c, 0xf8, 0x84, 0x25, 0x45, 0x94, + 0x14, 0x5e, 0x56, 0x68, 0xdb, 0xd7, 0x60, 0x3a, 0x7c, 0x9c, 0x28, 0x0a, 0x8c, 0x34, 0xc5, 0xd3, + 0xaa, 0xed, 0xe6, 0x49, 0x96, 0x34, 0xa0, 0x45, 0x85, 0x57, 0x5d, 0xcb, 0x69, 0xfb, 0x3c, 0xf4, + 0xdc, 0x14, 0x4f, 0xdb, 0x76, 0xda, 0x38, 0x54, 0x4d, 0xaa, 0xe0, 0x31, 0x97, 0x2e, 0xfc, 0xad, + 0x97, 0xd0, 0x6c, 0xaa, 0xf6, 0xc0, 0x90, 0x52, 0xf6, 0xe7, 0x34, 0x98, 0x4b, 0x74, 0x07, 0xf9, + 0x18, 0xe6, 0xa3, 0x08, 0x05, 0x66, 0x28, 0x2c, 0xb5, 0x61, 0x85, 0xe5, 0x5c, 0x18, 0xa6, 0x20, + 0x44, 0x8d, 0xe1, 0xa1, 0x1a, 0xcc, 0x6c, 0xc5, 0x76, 0xac, 0xe3, 0x4c, 0xba, 0xf9, 0x74, 0x97, + 0x64, 0x35, 0x9b, 0xbc, 0xdf, 0xe8, 0x4f, 0xfd, 0x27, 0x34, 0x98, 0x4f, 0xe9, 0x72, 0xf2, 0x25, + 0x38, 0x23, 0x3f, 0x8d, 0xf8, 0x18, 0x14, 0xce, 0x4b, 0x0f, 0x23, 0x86, 0xe8, 0x55, 0xe3, 0x5a, + 0x2e, 0x6e, 0x5c, 0xdb, 0xc4, 0x6e, 0x0f, 0xf7, 0x17, 0xef, 0xbb, 0x07, 0xe1, 0x9a, 0x73, 0x4b, + 0x79, 0x5c, 0xa7, 0x9f, 0xfa, 0xa5, 0xaf, 0xe3, 0xe9, 0x55, 0x0c, 0x13, 0x1f, 0xc1, 0x1b, 0x30, + 0xf2, 0xa9, 0x7b, 0x20, 0x36, 0xa3, 0xe9, 0x43, 0x88, 0x10, 0xfa, 0xf7, 0x69, 0x30, 0x5f, 0x6b, + 0x3c, 0x60, 0x42, 0x12, 0x97, 0xda, 0xf4, 0x28, 0x2f, 0x82, 0xb8, 0xdc, 0x60, 0xba, 0x61, 0xa8, + 0x7c, 0xe6, 0x07, 0x54, 0x3e, 0xf5, 0xb3, 0x70, 0x5a, 0xa5, 0x83, 0xab, 0xe4, 0xf7, 0x70, 0xa6, + 0xde, 0xb1, 0x83, 0xf7, 0xdd, 0x03, 0x2e, 0x9d, 0x9e, 0x08, 0x89, 0x7a, 0x19, 0x26, 0xde, 0x77, + 0x0f, 0x4a, 0xdd, 0x86, 0x83, 0xd1, 0x2b, 0xfd, 0x6e, 0xab, 0x65, 0x61, 0x50, 0xd3, 0xf4, 0xe8, + 0x95, 0xef, 0xbb, 0x07, 0xf7, 0x5c, 0xef, 0x41, 0x8d, 0x81, 0x19, 0x02, 0x5e, 0xff, 0x1b, 0x1a, + 0xcc, 0xa8, 0x79, 0xe4, 0x10, 0xce, 0x27, 0x14, 0x63, 0x53, 0xe0, 0xcf, 0xd2, 0x8f, 0xe3, 0x4b, + 0x28, 0x47, 0xb6, 0x79, 0xca, 0x38, 0xd7, 0x48, 0xcf, 0x5a, 0x9d, 0x0c, 0xa9, 0xa6, 0x2b, 0x08, + 0xd0, 0x0e, 0xe2, 0x14, 0xc4, 0xbb, 0x66, 0x05, 0xce, 0xb0, 0xf8, 0xea, 0xe1, 0x03, 0x20, 0xdc, + 0xff, 0x96, 0x05, 0x27, 0x9f, 0xc7, 0x4c, 0xf1, 0xec, 0x07, 0xcb, 0x22, 0x1b, 0x30, 0xf3, 0xb9, + 0xeb, 0x3d, 0xe0, 0x84, 0x3b, 0xb6, 0x30, 0xdd, 0xf6, 0xed, 0x9a, 0xc2, 0xe7, 0xe1, 0x87, 0x63, + 0xfb, 0xfa, 0x43, 0xe4, 0x78, 0x75, 0x00, 0x87, 0x13, 0x34, 0x18, 0x49, 0x8d, 0x77, 0x5f, 0x96, + 0x6b, 0x42, 0xd4, 0xf8, 0x68, 0x68, 0xfe, 0x23, 0x0d, 0xce, 0x65, 0x74, 0x2b, 0x06, 0xfa, 0xe8, + 0xb6, 0x4c, 0x7e, 0x76, 0xc6, 0xe3, 0xd5, 0xb0, 0xde, 0x98, 0x6d, 0x77, 0x79, 0xd0, 0x77, 0x9f, + 0x85, 0xad, 0xb9, 0x01, 0x45, 0x19, 0xb6, 0xe1, 0xb6, 0x45, 0xdc, 0xf6, 0x99, 0x08, 0x74, 0xdd, + 0x6d, 0xe3, 0xf6, 0x5b, 0x86, 0xec, 0xd8, 0xed, 0x86, 0xd3, 0x3e, 0xe2, 0xb1, 0x6e, 0xe6, 0x22, + 0xe0, 0x5d, 0x96, 0x21, 0x19, 0x54, 0xd6, 0x5c, 0xaf, 0xe1, 0x0e, 0xa3, 0x89, 0xf2, 0xad, 0x74, + 0x46, 0x59, 0x3e, 0x79, 0xde, 0xc6, 0xad, 0x34, 0x85, 0xd9, 0x6f, 0xd7, 0x87, 0xae, 0x81, 0xed, + 0x99, 0x33, 0x4b, 0xf3, 0x3a, 0x7e, 0x3b, 0x87, 0xee, 0xa5, 0x72, 0xe4, 0x9b, 0xf0, 0x81, 0x16, + 0x7e, 0x50, 0x93, 0x88, 0xbb, 0x7a, 0x86, 0xbf, 0xc2, 0xfb, 0xfb, 0xea, 0x33, 0xbc, 0xd7, 0x00, + 0x3a, 0xb6, 0x57, 0xb7, 0xdb, 0x01, 0x5d, 0xfd, 0xff, 0x40, 0x64, 0x4a, 0x89, 0xe4, 0x13, 0x98, + 0x61, 0x2f, 0x77, 0x52, 0xc5, 0x4b, 0xda, 0xad, 0xbe, 0xd4, 0xf3, 0xde, 0xb1, 0xdb, 0x5c, 0x66, + 0x44, 0x55, 0x45, 0x59, 0x14, 0x04, 0x05, 0x57, 0xfe, 0x24, 0x6f, 0xc3, 0x05, 0xff, 0x81, 0xd3, + 0x31, 0x3f, 0xb7, 0x9c, 0xc0, 0x3c, 0x74, 0x3d, 0x0c, 0x9b, 0xdd, 0x16, 0xa3, 0xc9, 0x63, 0x5d, + 0x9c, 0xa3, 0x20, 0xf7, 0x2c, 0x27, 0xd8, 0x70, 0xbd, 0x35, 0x9a, 0xcf, 0x87, 0x94, 0x3c, 0x03, + 0xb3, 0xe8, 0xff, 0x64, 0x5a, 0x8d, 0x06, 0xd3, 0x22, 0xb9, 0x83, 0x75, 0x01, 0x93, 0x4b, 0x0d, + 0xa6, 0x75, 0xae, 0xce, 0x62, 0x8c, 0x67, 0xe7, 0x2b, 0xb6, 0x79, 0x68, 0xd1, 0x15, 0x43, 0xff, + 0xa5, 0x3c, 0x5c, 0x0d, 0x63, 0xbc, 0x1c, 0x58, 0x4d, 0xaa, 0x2c, 0xee, 0x79, 0xce, 0xd1, 0x91, + 0xed, 0xed, 0xdd, 0xf7, 0x6c, 0xff, 0xbe, 0xdb, 0x6c, 0x90, 0xf7, 0x95, 0xc5, 0xe1, 0xd5, 0xec, + 0x20, 0x31, 0x19, 0x08, 0x64, 0xe1, 0xbc, 0x0b, 0x63, 0x2d, 0x3b, 0xf0, 0x9c, 0x3a, 0x17, 0x95, + 0xaf, 0x0f, 0x8f, 0x6d, 0x1b, 0xcb, 0x1b, 0x1c, 0x0f, 0x79, 0x07, 0x2e, 0xb8, 0xc7, 0xb6, 0x87, + 0x31, 0x9a, 0xcc, 0x80, 0x01, 0x9b, 0x81, 0x80, 0xe6, 0x93, 0x65, 0x81, 0x82, 0x6c, 0xb9, 0x56, + 0x23, 0xd1, 0xb8, 0xf7, 0xe0, 0x62, 0xb7, 0xdd, 0xc8, 0x2e, 0xcf, 0xe6, 0xcf, 0x79, 0x84, 0x49, + 0x43, 0xa0, 0xbf, 0x1c, 0xed, 0x83, 0x4b, 0xab, 0xb5, 0xea, 0xd6, 0xfe, 0x5e, 0xd9, 0xdc, 0x2d, + 0x1b, 0x6b, 0xe5, 0x9d, 0xbd, 0xe2, 0x29, 0x72, 0x16, 0xc8, 0x7a, 0x79, 0x6b, 0xaf, 0x64, 0x6e, + 0x97, 0x4b, 0x3b, 0x61, 0xba, 0xa6, 0xdf, 0x82, 0x31, 0xd6, 0x0e, 0x32, 0x0f, 0xb3, 0xbb, 0x46, + 0xf5, 0x6e, 0xa5, 0x56, 0xa9, 0xee, 0x98, 0xb5, 0xdd, 0xd2, 0x1a, 0xdd, 0xd0, 0xce, 0x00, 0xd0, + 0xad, 0x2a, 0xff, 0xd6, 0xf4, 0xdf, 0x1a, 0xc1, 0x83, 0xcd, 0x78, 0xdf, 0x08, 0x3e, 0xff, 0x32, + 0x90, 0x04, 0xe5, 0x62, 0x05, 0x7e, 0x71, 0xe8, 0x1e, 0x36, 0xe6, 0x82, 0x58, 0x0a, 0xc6, 0xd6, + 0x0a, 0x3c, 0x87, 0x49, 0x71, 0x61, 0xac, 0xc3, 0x04, 0xa3, 0xdb, 0x26, 0x5f, 0x84, 0xd3, 0x7c, + 0x07, 0x83, 0x0f, 0x8d, 0x84, 0x5a, 0x4d, 0x7e, 0x58, 0xad, 0x86, 0x6f, 0x84, 0xe8, 0xa4, 0x09, + 0x95, 0x9a, 0x2f, 0xc2, 0xe9, 0xc0, 0xf2, 0x8e, 0xec, 0x20, 0x86, 0x7c, 0x64, 0x68, 0xe4, 0x0c, + 0x8d, 0x82, 0xfc, 0x05, 0x38, 0xdd, 0xb2, 0x1e, 0x9a, 0x8d, 0x2e, 0x9f, 0xd5, 0xec, 0x16, 0xb1, + 0x78, 0xde, 0x84, 0xb4, 0xac, 0x87, 0xeb, 0x3c, 0x6b, 0x9b, 0xe5, 0x90, 0x57, 0xe0, 0x9c, 0x67, + 0xb7, 0xdc, 0x63, 0x1b, 0x5f, 0x05, 0x37, 0x5f, 0x34, 0xa3, 0x88, 0x6c, 0x4c, 0xc5, 0x3d, 0xcd, + 0xb2, 0x0d, 0xbb, 0xd3, 0x7c, 0x31, 0x0c, 0xa0, 0x46, 0xd6, 0x61, 0xa4, 0x45, 0x55, 0x7b, 0x16, + 0x2b, 0xec, 0x85, 0x1e, 0x12, 0x23, 0x3e, 0xb8, 0xcb, 0x18, 0xb5, 0x07, 0x4b, 0xeb, 0xaf, 0xc1, + 0x08, 0xfd, 0x22, 0x67, 0x60, 0xae, 0xb6, 0x57, 0x35, 0x4a, 0x77, 0xca, 0xa6, 0x51, 0x5e, 0x2d, + 0x6d, 0x95, 0x76, 0x90, 0x6b, 0x16, 0xe0, 0xf4, 0xdd, 0xea, 0xd6, 0xfe, 0x76, 0xd9, 0xdc, 0xdd, + 0x2a, 0xad, 0x95, 0xb7, 0xcb, 0x3b, 0x7b, 0xe6, 0x46, 0xe5, 0xa3, 0xa2, 0xa6, 0xff, 0xb1, 0x26, + 0x0b, 0x4a, 0xa9, 0x0a, 0xbe, 0x1a, 0xbe, 0x2a, 0xaf, 0x86, 0x4f, 0xf7, 0xe5, 0x98, 0x70, 0x75, + 0x5c, 0x8d, 0xaf, 0x8e, 0x37, 0xfa, 0x96, 0x8d, 0x2f, 0x95, 0xe4, 0x0b, 0x30, 0xce, 0xa2, 0xe2, + 0x8a, 0x55, 0xfe, 0x99, 0xbe, 0x38, 0x50, 0x73, 0x32, 0x44, 0x31, 0xfd, 0x5f, 0xe6, 0x60, 0x3e, + 0x85, 0xc4, 0x84, 0x2a, 0x72, 0x56, 0x0a, 0x92, 0x29, 0xc7, 0xce, 0x7e, 0x4f, 0xd5, 0x18, 0x9f, + 0x1b, 0xa4, 0xfd, 0xca, 0xbe, 0xf1, 0x83, 0x14, 0x83, 0xc5, 0xf3, 0x43, 0x8c, 0xf1, 0x5f, 0x35, + 0x63, 0x05, 0xd5, 0x5e, 0x32, 0xc6, 0x8d, 0xbc, 0x04, 0x67, 0x43, 0x7d, 0xce, 0x54, 0x14, 0x3a, + 0x4d, 0x55, 0xe8, 0xf6, 0x24, 0x85, 0xae, 0x0a, 0xd3, 0x92, 0x42, 0x77, 0xc2, 0x4d, 0x02, 0x37, + 0xfb, 0x76, 0xb4, 0xac, 0xdb, 0x4d, 0x45, 0xba, 0xdd, 0x89, 0xfe, 0xfd, 0x74, 0xe5, 0xcf, 0x06, + 0x26, 0x65, 0x65, 0xcd, 0x7a, 0x71, 0x98, 0x8a, 0xe4, 0xe5, 0x8a, 0xc0, 0x08, 0xaa, 0x5c, 0x4c, + 0x3b, 0xc3, 0xdf, 0x64, 0x01, 0xc6, 0x85, 0x72, 0xc5, 0x5f, 0xd0, 0xe1, 0x9f, 0x7a, 0x97, 0x2f, + 0x05, 0xf3, 0x30, 0xbb, 0xdf, 0xe6, 0x88, 0x1b, 0x54, 0xde, 0xf8, 0xc5, 0x53, 0x68, 0xba, 0x0c, + 0x13, 0xf9, 0xc2, 0x5d, 0xd4, 0xc8, 0x53, 0x70, 0x45, 0x82, 0xf5, 0xdc, 0x63, 0xc7, 0x77, 0xdc, + 0xb6, 0xdd, 0xa8, 0x75, 0xac, 0x3a, 0x7b, 0x1d, 0xa8, 0x98, 0x23, 0x17, 0x61, 0x21, 0x02, 0xda, + 0xf7, 0x95, 0xdc, 0xbc, 0xfe, 0x4f, 0x47, 0xe0, 0x4c, 0xea, 0x0c, 0x19, 0xde, 0x57, 0x62, 0x5f, + 0x89, 0x69, 0x3d, 0xb3, 0xf2, 0xce, 0x60, 0x53, 0x31, 0x99, 0xaa, 0x86, 0xbb, 0x16, 0xf6, 0x9a, + 0x11, 0xc9, 0x5e, 0x43, 0x60, 0x84, 0x0a, 0x74, 0x1e, 0xf3, 0x17, 0x7f, 0xc7, 0x1e, 0x55, 0x19, + 0x7b, 0xd4, 0x47, 0x55, 0xc6, 0x07, 0x7e, 0x54, 0x25, 0xc1, 0x98, 0x13, 0x8f, 0xc9, 0x98, 0xe4, + 0x26, 0x10, 0xfe, 0xf0, 0x21, 0x2e, 0x28, 0xdc, 0x9a, 0xc7, 0x9e, 0xaf, 0x29, 0x4a, 0x39, 0x35, + 0xb4, 0xe6, 0x85, 0x92, 0x07, 0x1e, 0x4d, 0xf2, 0xe8, 0xef, 0xc0, 0xd9, 0xf4, 0xbe, 0x27, 0xb3, + 0x30, 0x55, 0x5a, 0x5f, 0x37, 0x8d, 0xf2, 0xee, 0x56, 0x65, 0xad, 0x54, 0x3c, 0x45, 0x08, 0xcc, + 0x60, 0x6c, 0xbc, 0x72, 0x98, 0xa6, 0xe9, 0x2e, 0xde, 0xbf, 0x12, 0x07, 0xe9, 0x92, 0x74, 0xcf, + 0xd8, 0xe7, 0xbe, 0xa7, 0x1a, 0xd9, 0x86, 0xa7, 0x97, 0xdd, 0xd5, 0x4a, 0xab, 0x90, 0xab, 0xf4, + 0x2f, 0xe2, 0xb6, 0xe4, 0x8e, 0x1d, 0xc4, 0x51, 0x64, 0x6e, 0xbe, 0xf5, 0xff, 0x51, 0xc3, 0xed, + 0x48, 0x46, 0x99, 0xff, 0x4f, 0xac, 0x70, 0x6c, 0xc3, 0x25, 0x1d, 0x0d, 0x47, 0x64, 0xfa, 0xd1, + 0xe9, 0xe0, 0xb5, 0x1e, 0x30, 0xbc, 0x1b, 0x5e, 0x57, 0xac, 0x33, 0x83, 0xf5, 0x03, 0xb3, 0xd6, + 0x7c, 0x9d, 0xbd, 0xcd, 0x22, 0xed, 0x6b, 0x74, 0x1f, 0x66, 0xc3, 0x4d, 0x0d, 0xb7, 0xcc, 0x9e, + 0x81, 0xb9, 0xea, 0x6e, 0xd9, 0x28, 0xed, 0x51, 0x6d, 0x56, 0xd8, 0x45, 0x4f, 0x91, 0xf3, 0x70, + 0x26, 0x4a, 0xae, 0xec, 0x98, 0xbb, 0x46, 0xf5, 0x8e, 0x51, 0xae, 0xd5, 0x8a, 0x1a, 0x55, 0x5a, + 0xa2, 0xac, 0xda, 0xfe, 0xda, 0x5a, 0xb9, 0x56, 0xdb, 0xd8, 0xdf, 0x2a, 0xe6, 0xa8, 0x46, 0x1d, + 0xe5, 0x70, 0xfb, 0x69, 0x5e, 0xbf, 0x0e, 0x05, 0x65, 0x27, 0xa5, 0x82, 0x19, 0xe5, 0x5a, 0xe5, + 0x93, 0x72, 0xf1, 0x94, 0x7e, 0x00, 0xf3, 0x29, 0xdb, 0x2e, 0x0a, 0xcc, 0x40, 0xf0, 0xa0, 0xca, + 0x2c, 0xed, 0xef, 0x55, 0x99, 0xe2, 0xa4, 0xa4, 0xae, 0xaf, 0x9b, 0xeb, 0x95, 0xda, 0x07, 0x45, + 0x8d, 0x5c, 0x80, 0x73, 0x72, 0x0e, 0xff, 0x8d, 0x99, 0x39, 0xfd, 0x32, 0xce, 0x9e, 0x94, 0xdd, + 0x27, 0xe7, 0xe5, 0xf7, 0xd1, 0x7e, 0xa4, 0x1c, 0xa8, 0x86, 0x47, 0xfa, 0xb2, 0xa5, 0xf7, 0x62, + 0xaf, 0x48, 0xa4, 0x4c, 0x5c, 0xf2, 0xba, 0x24, 0x5c, 0xb1, 0xb3, 0xe1, 0x0f, 0x71, 0x62, 0xa5, + 0xe5, 0x3f, 0x72, 0x95, 0xcc, 0xbb, 0x95, 0x26, 0x24, 0x1c, 0x17, 0x5e, 0x61, 0x97, 0xb7, 0xd5, + 0x2c, 0x5e, 0x91, 0x6c, 0x29, 0xd5, 0x14, 0x4b, 0xa9, 0xb4, 0xab, 0xef, 0xe1, 0x22, 0xa5, 0x7f, + 0x8c, 0x8e, 0xcb, 0xd9, 0x50, 0xbc, 0x9e, 0x15, 0xf9, 0xb1, 0xf5, 0x7e, 0x2d, 0x62, 0xa0, 0xba, + 0x8d, 0xa8, 0x19, 0xa6, 0x1d, 0xb7, 0x5d, 0x3d, 0xb6, 0xbd, 0xa6, 0xd5, 0xe9, 0x38, 0xed, 0x23, + 0x0a, 0x15, 0x4a, 0x18, 0x7c, 0x49, 0xb2, 0xd3, 0x0d, 0x4c, 0xf9, 0x35, 0x77, 0xc0, 0xa4, 0x1d, + 0xf1, 0xa4, 0x7b, 0xc3, 0xfd, 0xbc, 0xcd, 0xf3, 0xb9, 0xa5, 0x95, 0xa6, 0x60, 0xb6, 0x5e, 0x42, + 0x47, 0xd2, 0x1e, 0xd5, 0xf4, 0xef, 0xaa, 0x32, 0x8e, 0xb7, 0xf2, 0x90, 0x8c, 0x72, 0x26, 0x7f, + 0x1d, 0x66, 0xdc, 0x28, 0x33, 0x5a, 0xdf, 0x0b, 0x52, 0x6a, 0xa5, 0xa1, 0x77, 0x90, 0x2d, 0xd2, + 0xd0, 0x70, 0x12, 0xaa, 0x40, 0x64, 0x3c, 0x52, 0x78, 0xd4, 0xb4, 0x73, 0xe9, 0xd8, 0xc3, 0x36, + 0xc6, 0x9c, 0x54, 0x96, 0x49, 0x00, 0xfd, 0x4d, 0xdc, 0x69, 0x48, 0x80, 0x83, 0xbb, 0x6f, 0xf2, + 0xe5, 0x28, 0xa5, 0xec, 0xb7, 0x8a, 0xd8, 0xf5, 0x38, 0xb1, 0xea, 0xbd, 0x92, 0x01, 0x3b, 0xf9, + 0x72, 0x9c, 0xec, 0xd8, 0x35, 0x93, 0xef, 0x88, 0xd7, 0xa2, 0x3a, 0xce, 0x0d, 0x56, 0x0b, 0xdd, + 0xbd, 0xb0, 0x47, 0x80, 0xf8, 0xfe, 0x9b, 0x7f, 0x25, 0x6b, 0x8f, 0xf9, 0xc5, 0xfd, 0x7c, 0x9e, + 0xdd, 0xc1, 0x6e, 0xba, 0xdd, 0xc6, 0xaa, 0x55, 0x7f, 0xd0, 0xed, 0x0c, 0xe1, 0x50, 0x9b, 0xb8, + 0x12, 0x9d, 0x4b, 0x8f, 0x1f, 0x70, 0xd8, 0x0d, 0x4f, 0x40, 0xf0, 0x37, 0x39, 0x07, 0xe3, 0x81, + 0xe5, 0x3f, 0x90, 0x5e, 0x7c, 0xa0, 0x9f, 0x95, 0x06, 0xd9, 0x0d, 0xdd, 0xd5, 0x46, 0x71, 0xde, + 0xbe, 0x9e, 0x1a, 0x60, 0x26, 0x83, 0xd8, 0x54, 0xff, 0xe8, 0x15, 0x38, 0x43, 0xab, 0x34, 0x0f, + 0x10, 0xde, 0x3c, 0xc4, 0x33, 0xc8, 0x36, 0x0f, 0x23, 0x50, 0x30, 0xe6, 0x69, 0x26, 0xc3, 0xb5, + 0x21, 0xb2, 0xc8, 0x35, 0x98, 0xe6, 0x77, 0x71, 0xf1, 0x61, 0x52, 0x54, 0x19, 0x27, 0x8c, 0x29, + 0x96, 0xb6, 0x45, 0x93, 0xd0, 0x4c, 0x6b, 0x5b, 0x9e, 0xe9, 0x9f, 0xb4, 0xeb, 0x66, 0xcb, 0x39, + 0xa2, 0x72, 0x88, 0xbf, 0x4e, 0x38, 0x4b, 0x33, 0x6a, 0x27, 0xed, 0xfa, 0x36, 0x4b, 0x7e, 0x1c, + 0xbf, 0xb9, 0xd7, 0xd8, 0x15, 0xf8, 0x64, 0x83, 0x39, 0xcf, 0x4b, 0x1d, 0xa9, 0xc9, 0x1d, 0xa9, + 0xff, 0x61, 0x8e, 0xbb, 0x03, 0x85, 0x25, 0xd1, 0x9b, 0x5b, 0x1d, 0xdc, 0xf3, 0x30, 0x81, 0xce, + 0xdd, 0x51, 0xf1, 0x71, 0xfc, 0x66, 0x97, 0x7b, 0x7b, 0x9c, 0x16, 0x25, 0x47, 0x3e, 0xdf, 0x63, + 0xe4, 0x47, 0xa4, 0x91, 0xdf, 0x8f, 0x0d, 0xf0, 0x3b, 0x7d, 0x06, 0x38, 0x49, 0x75, 0xea, 0x28, + 0xc7, 0x47, 0x6c, 0x2c, 0x31, 0x62, 0x8f, 0x33, 0x0a, 0x9f, 0x71, 0xc7, 0xaf, 0x74, 0xaa, 0xf8, + 0x50, 0xbc, 0x08, 0x67, 0x58, 0x67, 0xb2, 0x27, 0x6e, 0x39, 0xbf, 0x85, 0x3d, 0x4b, 0x30, 0x53, + 0xc2, 0xc1, 0xc2, 0xe6, 0xf0, 0xd1, 0x0b, 0x8f, 0x0d, 0xd9, 0xf0, 0xf9, 0xfa, 0x3f, 0xca, 0xc5, + 0x47, 0x3e, 0xe9, 0xc1, 0x1d, 0xaf, 0x62, 0xe2, 0x40, 0x20, 0x5e, 0xc6, 0x77, 0xf1, 0x50, 0x60, + 0x24, 0x9f, 0xff, 0x9d, 0xe3, 0x59, 0x77, 0xa3, 0x97, 0x61, 0x07, 0x1a, 0xce, 0xcc, 0x67, 0x5a, + 0x24, 0x26, 0x1c, 0x55, 0x66, 0xf3, 0xab, 0xfc, 0xce, 0xcd, 0x58, 0xc6, 0x91, 0xb5, 0x21, 0x13, + 0x22, 0xdd, 0xde, 0x94, 0xde, 0xf0, 0x19, 0x1f, 0xea, 0x0d, 0x1f, 0xbd, 0xc1, 0xa2, 0x3d, 0xa4, + 0xf4, 0x1a, 0x1f, 0xa5, 0x25, 0x98, 0x8b, 0xf5, 0x4c, 0xd8, 0x7d, 0xb3, 0x4a, 0xbf, 0xa8, 0xed, + 0xca, 0x29, 0x93, 0xeb, 0x87, 0xb5, 0xb8, 0xd0, 0x4c, 0x46, 0xb7, 0xce, 0x1c, 0x9b, 0x81, 0x84, + 0x66, 0xfa, 0x4b, 0xb4, 0x51, 0xd8, 0x95, 0x11, 0x39, 0xec, 0x0a, 0x17, 0xf2, 0x29, 0xe4, 0x84, + 0x01, 0x96, 0x2f, 0xa7, 0xe5, 0x97, 0x9a, 0x61, 0x24, 0x26, 0x1d, 0x0a, 0xbe, 0x57, 0x4f, 0x74, + 0xc9, 0x94, 0xef, 0xd5, 0xef, 0x0e, 0x23, 0xed, 0x43, 0x47, 0xc5, 0xb4, 0xaa, 0x38, 0x35, 0xff, + 0x66, 0x04, 0xa3, 0xbf, 0x4a, 0x30, 0xbd, 0xdc, 0xef, 0x07, 0xa1, 0xec, 0x12, 0x80, 0xf0, 0xb9, + 0x8c, 0xa2, 0x09, 0xf1, 0x94, 0x34, 0xc2, 0xd3, 0xb8, 0x9b, 0x9f, 0xd3, 0x8f, 0x84, 0xe7, 0xf4, + 0x64, 0x07, 0x0a, 0x4c, 0x87, 0x30, 0x0f, 0x91, 0x24, 0x64, 0xee, 0x99, 0xf4, 0x1b, 0x70, 0x52, + 0x63, 0x98, 0xf2, 0xc0, 0xde, 0xbf, 0x64, 0xe5, 0x59, 0x8b, 0xc8, 0xe7, 0x30, 0xdb, 0xb2, 0x03, + 0x0b, 0x9f, 0x56, 0xe0, 0x18, 0xc7, 0x50, 0x06, 0xee, 0xf4, 0xc1, 0xd8, 0xeb, 0xc6, 0xc0, 0x36, + 0xc7, 0xc8, 0x92, 0x99, 0x50, 0x9c, 0x69, 0x29, 0x89, 0x54, 0x61, 0x6d, 0x59, 0x0f, 0xb9, 0x44, + 0x0a, 0xdf, 0x53, 0x6f, 0x59, 0x0f, 0x19, 0x7a, 0x9f, 0xdc, 0x02, 0x52, 0x77, 0xdb, 0x81, 0xd3, + 0xee, 0xf2, 0xe3, 0x2b, 0xf7, 0x81, 0x2d, 0xe2, 0x43, 0xcd, 0xc9, 0x39, 0x7b, 0x34, 0x83, 0x3c, + 0x03, 0xb3, 0x71, 0x19, 0x37, 0x29, 0x1e, 0x18, 0x90, 0xc5, 0xdb, 0x32, 0xcc, 0xb7, 0x1c, 0xdf, + 0x77, 0xda, 0x47, 0x66, 0x34, 0x84, 0xec, 0xe9, 0xf5, 0x09, 0x63, 0x8e, 0x67, 0xd5, 0xc4, 0x38, + 0xfa, 0x8b, 0x25, 0x98, 0x4f, 0x69, 0xce, 0x50, 0x92, 0xfa, 0xcf, 0xf3, 0xf8, 0x0e, 0xae, 0x2c, + 0x66, 0xdb, 0x87, 0x6e, 0xc2, 0x52, 0x91, 0x60, 0xaa, 0x5c, 0x92, 0xa9, 0x9e, 0x81, 0x59, 0x09, + 0x46, 0x0a, 0xec, 0x5f, 0x08, 0xa1, 0x50, 0x76, 0x2a, 0x6f, 0x26, 0x8f, 0x0c, 0xf3, 0x66, 0xf2, + 0x36, 0x4c, 0x88, 0x91, 0xe2, 0xab, 0xe1, 0x8b, 0x7d, 0x38, 0x81, 0x36, 0x26, 0x1c, 0x72, 0xfe, + 0xa6, 0x8f, 0x40, 0x41, 0x4a, 0xa1, 0x01, 0x7b, 0x6c, 0x58, 0x46, 0x15, 0xb6, 0xee, 0x1a, 0x4c, + 0x8b, 0x89, 0x84, 0x06, 0xd2, 0x1e, 0x07, 0x12, 0xb2, 0x4e, 0xc2, 0x8a, 0x50, 0x4c, 0xcb, 0x77, + 0xe9, 0x50, 0x18, 0x53, 0xf5, 0x28, 0x49, 0x7d, 0x10, 0x6c, 0x22, 0xf6, 0x20, 0xd8, 0xe2, 0x5b, + 0x50, 0x50, 0x1a, 0x34, 0xd4, 0x70, 0x7f, 0x8c, 0xd7, 0xfd, 0xd2, 0x49, 0xd1, 0xdf, 0x86, 0x51, + 0xa4, 0x86, 0x4c, 0xc1, 0xf8, 0xfe, 0xce, 0x07, 0x3b, 0xd5, 0x7b, 0x3b, 0xc5, 0x53, 0x64, 0x1e, + 0x66, 0xd7, 0xf6, 0x0d, 0xa3, 0xbc, 0xb3, 0x67, 0xae, 0x6d, 0xed, 0xd7, 0xf6, 0xca, 0x46, 0x51, + 0x23, 0x73, 0x50, 0xa8, 0xee, 0x6d, 0x96, 0x8d, 0x30, 0x29, 0xa7, 0x7f, 0x53, 0xc3, 0xb0, 0xd3, + 0x7d, 0xa7, 0x21, 0x5f, 0x57, 0xde, 0x81, 0x71, 0x31, 0xbf, 0xd8, 0x8e, 0xf3, 0xa9, 0x01, 0x86, + 0xd2, 0x10, 0x65, 0x32, 0x66, 0x60, 0x2e, 0x63, 0x06, 0xea, 0xbf, 0x34, 0x82, 0x4e, 0x29, 0x89, + 0xc1, 0xec, 0xbd, 0xf2, 0xbc, 0x03, 0x63, 0x6e, 0x47, 0xf2, 0x44, 0xb9, 0xde, 0x87, 0xc4, 0x6a, + 0x87, 0x31, 0x07, 0x2b, 0x24, 0xf1, 0x57, 0xfe, 0x51, 0xf9, 0xeb, 0x12, 0x00, 0x3e, 0xa4, 0xcf, + 0x5c, 0x15, 0xd8, 0xe9, 0xe9, 0x24, 0xa6, 0xa0, 0x97, 0x82, 0x6a, 0xe1, 0x1d, 0x1d, 0xc6, 0xc2, + 0x5b, 0x82, 0x99, 0xba, 0xdb, 0xea, 0xd0, 0xb5, 0xa6, 0x31, 0xa8, 0x81, 0xb8, 0x10, 0x96, 0x40, + 0x14, 0x92, 0x7e, 0x33, 0xae, 0xe8, 0x37, 0x09, 0x69, 0x31, 0x91, 0x94, 0x16, 0x04, 0x46, 0xf0, + 0x52, 0xc8, 0x24, 0xaa, 0x71, 0xf8, 0x3b, 0xb9, 0xee, 0x40, 0xca, 0xba, 0x73, 0x05, 0xa6, 0x58, + 0x97, 0x30, 0x4f, 0x8f, 0x29, 0x26, 0x9c, 0x31, 0x89, 0x39, 0x79, 0x5c, 0x81, 0x29, 0x3b, 0xb0, + 0xc2, 0x73, 0x94, 0x69, 0xf6, 0x38, 0xaa, 0x1d, 0x58, 0xe2, 0xf8, 0x44, 0xd6, 0xe2, 0x0b, 0x8a, + 0x16, 0xaf, 0x7f, 0x23, 0xa1, 0xa8, 0xa8, 0xc6, 0xd2, 0x9e, 0xbb, 0xbb, 0xd3, 0x30, 0xca, 0x94, + 0x69, 0xb6, 0xa3, 0x64, 0x1f, 0xb2, 0x52, 0x94, 0x57, 0x94, 0xbd, 0xd4, 0x1d, 0xd1, 0x48, 0xea, + 0x8e, 0x48, 0xff, 0x63, 0x2d, 0xae, 0xb1, 0xc4, 0x0c, 0xb2, 0xf7, 0x24, 0x0f, 0x51, 0x2d, 0xfb, + 0x62, 0x66, 0x26, 0x02, 0xfe, 0x54, 0x8b, 0xcd, 0xb7, 0x09, 0x21, 0xb2, 0xc5, 0x03, 0x28, 0x28, + 0x59, 0x29, 0xe2, 0xe6, 0x2d, 0xf5, 0xdd, 0x9b, 0xeb, 0x83, 0x55, 0x2c, 0x49, 0xa5, 0x2f, 0x27, + 0x36, 0x6d, 0x56, 0x60, 0x35, 0xdd, 0xa3, 0x27, 0xa6, 0x1e, 0xea, 0x6f, 0xc5, 0xd5, 0xdc, 0xb0, + 0x06, 0xde, 0x7f, 0x8b, 0x30, 0x81, 0xc1, 0xbf, 0xda, 0x81, 0xb0, 0x1d, 0x85, 0xdf, 0xfa, 0x7f, + 0xa9, 0xc5, 0xa5, 0xe6, 0xa6, 0x43, 0x9b, 0x77, 0x52, 0x09, 0xec, 0xd6, 0x40, 0xfa, 0x96, 0xb2, + 0xe4, 0xe5, 0x86, 0x59, 0xf2, 0x1e, 0x5f, 0x86, 0xe8, 0xab, 0xf1, 0xde, 0xe5, 0xd4, 0x0f, 0xa1, + 0x30, 0xea, 0xed, 0x78, 0xff, 0x85, 0x38, 0x78, 0xff, 0x6d, 0xc3, 0xf4, 0x7d, 0x96, 0x64, 0x36, + 0x1d, 0x5f, 0x3c, 0xee, 0xbc, 0xd4, 0x87, 0x5a, 0xa9, 0x1f, 0x8d, 0x29, 0x5e, 0x7e, 0xcb, 0xf1, + 0x03, 0xfd, 0x27, 0xb4, 0xf8, 0x6e, 0x1c, 0xcf, 0x3d, 0xd8, 0xdb, 0x80, 0x92, 0xbb, 0x53, 0xea, + 0x5e, 0x9e, 0xdc, 0x85, 0x59, 0xee, 0x39, 0x6d, 0x37, 0x4c, 0xf9, 0x84, 0xe5, 0x56, 0x1f, 0x7a, + 0x0c, 0x51, 0x8a, 0x9d, 0xb2, 0xcc, 0x78, 0xca, 0x77, 0x78, 0x0b, 0x2d, 0x9d, 0x28, 0xae, 0xad, + 0xff, 0x7a, 0x9e, 0xc5, 0xf9, 0x93, 0xa0, 0xf8, 0x0d, 0x4b, 0xd4, 0xac, 0x9e, 0xd4, 0xc6, 0x41, + 0x0d, 0xda, 0x9d, 0x7f, 0x8c, 0xa0, 0xdd, 0x71, 0x75, 0x77, 0x24, 0xa1, 0xee, 0x0a, 0xbb, 0xc4, + 0xa8, 0x64, 0x97, 0xb8, 0x0e, 0x33, 0x9e, 0x4d, 0xe7, 0x07, 0x5d, 0x7d, 0x1b, 0xd6, 0x89, 0xcf, + 0xed, 0x43, 0x85, 0x30, 0x75, 0xdd, 0x3a, 0x51, 0x65, 0xed, 0xb8, 0x6a, 0x31, 0xa9, 0x86, 0x96, + 0x8d, 0x89, 0x8c, 0xc7, 0xf7, 0xb2, 0xbb, 0xf1, 0x49, 0x5f, 0xb7, 0x3c, 0x49, 0xb0, 0x1b, 0xad, + 0x4c, 0x35, 0xfe, 0xec, 0x43, 0x91, 0x69, 0xf1, 0xd8, 0x73, 0xf2, 0x95, 0xc6, 0xe7, 0x87, 0xa0, + 0xdc, 0x98, 0x41, 0x24, 0x98, 0x84, 0x57, 0x1b, 0x3f, 0x4c, 0x30, 0x95, 0x5c, 0x75, 0x18, 0x88, + 0x82, 0x70, 0x09, 0x18, 0x5e, 0xf7, 0x8d, 0x6e, 0x35, 0x1c, 0xa8, 0x95, 0x34, 0xf4, 0x9f, 0xd1, + 0x52, 0x9b, 0xa3, 0xda, 0x49, 0xbf, 0x35, 0xcd, 0xc1, 0x58, 0x8b, 0x88, 0x10, 0x5d, 0x05, 0x45, + 0xac, 0x45, 0xac, 0xbe, 0xeb, 0x34, 0x52, 0xa6, 0x90, 0x4c, 0x19, 0x9f, 0x42, 0xbb, 0xa9, 0xe4, + 0xab, 0x26, 0x83, 0xe1, 0x7a, 0x24, 0xbd, 0xda, 0xd8, 0xae, 0x9f, 0xbd, 0xc5, 0x12, 0x07, 0x4a, + 0x9c, 0xd6, 0xfc, 0x20, 0x0b, 0x6c, 0xd1, 0x03, 0x8e, 0x0f, 0x9a, 0xaf, 0xf6, 0xb0, 0x24, 0x17, + 0x2b, 0x83, 0xf4, 0x70, 0x02, 0x21, 0xbb, 0x1d, 0x87, 0x79, 0x54, 0x48, 0xf2, 0xbd, 0x6b, 0x5d, + 0x49, 0x5c, 0x6c, 0xc3, 0x7c, 0x0a, 0x58, 0xca, 0x64, 0x28, 0xa9, 0xab, 0xf6, 0x50, 0x83, 0xae, + 0x5c, 0x54, 0x8e, 0xad, 0x8d, 0x35, 0xc9, 0x63, 0xf4, 0xf1, 0x17, 0xee, 0x3f, 0xd1, 0x12, 0xd2, + 0x54, 0x3a, 0x13, 0xa4, 0x92, 0x09, 0xdd, 0x4f, 0x99, 0xb3, 0x0c, 0xf3, 0x3d, 0x7d, 0x01, 0x4e, + 0x33, 0x97, 0x9a, 0x86, 0xfb, 0x79, 0x1b, 0xfd, 0x10, 0x51, 0x39, 0xe4, 0x5e, 0x27, 0x04, 0xf3, + 0xd6, 0x79, 0x16, 0x3a, 0x7d, 0x90, 0x57, 0xe1, 0x1c, 0xd5, 0x6c, 0x3d, 0xdb, 0xf7, 0xed, 0x86, + 0xc9, 0xce, 0x09, 0x78, 0x21, 0xe6, 0x93, 0x72, 0x26, 0xca, 0x66, 0x27, 0x03, 0xac, 0x5c, 0x09, + 0x2e, 0x85, 0x01, 0x59, 0x3c, 0xe6, 0x1b, 0xd7, 0x40, 0x77, 0x53, 0x6e, 0x18, 0xe3, 0xa2, 0x74, + 0x51, 0x00, 0x71, 0xff, 0xb9, 0xc6, 0x86, 0xeb, 0x71, 0x33, 0x9b, 0xfe, 0x06, 0x8c, 0xd7, 0x1a, + 0x0f, 0x8c, 0x6e, 0x13, 0x55, 0x10, 0x9f, 0xbd, 0xb9, 0x1b, 0xaa, 0x20, 0xe2, 0x9b, 0xb6, 0xd3, + 0xea, 0x38, 0xc2, 0xe8, 0x89, 0xbf, 0xf5, 0x6d, 0x56, 0xd4, 0x6d, 0xda, 0xa9, 0x31, 0xce, 0x96, + 0x61, 0xd4, 0x93, 0x1e, 0x74, 0x58, 0x48, 0x1b, 0x5f, 0x5a, 0xaf, 0xc1, 0xc0, 0xf4, 0x75, 0xdc, + 0x21, 0x51, 0x74, 0xaa, 0xd8, 0xbb, 0x09, 0x23, 0x9e, 0xdb, 0x14, 0x27, 0x9d, 0xe9, 0x68, 0xdc, + 0xa6, 0x6d, 0x20, 0x94, 0x5e, 0xc6, 0x5b, 0xaf, 0x32, 0x96, 0x50, 0x82, 0x0d, 0x83, 0x86, 0x1d, + 0x96, 0xd2, 0x84, 0xc4, 0xf4, 0x7b, 0x01, 0x0f, 0x4b, 0x63, 0x59, 0xd1, 0xbb, 0xc0, 0xf2, 0x65, + 0x6e, 0xf6, 0xa1, 0x3f, 0x1f, 0xd2, 0x34, 0xc0, 0xf3, 0x36, 0x2c, 0x18, 0x90, 0x02, 0xfc, 0x48, + 0x2d, 0x58, 0x0a, 0xbb, 0xb3, 0xff, 0xe3, 0x35, 0xe7, 0x42, 0x02, 0x63, 0x12, 0x29, 0x1a, 0x13, + 0x55, 0x76, 0x3f, 0xea, 0x98, 0xa8, 0x72, 0x76, 0x48, 0x34, 0xff, 0x4c, 0x83, 0x99, 0x0d, 0xa7, + 0x69, 0xfb, 0x27, 0x7e, 0x60, 0xb7, 0xf6, 0x3c, 0xa7, 0xa5, 0xff, 0x9a, 0x06, 0xa7, 0xd5, 0x24, + 0xbe, 0xad, 0x9e, 0x87, 0xd9, 0x8d, 0x9a, 0xb9, 0x67, 0x54, 0xb6, 0xcd, 0xc8, 0x92, 0x70, 0x0e, + 0xe6, 0x45, 0xe2, 0x4e, 0x75, 0xcf, 0x14, 0x57, 0xbb, 0x34, 0x19, 0xba, 0xb6, 0x57, 0x32, 0xf6, + 0xf0, 0x4d, 0xca, 0xb3, 0x40, 0x44, 0x62, 0x65, 0x27, 0xf4, 0x70, 0xc8, 0xab, 0xc0, 0xd5, 0xdd, + 0x5d, 0xbc, 0x82, 0x7a, 0x06, 0xe6, 0x44, 0xe2, 0x5a, 0x75, 0x7b, 0x77, 0xab, 0xbc, 0x87, 0x57, + 0x51, 0x09, 0xcc, 0x88, 0x64, 0x71, 0x25, 0x55, 0xff, 0x22, 0xaa, 0xb2, 0x09, 0xaa, 0xbd, 0x27, + 0x11, 0xc3, 0x55, 0xff, 0xdb, 0xec, 0x42, 0x6a, 0x2a, 0xf6, 0x30, 0xac, 0x85, 0xfa, 0x6a, 0xe6, + 0xcb, 0x89, 0x6e, 0x57, 0x4b, 0x2f, 0xa7, 0x75, 0x70, 0x68, 0x20, 0x90, 0xee, 0xd8, 0xe5, 0xd4, + 0x3b, 0x76, 0xdf, 0x91, 0x4e, 0xc9, 0xa0, 0x9b, 0xd9, 0x3e, 0x0d, 0xfd, 0x7e, 0xf6, 0xfc, 0x51, + 0x3a, 0xfa, 0x6f, 0x73, 0x4b, 0x2f, 0xb2, 0xd8, 0xfb, 0xdd, 0xc0, 0xdd, 0xa8, 0x25, 0x5a, 0x49, + 0x97, 0xeb, 0x0b, 0xa9, 0xd9, 0x9c, 0xca, 0x2f, 0xc1, 0x54, 0xe0, 0x39, 0xad, 0xe8, 0xf8, 0x3b, + 0x33, 0xd0, 0x63, 0x16, 0x8a, 0xe5, 0x28, 0x89, 0xbf, 0xcb, 0x1b, 0x44, 0x33, 0x21, 0x93, 0xec, + 0x45, 0x1f, 0x66, 0x63, 0x05, 0x53, 0x56, 0xe9, 0xf7, 0xe5, 0x55, 0xfa, 0x51, 0xbb, 0x50, 0x5a, + 0xae, 0x59, 0xbc, 0xaf, 0xa8, 0x25, 0x72, 0x7c, 0x32, 0xfd, 0xdf, 0x6b, 0xb1, 0x9e, 0x54, 0xe3, + 0x8f, 0x6d, 0xc1, 0x28, 0x46, 0xf3, 0xe0, 0x7d, 0xf4, 0x6a, 0xef, 0x3e, 0x52, 0xca, 0x2e, 0xe3, + 0x17, 0x7f, 0x81, 0x19, 0x91, 0xf4, 0xe8, 0x98, 0x2f, 0x03, 0x44, 0xe0, 0x29, 0x7d, 0xf2, 0xb6, + 0xaa, 0xb9, 0x24, 0xdd, 0xbf, 0x36, 0x7c, 0x3a, 0x00, 0x77, 0xd5, 0x18, 0x22, 0x72, 0x2f, 0x7c, + 0x82, 0x5b, 0xe2, 0x78, 0x5f, 0xb9, 0x9d, 0x27, 0x31, 0x33, 0xae, 0xa4, 0xca, 0x17, 0x8a, 0x9b, + 0x0b, 0xf5, 0xd7, 0xd8, 0x43, 0x1a, 0x61, 0x47, 0xed, 0x76, 0xfd, 0x81, 0xc2, 0xe0, 0xea, 0xaf, + 0xc4, 0xc6, 0x8e, 0x15, 0xe4, 0x83, 0x23, 0x75, 0xa7, 0xa6, 0x4e, 0x0f, 0x16, 0x52, 0x55, 0x2a, + 0x36, 0x58, 0x3b, 0xf5, 0x97, 0xe3, 0x74, 0x46, 0x6d, 0xe8, 0x51, 0xdb, 0x7d, 0x29, 0x66, 0x1c, + 0x6a, 0x49, 0xfb, 0xbe, 0xdd, 0x08, 0xcb, 0xbd, 0x0f, 0x85, 0x63, 0xb7, 0x69, 0x76, 0x03, 0xa7, + 0x29, 0xef, 0x38, 0x9e, 0xc9, 0x38, 0xae, 0x0c, 0x11, 0xf0, 0xb8, 0x30, 0x53, 0xc7, 0x6e, 0x73, + 0x3f, 0x70, 0x9a, 0xb8, 0x71, 0xda, 0x90, 0x42, 0xd7, 0x49, 0x35, 0xf5, 0xb9, 0xf6, 0x5f, 0x84, + 0xbc, 0x38, 0x3d, 0x1e, 0x31, 0xe8, 0x4f, 0xfd, 0xbf, 0xd6, 0x60, 0x36, 0x1a, 0xae, 0xb5, 0xfb, + 0x76, 0xfd, 0x81, 0xfe, 0x1b, 0x1a, 0x9c, 0x89, 0xa5, 0xf1, 0xf9, 0x7c, 0x1a, 0x8a, 0x1b, 0x35, + 0x73, 0x6d, 0xb3, 0xbc, 0xf6, 0x81, 0xb4, 0xb4, 0x2d, 0xc0, 0xe9, 0x30, 0x55, 0x5d, 0xdb, 0x64, + 0xf8, 0x68, 0x71, 0x63, 0x4b, 0x21, 0x4b, 0x55, 0x56, 0x37, 0x15, 0x5c, 0x2c, 0x6f, 0x6c, 0x2d, + 0x64, 0xa9, 0xf2, 0xfa, 0xc6, 0xd6, 0x42, 0x96, 0x1e, 0x2e, 0x70, 0x1f, 0xc6, 0x04, 0xbf, 0xa0, + 0x7e, 0xc0, 0x15, 0x8e, 0xf0, 0xbb, 0x15, 0xdc, 0x91, 0x19, 0x6f, 0x4a, 0xfc, 0x60, 0x5c, 0xda, + 0xcb, 0x38, 0xc3, 0x90, 0x3f, 0xaa, 0xb4, 0x7f, 0xb5, 0x87, 0xa8, 0xc2, 0xe2, 0xcb, 0xa9, 0x1d, + 0x3c, 0x80, 0xbc, 0x7f, 0x37, 0x83, 0x98, 0x01, 0x97, 0x36, 0xfd, 0x2f, 0xd8, 0xf6, 0x38, 0x03, + 0xc1, 0xb7, 0xa8, 0x39, 0x5b, 0x50, 0xb8, 0x6f, 0x5b, 0x4d, 0x7c, 0xa8, 0x26, 0xbc, 0x34, 0x31, + 0x93, 0x12, 0x0b, 0x20, 0x42, 0xb3, 0x89, 0xf0, 0x1c, 0xcf, 0xf4, 0x7d, 0xe9, 0x2b, 0x1c, 0xa4, + 0x7c, 0x34, 0x48, 0x72, 0x87, 0x8d, 0xa8, 0x1d, 0xf6, 0x76, 0x4c, 0x24, 0x71, 0xfa, 0x06, 0x94, + 0x03, 0x57, 0xd3, 0xf9, 0x49, 0x92, 0x68, 0x0c, 0xa2, 0x82, 0xbb, 0xb6, 0xe0, 0x64, 0xcd, 0xea, + 0x58, 0x07, 0x4e, 0xd3, 0x09, 0x9c, 0xd0, 0x05, 0x50, 0x6f, 0xe2, 0x90, 0xa5, 0x43, 0xf0, 0x0e, + 0xaf, 0xc0, 0x74, 0x5d, 0x4a, 0xe7, 0x8b, 0x4c, 0xaa, 0x31, 0xb9, 0xc6, 0xb6, 0x45, 0x21, 0x9a, + 0x13, 0x43, 0x29, 0xca, 0x17, 0x39, 0x51, 0xdb, 0x5d, 0xdb, 0xf3, 0x1d, 0xb7, 0x2d, 0x48, 0xf9, + 0x06, 0x5b, 0xe4, 0x12, 0xb9, 0x9c, 0x8c, 0xb7, 0x61, 0xca, 0x6f, 0x3c, 0x30, 0x8f, 0x59, 0x32, + 0x97, 0x4f, 0x17, 0x52, 0x83, 0x80, 0xf1, 0x92, 0xe0, 0x87, 0xbf, 0xc9, 0x1b, 0x30, 0x2e, 0x4a, + 0xe6, 0x7a, 0xc7, 0x0b, 0x12, 0xa5, 0x05, 0xbc, 0xfe, 0xdb, 0x79, 0x54, 0xf6, 0x13, 0x6d, 0x23, + 0x7b, 0x30, 0xce, 0xf7, 0x81, 0x9c, 0x9a, 0xd7, 0x07, 0xea, 0x93, 0x65, 0xe9, 0x01, 0x58, 0x9e, + 0xb9, 0x79, 0xca, 0x10, 0xa8, 0x16, 0x7f, 0x2f, 0x07, 0x24, 0x09, 0x41, 0x3e, 0x54, 0x6e, 0x7a, + 0xbc, 0xf3, 0xa8, 0x35, 0xc9, 0xd7, 0xb3, 0xff, 0x44, 0xe3, 0x17, 0x39, 0x94, 0x63, 0xc5, 0x29, + 0x18, 0x8f, 0x8e, 0x13, 0x8b, 0x30, 0xcd, 0xc2, 0xd7, 0xac, 0x96, 0xd6, 0x3e, 0xd8, 0xdf, 0x2d, + 0xe6, 0xc8, 0x2c, 0x4c, 0xad, 0x19, 0xe5, 0xf5, 0xf2, 0xce, 0x5e, 0xa5, 0xb4, 0x45, 0x05, 0x23, + 0x86, 0xc0, 0x59, 0x2f, 0x17, 0x47, 0xa8, 0x52, 0x5f, 0x5d, 0x7d, 0xbf, 0xbc, 0xb6, 0x67, 0xf2, + 0x5b, 0x5b, 0x4c, 0x10, 0xd6, 0xd6, 0x36, 0xcb, 0xeb, 0xfb, 0x5b, 0x65, 0x73, 0xb7, 0xba, 0x55, + 0x59, 0xfb, 0xb8, 0x38, 0x46, 0x00, 0xc6, 0xd8, 0x05, 0xae, 0xe2, 0x38, 0xfd, 0x5d, 0xda, 0x2a, + 0x1b, 0x7b, 0xb5, 0xe2, 0x04, 0xad, 0x6d, 0xbb, 0xba, 0xbf, 0xb3, 0xc7, 0x63, 0xe8, 0x14, 0x27, + 0x29, 0x72, 0xa3, 0xba, 0x55, 0x2e, 0x02, 0xa3, 0x04, 0xc9, 0x32, 0x77, 0x4b, 0x15, 0xa3, 0x38, + 0x45, 0x09, 0xdd, 0xae, 0xdc, 0x31, 0x4a, 0x7b, 0xe5, 0xe2, 0x34, 0xad, 0x5b, 0x5c, 0x15, 0xe3, + 0xd5, 0x14, 0x56, 0xc7, 0x58, 0x97, 0xe9, 0xbf, 0xae, 0x01, 0x44, 0x6c, 0x41, 0xf7, 0xa2, 0x2d, + 0xeb, 0x53, 0x57, 0xbc, 0x26, 0xca, 0x3e, 0x30, 0xd5, 0x69, 0xbb, 0xe2, 0xf9, 0x4d, 0xf6, 0x41, + 0x53, 0x3b, 0x56, 0x50, 0xbf, 0xcf, 0x9f, 0xdf, 0x64, 0x1f, 0x74, 0x42, 0x0b, 0x66, 0xe2, 0x13, + 0x5a, 0xf0, 0xca, 0x26, 0x8c, 0x8b, 0x6a, 0x16, 0xe0, 0xf4, 0xf6, 0x7e, 0x6d, 0xcf, 0xdc, 0x2c, + 0xdd, 0x2d, 0x9b, 0x9f, 0x94, 0x8d, 0xaa, 0x79, 0xb7, 0xb4, 0xb5, 0x5f, 0x2e, 0x9e, 0x22, 0x93, + 0x30, 0xba, 0x4d, 0xeb, 0xe4, 0x3f, 0x69, 0x45, 0x45, 0x9b, 0xfe, 0xdc, 0xa5, 0xd8, 0x8b, 0x2b, + 0x8b, 0xb9, 0xa2, 0xa6, 0xff, 0x57, 0x5a, 0xf8, 0xac, 0xbf, 0xc0, 0x78, 0x16, 0xc6, 0x58, 0x60, + 0x7b, 0xb1, 0x72, 0xb2, 0x2f, 0x99, 0x9c, 0x9c, 0x42, 0x0e, 0xd9, 0x80, 0xf1, 0x86, 0x1d, 0x58, + 0x4e, 0x18, 0x14, 0xf4, 0x66, 0x1f, 0xae, 0x5f, 0x5e, 0x67, 0xe0, 0x4c, 0x21, 0x14, 0x85, 0x17, + 0xdf, 0x84, 0x69, 0x39, 0x63, 0x28, 0x0b, 0xee, 0xaf, 0xe5, 0x60, 0x1a, 0xad, 0x44, 0xe2, 0xc8, + 0xcc, 0x8c, 0x7b, 0xb6, 0xcf, 0xc2, 0x54, 0xa5, 0x7d, 0x6c, 0x35, 0x9d, 0x06, 0xfd, 0x64, 0x57, + 0x38, 0x38, 0x30, 0x3f, 0x05, 0x67, 0x07, 0xdb, 0x3c, 0x8d, 0x29, 0x16, 0x6c, 0x23, 0xaa, 0x24, + 0xa1, 0x2f, 0x5b, 0x31, 0xaf, 0xef, 0x60, 0x10, 0x93, 0x23, 0x9b, 0xf2, 0x0c, 0x47, 0x8c, 0xdf, + 0xc5, 0x53, 0x94, 0xdb, 0x98, 0xb1, 0x8a, 0x07, 0x31, 0x61, 0xc6, 0x9e, 0x62, 0x8e, 0x82, 0xca, + 0xf1, 0x8d, 0x19, 0x5f, 0xaf, 0xbb, 0x6d, 0xbb, 0x38, 0xa2, 0x77, 0x44, 0x5c, 0x1f, 0x4a, 0x44, + 0x84, 0x30, 0xe8, 0xfa, 0x0c, 0xe3, 0x87, 0x5d, 0xbb, 0x6b, 0x37, 0x8a, 0x1a, 0x6b, 0x88, 0x13, + 0x38, 0x56, 0xd3, 0xf9, 0x8a, 0xdd, 0x28, 0xe6, 0xc8, 0x0c, 0x40, 0xa5, 0xbd, 0xeb, 0xb9, 0x47, + 0x9e, 0xed, 0xfb, 0x3c, 0x40, 0x8a, 0xe5, 0x34, 0xed, 0x46, 0x71, 0x84, 0x4c, 0xc3, 0xc4, 0x1a, + 0x3f, 0xb5, 0x2d, 0x8e, 0xe2, 0x97, 0xd5, 0xae, 0xdb, 0x34, 0x6f, 0x4c, 0xff, 0x4d, 0x0d, 0x16, + 0xe4, 0x3e, 0x53, 0x94, 0x84, 0x0a, 0x4c, 0x86, 0x97, 0xaa, 0xb9, 0x38, 0x78, 0x3e, 0x3d, 0x5e, + 0x17, 0x2f, 0xbd, 0xac, 0x5e, 0xc9, 0x8e, 0x4a, 0xf7, 0x73, 0x37, 0xba, 0x00, 0x93, 0xfc, 0x4e, + 0x6a, 0x78, 0x46, 0x3a, 0xc1, 0x12, 0x54, 0x9f, 0x32, 0xc5, 0xf3, 0x55, 0xff, 0x5f, 0x25, 0x47, + 0xdc, 0x34, 0xfa, 0xd5, 0x4a, 0xb5, 0x78, 0xa5, 0x59, 0xbe, 0x6a, 0x64, 0x3f, 0x0c, 0xff, 0xc2, + 0x1f, 0xc5, 0x7a, 0x33, 0xd3, 0x32, 0x9a, 0x52, 0xed, 0xb2, 0xc2, 0x2a, 0x9b, 0xa7, 0xc2, 0xb8, + 0x30, 0x76, 0x18, 0xcd, 0x92, 0xc5, 0x10, 0xe6, 0x4f, 0x63, 0xbd, 0xf7, 0xe8, 0xc8, 0x91, 0x0f, + 0xa3, 0x30, 0x97, 0xf8, 0x49, 0x0e, 0x60, 0xca, 0x6a, 0x36, 0x43, 0xd7, 0x21, 0xfe, 0x48, 0xd6, + 0xbb, 0x8f, 0x52, 0x4b, 0xa9, 0xd9, 0xe4, 0x8e, 0x46, 0x9b, 0xa7, 0x0c, 0xb0, 0xc2, 0xaf, 0xc5, + 0x9b, 0xb1, 0x39, 0xd2, 0x53, 0x7d, 0x58, 0xbc, 0x9d, 0x36, 0x7d, 0x7a, 0x78, 0xd2, 0x2e, 0xce, + 0xc3, 0x5c, 0x82, 0x82, 0xd5, 0x51, 0xc8, 0xbb, 0x9d, 0x40, 0x7f, 0x19, 0xce, 0xa7, 0x90, 0xdd, + 0xcf, 0xb7, 0xf7, 0x20, 0x3a, 0x01, 0x4d, 0x2d, 0xb8, 0x0a, 0x63, 0x9e, 0xed, 0x77, 0x9b, 0x22, + 0x40, 0xd3, 0x52, 0x4f, 0x3e, 0x57, 0xca, 0x1a, 0xbc, 0x64, 0x9c, 0x32, 0x36, 0xcb, 0xfa, 0x9d, + 0x54, 0xea, 0x8d, 0x04, 0x65, 0x6a, 0xc1, 0xf5, 0x78, 0xec, 0xa8, 0xde, 0xa4, 0x29, 0x85, 0xc3, + 0xf0, 0x51, 0xe2, 0x49, 0xaf, 0x14, 0x40, 0xae, 0xc0, 0xfd, 0x93, 0x51, 0x28, 0xca, 0xd9, 0x78, + 0x92, 0x93, 0x79, 0xbc, 0xda, 0x67, 0x3a, 0x3f, 0x03, 0xb3, 0xe8, 0xf9, 0x20, 0x9d, 0x71, 0x72, + 0x3f, 0x30, 0x4c, 0x0e, 0x4f, 0x39, 0x97, 0x60, 0x4e, 0x81, 0x43, 0xb3, 0x28, 0x9b, 0xe3, 0xb3, + 0x12, 0x24, 0xfa, 0x8c, 0xdd, 0x80, 0xa2, 0x67, 0xb7, 0xdc, 0x40, 0x76, 0x42, 0x65, 0xae, 0xb3, + 0x33, 0x2c, 0xfd, 0xae, 0x14, 0xf3, 0x1d, 0x4f, 0x44, 0xa2, 0x73, 0x87, 0x31, 0xc9, 0xd5, 0x2e, + 0x3c, 0x7c, 0xd8, 0x84, 0x42, 0x9d, 0x5d, 0xe9, 0xa1, 0xfa, 0xf8, 0x91, 0xf0, 0xdc, 0x7a, 0xaa, + 0xb7, 0x84, 0x43, 0xf9, 0x6e, 0x4c, 0xf3, 0x92, 0x4c, 0xfa, 0xbf, 0x1d, 0x6e, 0x14, 0x26, 0x10, + 0xc5, 0xd3, 0x7d, 0x51, 0xc8, 0xdb, 0x82, 0xb7, 0x60, 0x4a, 0xba, 0x61, 0x8c, 0x6e, 0x81, 0x7d, + 0xae, 0x27, 0x47, 0x97, 0x8b, 0xc9, 0x35, 0x98, 0xb6, 0x3d, 0x0f, 0xcf, 0x1b, 0x2c, 0xdf, 0x6d, + 0x73, 0x77, 0x99, 0x29, 0x4c, 0x33, 0x30, 0x29, 0xe6, 0x21, 0x34, 0xf5, 0x78, 0x1e, 0x42, 0xd3, + 0xc3, 0x7a, 0x08, 0xc5, 0x7c, 0x75, 0x0a, 0x09, 0x5f, 0x1d, 0xd5, 0xbf, 0x69, 0x26, 0xee, 0xdf, + 0x14, 0x73, 0xe5, 0x99, 0x8d, 0xbb, 0xf2, 0xe8, 0xdb, 0x70, 0x3a, 0xce, 0xb7, 0x5b, 0x8e, 0x1f, + 0x90, 0x57, 0x60, 0x44, 0x3a, 0x6e, 0xbb, 0xd6, 0x73, 0x48, 0xd0, 0x38, 0x84, 0xe0, 0x29, 0xd3, + 0x51, 0xdd, 0x56, 0x0e, 0x39, 0x1d, 0x95, 0xc2, 0xd1, 0x74, 0xac, 0x25, 0x84, 0x98, 0x54, 0xc5, + 0x23, 0xce, 0x3a, 0xfd, 0xf7, 0x34, 0x58, 0x4c, 0xc3, 0x1a, 0xee, 0xae, 0x46, 0xb8, 0xbd, 0x25, + 0xfd, 0xf9, 0x92, 0xec, 0xa2, 0xcb, 0xb4, 0x7f, 0x98, 0xa2, 0x86, 0x28, 0x16, 0xff, 0x1a, 0x4c, + 0x86, 0x49, 0x8f, 0xe2, 0x0d, 0x94, 0x36, 0x60, 0xb2, 0x26, 0xd7, 0x48, 0x48, 0xab, 0x58, 0x5b, + 0xd6, 0x62, 0xe2, 0xfa, 0xf9, 0x21, 0x5a, 0x13, 0xca, 0x6b, 0x03, 0x66, 0xb9, 0xd6, 0xb7, 0x6b, + 0x39, 0xde, 0xb6, 0xdb, 0xb0, 0xf5, 0xf7, 0x78, 0x3c, 0x88, 0x29, 0x18, 0x5f, 0xb7, 0x0f, 0xad, + 0x6e, 0x33, 0x28, 0x9e, 0x22, 0xa7, 0xa1, 0xb8, 0xee, 0xf8, 0x16, 0xc6, 0x76, 0xb5, 0xeb, 0xee, + 0xb1, 0xed, 0x9d, 0x30, 0xab, 0x4e, 0xb5, 0x8d, 0xb7, 0xfb, 0x59, 0x2d, 0x8e, 0xdb, 0x2e, 0xe6, + 0xf4, 0xbf, 0x97, 0xa3, 0xfa, 0x54, 0x88, 0x54, 0x3d, 0x47, 0x43, 0x47, 0x7a, 0x14, 0x61, 0xe1, + 0x30, 0x76, 0x22, 0x47, 0x7a, 0x9a, 0x21, 0x42, 0xd1, 0x76, 0xd8, 0x75, 0x04, 0x05, 0xb6, 0xe3, + 0x7a, 0xec, 0x81, 0xf4, 0x82, 0x31, 0xa7, 0x40, 0xef, 0xba, 0x5e, 0x40, 0x5e, 0x80, 0xd3, 0x31, + 0x78, 0xe6, 0x0f, 0xc9, 0xe4, 0x2e, 0x51, 0x0a, 0x30, 0x97, 0x64, 0x7c, 0x33, 0x31, 0x30, 0x1b, + 0xac, 0x9d, 0xdc, 0xed, 0x0c, 0x7c, 0x3b, 0xe0, 0x2d, 0x27, 0x6f, 0x70, 0x0b, 0xc3, 0x68, 0x86, + 0xe7, 0x63, 0xac, 0xf3, 0xa4, 0xb8, 0x1a, 0xc9, 0x83, 0xdd, 0xb1, 0x94, 0x83, 0xdd, 0xcf, 0xe9, + 0x24, 0x48, 0x74, 0x95, 0x7c, 0xe9, 0x40, 0xed, 0xab, 0x46, 0x7a, 0x5f, 0x35, 0x52, 0xfa, 0x4a, + 0xbd, 0xba, 0x21, 0x41, 0x63, 0xfc, 0xe0, 0x03, 0xae, 0x36, 0x66, 0x0c, 0xd3, 0x5a, 0x7c, 0x8a, + 0x3f, 0xd7, 0xab, 0xe9, 0xea, 0x83, 0xdd, 0xe1, 0x0c, 0x17, 0x0a, 0x47, 0x56, 0xfb, 0x06, 0x51, + 0x38, 0x32, 0xca, 0x86, 0x0c, 0xfc, 0x6f, 0x34, 0xa5, 0x07, 0x77, 0x3d, 0xb7, 0x6e, 0xfb, 0xbe, + 0xc4, 0x6d, 0x3c, 0x88, 0x4c, 0xb2, 0x07, 0x59, 0x46, 0xd4, 0x83, 0x59, 0xdc, 0x93, 0xcb, 0xe4, + 0x9e, 0x37, 0x24, 0xf3, 0xd3, 0xe3, 0x32, 0xc7, 0x48, 0x0a, 0x73, 0xfc, 0x6e, 0x8e, 0x0a, 0xb3, + 0x64, 0xdb, 0xbe, 0xf5, 0xec, 0x41, 0x5e, 0x87, 0x85, 0x18, 0xbc, 0x78, 0xaa, 0x9a, 0x6d, 0x6e, + 0x27, 0x8d, 0xb3, 0x4a, 0xa1, 0xb2, 0xc8, 0x25, 0x46, 0xf4, 0x3a, 0xd1, 0x48, 0xc6, 0x5d, 0xbc, + 0xec, 0x36, 0x2d, 0x2b, 0x2f, 0xcb, 0x85, 0x0f, 0x16, 0xbd, 0x09, 0xd3, 0x8f, 0xfc, 0x9a, 0xdc, + 0xdb, 0x71, 0x46, 0x57, 0x0f, 0xa2, 0x7b, 0xef, 0x8f, 0xc2, 0x2b, 0x32, 0x89, 0xd2, 0x5c, 0x65, + 0x7c, 0x09, 0x2e, 0x48, 0x99, 0xc8, 0x16, 0x18, 0x32, 0x20, 0x3a, 0x89, 0x67, 0x4c, 0xc4, 0x10, + 0xb3, 0x8f, 0x50, 0x11, 0x0d, 0xcb, 0xdd, 0xb1, 0x03, 0x2c, 0x2a, 0x8c, 0x73, 0x87, 0x72, 0xa8, + 0x75, 0x15, 0x80, 0x23, 0x5e, 0x8f, 0x4d, 0x9d, 0x9b, 0xbd, 0x3a, 0x39, 0x4e, 0x56, 0x38, 0x79, + 0x94, 0xf0, 0xe0, 0x14, 0xd2, 0xb0, 0xfd, 0x18, 0x29, 0xf7, 0xe5, 0xf0, 0xe0, 0x71, 0x90, 0x27, + 0x4a, 0xcc, 0x9f, 0xe7, 0x94, 0xb5, 0x28, 0xf5, 0x02, 0x46, 0x5a, 0x78, 0x91, 0x5e, 0xcf, 0xaa, + 0x3f, 0x0f, 0x73, 0x42, 0xbf, 0x8d, 0xf8, 0x77, 0x04, 0xf9, 0xb7, 0xc8, 0x33, 0x22, 0xce, 0xc5, + 0x07, 0xc2, 0xeb, 0x5d, 0x4f, 0xc4, 0x39, 0xe3, 0x5f, 0xd1, 0x20, 0x8e, 0x49, 0x83, 0x48, 0xee, + 0x44, 0x7c, 0x3e, 0x8e, 0x7c, 0x7e, 0xab, 0x57, 0xab, 0xd1, 0x5b, 0x2f, 0x95, 0xb9, 0x43, 0x29, + 0x32, 0x31, 0xb4, 0x14, 0x79, 0xac, 0x79, 0xb1, 0x1c, 0xe7, 0xec, 0x98, 0x57, 0x48, 0x3c, 0x20, + 0xc6, 0x3d, 0x38, 0xab, 0x32, 0xa4, 0x74, 0x87, 0x61, 0xb2, 0x63, 0x39, 0x9e, 0x7c, 0x92, 0x75, + 0xb5, 0x5f, 0x5f, 0x18, 0x13, 0x1d, 0xfe, 0x4b, 0xff, 0x72, 0x7c, 0x36, 0xc4, 0x3d, 0x4e, 0xde, + 0x8b, 0xb1, 0xd7, 0xb3, 0xbd, 0x90, 0xa7, 0x71, 0xd6, 0xd5, 0xf8, 0x74, 0x4a, 0x78, 0xd3, 0xfc, + 0xcf, 0x1a, 0x5c, 0x92, 0xf2, 0xfd, 0xd4, 0x67, 0x9e, 0xb8, 0x96, 0x20, 0xc9, 0x09, 0x9e, 0x82, + 0x5e, 0x9c, 0xa3, 0xb4, 0x41, 0xc2, 0xcd, 0xe8, 0x8d, 0x5e, 0x24, 0x26, 0xb1, 0x2f, 0xf3, 0x64, + 0x3c, 0x17, 0x46, 0x3c, 0x8b, 0x9f, 0x00, 0x44, 0x89, 0x29, 0x03, 0xfb, 0xaa, 0xaa, 0x5f, 0xf6, + 0xef, 0x70, 0x69, 0xe8, 0x9d, 0xf8, 0xb4, 0x4f, 0x36, 0x77, 0x23, 0xd6, 0xe7, 0xcb, 0xc3, 0x35, + 0x28, 0xec, 0xfa, 0x7f, 0xa5, 0xc1, 0x38, 0x77, 0x32, 0x4f, 0x75, 0xcf, 0x22, 0x30, 0x22, 0x9d, + 0x1f, 0xe3, 0x6f, 0x9a, 0x16, 0x06, 0x42, 0x9c, 0x8c, 0x62, 0x26, 0xa1, 0x87, 0xdb, 0x88, 0xe4, + 0xe1, 0xf6, 0x2e, 0x4c, 0x6f, 0x59, 0x7e, 0xb0, 0xed, 0x36, 0x9c, 0x43, 0xc7, 0x6e, 0x0c, 0x70, + 0xf1, 0x43, 0x81, 0x27, 0x2f, 0xc3, 0x44, 0xfd, 0xbe, 0xd3, 0x6c, 0x78, 0x38, 0xb5, 0xd3, 0xbd, + 0xc3, 0x84, 0x83, 0x7c, 0x08, 0xa9, 0x7f, 0x01, 0xc6, 0x0c, 0x9b, 0xea, 0xa1, 0xe4, 0x2a, 0x4c, + 0xb1, 0x17, 0x5d, 0x5d, 0x8c, 0x26, 0x9a, 0x63, 0x71, 0x8a, 0xa5, 0x24, 0xbc, 0x8e, 0xe9, 0x34, + 0xb9, 0xff, 0x5c, 0xde, 0x60, 0x1f, 0x7a, 0x07, 0x66, 0xe3, 0x7e, 0xf7, 0xe8, 0x82, 0xe4, 0x06, + 0x99, 0x2e, 0x48, 0x02, 0x1e, 0xa1, 0xc8, 0x6d, 0x3a, 0x38, 0xa1, 0x2a, 0x9c, 0xf6, 0xf6, 0x09, + 0xa3, 0xd0, 0xe0, 0x60, 0xfa, 0xcf, 0xe7, 0x60, 0x06, 0xef, 0xbc, 0xda, 0xf2, 0xee, 0x01, 0x0f, + 0xeb, 0xc5, 0x09, 0x53, 0x72, 0xf7, 0xa0, 0x16, 0x58, 0xc6, 0x97, 0x9f, 0x85, 0xab, 0x31, 0x2b, + 0x4a, 0xb6, 0x60, 0xb2, 0xe1, 0xd6, 0x1f, 0xd8, 0x9e, 0x38, 0x4b, 0x4e, 0x63, 0x94, 0x18, 0x9e, + 0x75, 0x51, 0x80, 0xa1, 0x8a, 0x10, 0x2c, 0xbe, 0x01, 0x53, 0x52, 0x25, 0xc3, 0x08, 0xb3, 0xc5, + 0xb7, 0x61, 0x46, 0xc5, 0x3b, 0x94, 0x28, 0xfc, 0x5f, 0x72, 0x70, 0x8e, 0x59, 0x4e, 0x76, 0x9b, + 0x56, 0x1d, 0x03, 0xfb, 0xd5, 0x02, 0xca, 0xce, 0x47, 0x27, 0x64, 0x17, 0x44, 0x80, 0x25, 0xd3, + 0x3a, 0x3c, 0x74, 0xda, 0x4e, 0x70, 0x92, 0x79, 0x26, 0x67, 0x30, 0xc0, 0x08, 0x49, 0xc7, 0xae, + 0x53, 0x55, 0x0c, 0x53, 0x4b, 0xbc, 0x34, 0xf9, 0x18, 0xce, 0x84, 0x18, 0xdb, 0x81, 0x13, 0xa1, + 0xcd, 0x0d, 0x83, 0x76, 0x5e, 0xa0, 0x6d, 0x07, 0x4e, 0x88, 0x7a, 0x1b, 0xf8, 0x93, 0x31, 0x11, + 0xd2, 0x7c, 0x46, 0x4c, 0x9e, 0x78, 0x7b, 0x29, 0xce, 0x19, 0x56, 0x38, 0x44, 0x77, 0x17, 0x4e, + 0x0b, 0x74, 0x0a, 0xa1, 0x23, 0x43, 0xe0, 0x24, 0x1c, 0xa7, 0x44, 0xa6, 0xfe, 0xcd, 0x1c, 0x9c, + 0x4e, 0x6b, 0x14, 0x5d, 0x81, 0x3f, 0xb7, 0x9d, 0xa3, 0xfb, 0x6c, 0x22, 0xe4, 0x0d, 0xfe, 0x45, + 0x56, 0x61, 0xca, 0x6e, 0xe3, 0x5d, 0x66, 0x0a, 0xca, 0xcf, 0x8c, 0x93, 0x22, 0xaf, 0x1c, 0xc1, + 0xa0, 0xed, 0x5d, 0x2e, 0x44, 0x55, 0x01, 0xeb, 0xf0, 0xd0, 0xae, 0x07, 0x76, 0xc3, 0xe4, 0x7d, + 0xe7, 0xf3, 0x83, 0xa6, 0xa2, 0xc8, 0xe0, 0x44, 0x61, 0x5c, 0x80, 0xc0, 0xed, 0xb8, 0x4d, 0xf7, + 0xe8, 0x04, 0x1f, 0xcb, 0x67, 0xda, 0xf9, 0x94, 0x48, 0xfb, 0xc0, 0xa6, 0x9d, 0x33, 0xd7, 0xb2, + 0x82, 0xfa, 0x7d, 0xd3, 0x7e, 0x88, 0x3e, 0xb1, 0xa8, 0x09, 0x8c, 0x0e, 0x1b, 0x3f, 0xb2, 0x88, + 0x38, 0xca, 0x11, 0x0a, 0xfd, 0xcf, 0x35, 0x98, 0x4f, 0xe9, 0xc8, 0x6f, 0x69, 0xdf, 0xc4, 0x9b, + 0x9b, 0x1f, 0xb0, 0xb9, 0x23, 0x8f, 0xdf, 0xdc, 0x7f, 0xa7, 0xc1, 0x42, 0x16, 0x78, 0xca, 0x24, + 0xde, 0x81, 0x09, 0x76, 0xa0, 0xc2, 0xcf, 0x0e, 0x67, 0x52, 0x5e, 0xa6, 0xca, 0x42, 0xc7, 0x4f, + 0x66, 0x5c, 0xcf, 0x08, 0x71, 0xd0, 0x5e, 0x45, 0x39, 0x20, 0x76, 0x35, 0xfc, 0x4b, 0xff, 0x00, + 0x26, 0x04, 0x34, 0x19, 0x83, 0x5c, 0xa5, 0xcd, 0x8e, 0x0f, 0x77, 0xdc, 0xa0, 0xd2, 0x2e, 0x6a, + 0x04, 0x60, 0xac, 0xfc, 0xd0, 0xf1, 0x03, 0x9f, 0x1d, 0x66, 0xad, 0xbb, 0xb6, 0xbf, 0xe3, 0x06, + 0x98, 0x54, 0xcc, 0xd3, 0x02, 0x77, 0x82, 0xe2, 0x08, 0xfd, 0xbf, 0x15, 0x14, 0x47, 0xf5, 0xd7, + 0xe0, 0x7c, 0x14, 0xb2, 0xa0, 0xd6, 0xb6, 0xe4, 0xf7, 0xc6, 0xd0, 0xdf, 0x99, 0xff, 0x16, 0x87, + 0x06, 0xe2, 0x5b, 0x7f, 0x11, 0xce, 0x49, 0x05, 0x45, 0x48, 0xa8, 0xa6, 0x53, 0xc7, 0xe8, 0xf9, + 0x1d, 0xfc, 0x25, 0xec, 0x63, 0xec, 0x4b, 0xff, 0xef, 0x67, 0x60, 0x2e, 0x11, 0x1f, 0x81, 0x9c, + 0x87, 0x89, 0xfb, 0x96, 0xd9, 0xb4, 0x8f, 0xed, 0x26, 0x67, 0x9f, 0xf1, 0xfb, 0xd6, 0x16, 0xfd, + 0x24, 0x4b, 0x90, 0xaf, 0xbb, 0xc2, 0x0f, 0x23, 0x65, 0xe5, 0x71, 0xd9, 0x35, 0x2a, 0x0a, 0x44, + 0xde, 0x00, 0x70, 0x5c, 0x93, 0x07, 0xf1, 0xcf, 0x0c, 0x85, 0x5e, 0x71, 0x77, 0x19, 0x84, 0x31, + 0xe9, 0x88, 0x9f, 0x74, 0xfa, 0x45, 0x6f, 0xc3, 0xf1, 0xdb, 0x37, 0x38, 0xad, 0x0a, 0x46, 0x31, + 0x7c, 0x22, 0x90, 0xa7, 0x93, 0x77, 0x60, 0x8c, 0x3d, 0x24, 0x92, 0x69, 0x77, 0xe1, 0x4d, 0xdc, + 0xb5, 0x3c, 0xab, 0xb5, 0xea, 0xba, 0x4d, 0x7e, 0xd5, 0x0b, 0x0b, 0x91, 0xb7, 0x61, 0x4a, 0x48, + 0x58, 0xdf, 0x0e, 0xf8, 0x8d, 0xce, 0x0b, 0x59, 0x72, 0xb5, 0x66, 0x07, 0x06, 0x78, 0xe1, 0x6f, + 0x14, 0x14, 0x47, 0x47, 0x9e, 0x7d, 0xc4, 0xae, 0xd4, 0xb2, 0x4e, 0x1b, 0x67, 0x94, 0x4a, 0x19, + 0xac, 0xf7, 0xee, 0x49, 0xcd, 0x0a, 0x87, 0x71, 0x22, 0xc3, 0x9a, 0x91, 0xc9, 0x04, 0x51, 0x17, + 0x84, 0x6c, 0x41, 0xbb, 0x20, 0x70, 0xea, 0x0f, 0x4e, 0xd0, 0x18, 0x3e, 0x44, 0x17, 0x60, 0xa1, + 0xe8, 0x91, 0x4e, 0x18, 0xe4, 0x45, 0xe1, 0xeb, 0x30, 0xc3, 0x8e, 0xa1, 0xb8, 0x50, 0x68, 0xa0, + 0x89, 0x7c, 0xc2, 0x28, 0x60, 0x2a, 0x17, 0x1d, 0xf8, 0x42, 0xf5, 0xa7, 0x6e, 0xd7, 0x6b, 0x5b, + 0x4d, 0xb4, 0x81, 0x0f, 0x4c, 0x94, 0x28, 0x45, 0x4a, 0x30, 0x11, 0x3e, 0x10, 0x53, 0x18, 0x06, + 0x43, 0x58, 0x8c, 0x5c, 0x81, 0xa9, 0xcf, 0xba, 0x76, 0xd7, 0x36, 0x1b, 0x76, 0x27, 0xb8, 0x8f, + 0xb6, 0xf2, 0x82, 0x01, 0x98, 0xb4, 0x4e, 0x53, 0xc8, 0x1a, 0x4c, 0xb6, 0xdd, 0x86, 0xe3, 0xd7, + 0x2d, 0xaf, 0x81, 0xa6, 0xf2, 0x81, 0x2b, 0x89, 0xca, 0x51, 0x0e, 0x72, 0x5c, 0xd3, 0xe7, 0x4a, + 0xc0, 0x42, 0x31, 0x83, 0x83, 0x2a, 0xae, 0xd0, 0x13, 0x0c, 0x70, 0xc2, 0xdf, 0xe4, 0x1e, 0x90, + 0x8e, 0x90, 0xdd, 0x11, 0x92, 0xb9, 0x8c, 0x48, 0x7f, 0x19, 0x9a, 0x87, 0x31, 0xd7, 0x49, 0x28, + 0x23, 0x55, 0x98, 0xe1, 0x25, 0x4d, 0x3e, 0xf9, 0x49, 0x06, 0xd2, 0x0c, 0xb1, 0x61, 0x14, 0x7c, + 0x45, 0x8a, 0x28, 0xaf, 0xc0, 0xce, 0x0f, 0xf3, 0x0a, 0xec, 0xdb, 0x30, 0x65, 0x3f, 0xa4, 0xca, + 0xa5, 0x89, 0xa1, 0x5a, 0x4e, 0x67, 0xf4, 0x50, 0x19, 0x61, 0x50, 0x13, 0x00, 0x3b, 0xfc, 0x4d, + 0xde, 0x87, 0xc2, 0x61, 0xc7, 0xec, 0x78, 0xf6, 0xa1, 0xed, 0xd9, 0xed, 0xba, 0xbd, 0x70, 0x66, + 0x98, 0x81, 0x9a, 0x3e, 0xec, 0xec, 0x86, 0x45, 0xc9, 0x2a, 0x14, 0x98, 0x23, 0xaa, 0xd8, 0x8e, + 0x9f, 0x45, 0x5a, 0x2e, 0x25, 0x70, 0xa1, 0x72, 0x29, 0x1e, 0xc3, 0x9e, 0x6e, 0x49, 0x5f, 0xa4, + 0x06, 0x67, 0x05, 0x87, 0x99, 0x2a, 0xb2, 0x73, 0x83, 0x20, 0x3b, 0x2d, 0x0a, 0xcb, 0xa9, 0x64, + 0x03, 0xa6, 0x3a, 0x9e, 0xfb, 0xf0, 0xc4, 0xfc, 0xdc, 0x73, 0x02, 0x7b, 0x61, 0x61, 0x98, 0x26, + 0x02, 0x96, 0xbc, 0x47, 0x0b, 0x92, 0x5b, 0x30, 0x1f, 0x49, 0x5d, 0xf3, 0x00, 0x2f, 0x7b, 0x79, + 0xf5, 0x85, 0xf3, 0x38, 0x45, 0x8b, 0xa1, 0x88, 0x5d, 0x7d, 0xd0, 0xed, 0xd4, 0xbc, 0x3a, 0x15, + 0xd2, 0xac, 0x5a, 0x1c, 0x98, 0xc5, 0x8c, 0x41, 0xdd, 0xa5, 0x20, 0x38, 0x2e, 0x93, 0x1d, 0xf1, + 0x93, 0x7c, 0x04, 0x67, 0xc2, 0x6e, 0xe0, 0x1e, 0x52, 0x0c, 0xcb, 0x85, 0xac, 0x08, 0x97, 0x1c, + 0x9a, 0xfb, 0x3b, 0x31, 0xcd, 0xd4, 0x4f, 0x26, 0xd2, 0x41, 0x8a, 0x30, 0x53, 0x8c, 0x17, 0x33, + 0xfa, 0x35, 0xc4, 0x48, 0x51, 0x4d, 0xfb, 0xd2, 0x17, 0xed, 0x4f, 0xab, 0x1b, 0xb8, 0xe6, 0x21, + 0xfa, 0x35, 0x2f, 0x5c, 0x1a, 0xaa, 0x3f, 0x69, 0x49, 0xe6, 0x10, 0xcd, 0x27, 0x77, 0x70, 0xdf, + 0x73, 0x83, 0xa0, 0x69, 0x2f, 0x5c, 0xce, 0x9c, 0xdc, 0x7b, 0x1c, 0x84, 0x4e, 0x6e, 0xf1, 0x5b, + 0xff, 0xb2, 0xf4, 0x3c, 0x77, 0xf2, 0x82, 0x76, 0x4f, 0x87, 0xd2, 0xc4, 0x4e, 0xf7, 0x34, 0x8c, + 0x32, 0x31, 0xc6, 0x14, 0x2e, 0xf6, 0xa1, 0xdf, 0x95, 0x9e, 0xf1, 0x8f, 0x6f, 0x14, 0xdf, 0x84, + 0xf1, 0x3a, 0x4b, 0xca, 0xb6, 0xb4, 0xa8, 0x45, 0x0c, 0x51, 0x60, 0xe9, 0x07, 0xf2, 0xa1, 0x6b, + 0xcd, 0x2c, 0x4c, 0xd5, 0xf6, 0x4a, 0x7b, 0xfb, 0x35, 0x13, 0x1f, 0x54, 0x3b, 0x25, 0x25, 0x54, + 0x76, 0x2a, 0x7b, 0x45, 0x8d, 0x14, 0x60, 0x92, 0x27, 0x54, 0x3f, 0x28, 0xe6, 0x98, 0xc7, 0x17, + 0xfb, 0xdc, 0xd8, 0xd8, 0xaa, 0xe0, 0x03, 0x44, 0x45, 0x98, 0xe6, 0x69, 0x65, 0xc3, 0xa8, 0x1a, + 0xc5, 0x11, 0xb2, 0x00, 0xa7, 0x43, 0xb4, 0x7b, 0x66, 0x65, 0xc7, 0xfc, 0x70, 0xbf, 0x6a, 0xec, + 0x6f, 0x17, 0x47, 0xc9, 0x39, 0x98, 0xe7, 0x39, 0xeb, 0xe5, 0xb5, 0xea, 0xf6, 0x76, 0xa5, 0x56, + 0xab, 0x54, 0x77, 0x8a, 0x63, 0xe4, 0x2c, 0x10, 0x9e, 0xb1, 0x5d, 0xaa, 0xec, 0xec, 0x95, 0x77, + 0x30, 0xec, 0xf8, 0xb8, 0x54, 0x40, 0x78, 0x9a, 0xad, 0x57, 0xef, 0xed, 0x14, 0x27, 0xc8, 0x05, + 0x38, 0x17, 0xcf, 0x28, 0xdf, 0x31, 0x4a, 0xeb, 0xe5, 0xf5, 0xe2, 0xa4, 0x54, 0x6a, 0xa7, 0x5c, + 0x5e, 0xaf, 0x99, 0x46, 0x79, 0xb5, 0x5a, 0xdd, 0x2b, 0x02, 0xb9, 0x08, 0x0b, 0xb1, 0x52, 0x51, + 0x8c, 0xf3, 0x29, 0x72, 0x15, 0x2e, 0xc6, 0x71, 0xe2, 0x03, 0x72, 0x46, 0x19, 0x63, 0x9e, 0x17, + 0xa7, 0xc9, 0x53, 0x70, 0x25, 0xad, 0x65, 0xe6, 0x4e, 0x35, 0x74, 0xbf, 0x2b, 0x90, 0x45, 0x38, + 0xcb, 0x81, 0x76, 0xab, 0xd5, 0x2d, 0xb9, 0x3d, 0x33, 0x64, 0x06, 0x20, 0x6c, 0xe7, 0x47, 0xc5, + 0xd9, 0xa5, 0x9f, 0xd5, 0x00, 0xf0, 0xfd, 0x04, 0x4f, 0x84, 0x10, 0xc5, 0x2a, 0x0d, 0x16, 0x12, + 0x94, 0x8f, 0x4a, 0x2c, 0x75, 0xa3, 0xb2, 0x15, 0x3e, 0x7e, 0x17, 0xa5, 0xae, 0x6e, 0x55, 0xd7, + 0x3e, 0x60, 0x0e, 0x5a, 0x72, 0x32, 0x73, 0x0e, 0x2c, 0xe6, 0xc9, 0x79, 0x38, 0x23, 0xa7, 0x73, + 0xbf, 0x3e, 0x71, 0x5f, 0x48, 0xce, 0xba, 0x63, 0x94, 0x76, 0x37, 0x8b, 0xa3, 0x4b, 0x7f, 0x57, + 0x83, 0xb1, 0x8d, 0x1a, 0xd2, 0x55, 0x84, 0xe9, 0x8d, 0x9a, 0x42, 0xd3, 0x1c, 0x14, 0x44, 0xca, + 0xea, 0x9e, 0xb1, 0x51, 0x63, 0x7e, 0x8b, 0x22, 0xa9, 0xfc, 0xd1, 0xde, 0xcb, 0x4c, 0x27, 0x16, + 0x29, 0x1b, 0xfb, 0x35, 0xca, 0x2c, 0xb3, 0x30, 0x15, 0x22, 0xda, 0xa8, 0x15, 0x47, 0xe4, 0x84, + 0xbb, 0x1b, 0xb5, 0xe2, 0xa8, 0x9c, 0xf0, 0xd1, 0x46, 0xad, 0x38, 0x26, 0x27, 0x7c, 0xb2, 0x51, + 0x2b, 0x8e, 0xcb, 0x55, 0x7f, 0xb4, 0x51, 0x3b, 0x5e, 0x29, 0x4e, 0x2c, 0xfd, 0x03, 0x0d, 0xce, + 0xdc, 0xf1, 0xac, 0xce, 0x7d, 0xd6, 0x97, 0xec, 0x12, 0x3a, 0x52, 0x7e, 0x0d, 0x2e, 0x61, 0x7b, + 0x4c, 0xde, 0xc2, 0xb5, 0xcd, 0xd2, 0xce, 0x9d, 0xb2, 0xd2, 0x94, 0xeb, 0x70, 0x2d, 0x13, 0x64, + 0xbb, 0xba, 0xce, 0x1e, 0xe3, 0xd2, 0x88, 0x0e, 0x97, 0x33, 0xc1, 0x4a, 0xeb, 0xeb, 0xe8, 0xc9, + 0xfe, 0x34, 0x5c, 0xcd, 0x84, 0x59, 0x2f, 0x33, 0x47, 0xf5, 0xfc, 0x52, 0x00, 0xd3, 0x35, 0xfb, + 0xd8, 0xf6, 0x9c, 0xe0, 0x04, 0x69, 0xa4, 0xcc, 0x5f, 0xbe, 0x5b, 0x36, 0x2a, 0x7b, 0x1f, 0x2b, + 0x84, 0x51, 0x36, 0x56, 0xd2, 0x4b, 0x5b, 0x25, 0x63, 0xbb, 0xa8, 0xd1, 0xb1, 0x54, 0x33, 0xee, + 0x95, 0x0c, 0xfe, 0x30, 0x18, 0x9d, 0x7b, 0x31, 0x5c, 0x7b, 0x95, 0x8d, 0x8f, 0x8b, 0xf9, 0xa5, + 0xff, 0x44, 0x83, 0x69, 0xc3, 0x66, 0xc7, 0x5d, 0xa2, 0x5a, 0xa3, 0x5c, 0xab, 0xee, 0x1b, 0x6b, + 0x6a, 0x7f, 0xb0, 0x88, 0xb5, 0x52, 0x3a, 0xf7, 0x1b, 0xd5, 0xd2, 0x4a, 0xac, 0x97, 0x8b, 0x39, + 0x4a, 0x8f, 0x9a, 0x2e, 0x9c, 0x59, 0xf3, 0xb4, 0x0d, 0x6a, 0x16, 0xf6, 0x0c, 0xf3, 0xe2, 0x57, + 0x33, 0xe8, 0x64, 0x29, 0x8e, 0x2e, 0xfd, 0x2d, 0x0d, 0x66, 0x4b, 0x4d, 0xdb, 0x0b, 0x58, 0xac, + 0x69, 0xa4, 0x74, 0x11, 0xce, 0xa2, 0xbf, 0xaa, 0x59, 0x5a, 0xc3, 0x48, 0xbc, 0x32, 0xb5, 0x17, + 0x61, 0x21, 0x99, 0xc7, 0xfa, 0xba, 0xa8, 0xa5, 0xe7, 0xae, 0x19, 0xe5, 0xd2, 0x5e, 0x99, 0xc5, + 0x3e, 0x4f, 0xe6, 0xee, 0xef, 0xae, 0xd3, 0xdc, 0xfc, 0xd2, 0xa7, 0x30, 0xc7, 0xa4, 0x2f, 0xa3, + 0x04, 0x57, 0x12, 0x5a, 0x84, 0xbf, 0x83, 0xc0, 0xcb, 0xec, 0x96, 0x8c, 0xd2, 0xb6, 0x20, 0xe6, + 0x02, 0x9c, 0x4b, 0xcb, 0xad, 0x6e, 0x6c, 0x14, 0x35, 0xda, 0x8a, 0xd4, 0xcc, 0x9d, 0x62, 0x6e, + 0x69, 0x05, 0xc6, 0xf9, 0x16, 0x2b, 0x7c, 0xde, 0xf2, 0x14, 0x19, 0x87, 0xfc, 0x56, 0xf5, 0x1e, + 0xdb, 0x67, 0x6e, 0x97, 0xd7, 0x2b, 0xfb, 0xdb, 0xec, 0xe5, 0xb7, 0xcd, 0xca, 0x9d, 0xcd, 0x62, + 0x7e, 0xe9, 0x3f, 0x68, 0x30, 0x19, 0x6e, 0xb2, 0xe8, 0x18, 0x54, 0xaa, 0xe6, 0xae, 0x51, 0xa5, + 0xe2, 0xc1, 0xac, 0x95, 0x3f, 0xdc, 0x67, 0xee, 0xc2, 0x2c, 0x3c, 0xbc, 0x94, 0x65, 0x94, 0x76, + 0xd6, 0xab, 0xdb, 0xcc, 0xbb, 0x53, 0x4a, 0x5e, 0x5f, 0x65, 0xdc, 0xa3, 0x24, 0x99, 0x46, 0x79, + 0xbb, 0x4a, 0x3b, 0x83, 0x4a, 0x7e, 0x29, 0x67, 0x6d, 0x9b, 0xce, 0xdd, 0x45, 0x38, 0x2b, 0x57, + 0xf9, 0xf1, 0xce, 0x9a, 0x59, 0xdb, 0x2c, 0x19, 0xe2, 0x32, 0x86, 0x94, 0x87, 0xb1, 0x90, 0xc7, + 0x62, 0x89, 0xd8, 0xca, 0x71, 0xca, 0x08, 0x52, 0xe2, 0xfb, 0xd5, 0x7d, 0x63, 0xa7, 0xb4, 0xc5, + 0x24, 0x7c, 0x0c, 0x43, 0x98, 0x39, 0xb9, 0xf4, 0xb3, 0x39, 0x98, 0xe2, 0x1b, 0x5b, 0xf1, 0x78, + 0x27, 0xef, 0x5b, 0x7c, 0xb7, 0x53, 0x62, 0x65, 0x25, 0x39, 0x7a, 0x4d, 0x2f, 0x1a, 0x0c, 0x96, + 0x53, 0xba, 0x5b, 0xaa, 0x6c, 0x95, 0x56, 0xb7, 0x38, 0x3b, 0xab, 0x79, 0xe8, 0x19, 0x4d, 0xa7, + 0x6e, 0x22, 0x6b, 0xbd, 0xcc, 0xb3, 0x46, 0xa4, 0xb1, 0x8f, 0xb2, 0xf6, 0xd6, 0x36, 0x69, 0x75, + 0xa3, 0xb4, 0x91, 0x4a, 0x26, 0x5b, 0x2a, 0xc7, 0x12, 0x04, 0x0a, 0x21, 0x31, 0x4e, 0x2e, 0xc3, + 0xa2, 0x92, 0xb3, 0x67, 0x7c, 0xcc, 0x6b, 0xa3, 0x18, 0x27, 0x12, 0x25, 0x8d, 0x32, 0x5d, 0x81, + 0xca, 0xc5, 0xc9, 0xa5, 0x1f, 0xd5, 0x84, 0x5f, 0x6d, 0xf8, 0x16, 0xa6, 0x5c, 0x79, 0xb4, 0xda, + 0x5f, 0x82, 0xf3, 0xf1, 0xf4, 0x3d, 0x73, 0xd7, 0x28, 0xd7, 0xf0, 0x1d, 0x19, 0xba, 0xec, 0xa8, + 0xd9, 0xe8, 0x8b, 0x9e, 0x40, 0x86, 0x0b, 0x72, 0x3e, 0xd6, 0xa1, 0xb8, 0xc2, 0xf3, 0xf5, 0x78, + 0x64, 0xe9, 0x17, 0x34, 0x38, 0x9b, 0x7e, 0x93, 0x83, 0xce, 0xa7, 0x8d, 0x9a, 0xb9, 0x59, 0x2e, + 0x6d, 0xed, 0x6d, 0x86, 0xf5, 0x84, 0x7e, 0xf1, 0x69, 0xb9, 0xec, 0xeb, 0xe3, 0xa2, 0x46, 0xd7, + 0xeb, 0x44, 0x6e, 0xad, 0xb4, 0x51, 0x36, 0xf7, 0xaa, 0xf8, 0x36, 0x49, 0x8e, 0x8a, 0xf6, 0x04, + 0x04, 0x53, 0x09, 0x2a, 0xf8, 0xd0, 0x22, 0x9d, 0x86, 0xc5, 0xfc, 0xd2, 0x97, 0xa0, 0xc0, 0xf7, + 0x47, 0xdb, 0x76, 0xc3, 0xe9, 0xb6, 0x98, 0x76, 0xc1, 0x54, 0x00, 0x36, 0xf1, 0xcc, 0xed, 0xd2, + 0x9d, 0x9d, 0xf2, 0x5e, 0x65, 0x8d, 0xbd, 0xbb, 0x13, 0xcb, 0xac, 0xd5, 0xe8, 0x02, 0x81, 0x5a, + 0x87, 0x92, 0xbe, 0x73, 0x77, 0xbb, 0x5c, 0xcc, 0x2d, 0xd9, 0x30, 0xc5, 0x5e, 0x98, 0x62, 0xbc, + 0x7a, 0x1e, 0xce, 0x30, 0x8e, 0x12, 0xbc, 0xf0, 0xd1, 0x5e, 0x19, 0xd9, 0xfa, 0x54, 0x22, 0x8b, + 0xaa, 0x0e, 0x98, 0x85, 0x8d, 0x4d, 0xcd, 0x32, 0x6b, 0xf7, 0x2a, 0x7b, 0x6b, 0x9b, 0xc5, 0xdc, + 0xd2, 0x1e, 0xcc, 0x84, 0x4e, 0xc7, 0x1b, 0x4d, 0xeb, 0xc8, 0x67, 0xe1, 0xcb, 0xcd, 0x8d, 0xad, + 0xd2, 0x1d, 0xb9, 0x53, 0xe7, 0xa0, 0x10, 0xa6, 0xf2, 0x87, 0x74, 0x31, 0x86, 0x3a, 0x4f, 0x62, + 0x4c, 0x66, 0x6e, 0x54, 0x8d, 0x35, 0x4a, 0xfc, 0x16, 0x4c, 0x6f, 0x5a, 0x5e, 0xe3, 0x73, 0xcb, + 0x63, 0xab, 0x06, 0x81, 0x99, 0xfd, 0xf6, 0x83, 0xb6, 0xfb, 0x79, 0x7b, 0xdb, 0xaa, 0xdf, 0x77, + 0xda, 0xdc, 0x77, 0xfc, 0xae, 0xe3, 0x05, 0x5d, 0xab, 0x29, 0xd2, 0x90, 0x7b, 0x56, 0x2d, 0xcf, + 0xde, 0xb6, 0x83, 0x28, 0x35, 0xb7, 0xb4, 0x01, 0x33, 0x6c, 0x2f, 0xb8, 0xeb, 0xb9, 0x81, 0x5b, + 0x77, 0x9b, 0x64, 0x0a, 0xc6, 0x2b, 0x3b, 0x77, 0x4b, 0x5b, 0x95, 0x75, 0x26, 0xf1, 0x76, 0x3f, + 0xa2, 0x7d, 0x39, 0x09, 0xa3, 0x95, 0xda, 0x5a, 0xad, 0x52, 0xcc, 0xd1, 0x34, 0xaa, 0x2a, 0xa0, + 0x23, 0xf7, 0xda, 0x7e, 0x6d, 0xaf, 0xba, 0x5d, 0x1c, 0x59, 0xfa, 0xcf, 0x35, 0x28, 0xe0, 0xde, + 0x25, 0xc4, 0xb3, 0x08, 0x67, 0x77, 0x8d, 0xea, 0x47, 0x1f, 0x53, 0x89, 0xb1, 0x57, 0x5d, 0xab, + 0x6e, 0x99, 0x11, 0xda, 0xb3, 0x40, 0x62, 0x79, 0x3b, 0xa8, 0xb1, 0x9c, 0x81, 0xb9, 0x58, 0x7a, + 0xed, 0x25, 0xc6, 0xe2, 0xb1, 0x64, 0x4a, 0x54, 0x9e, 0xce, 0x97, 0x78, 0xfa, 0xbe, 0x21, 0x34, + 0xaf, 0x11, 0xca, 0xac, 0x69, 0xd9, 0xa8, 0xae, 0x8d, 0x2e, 0xfd, 0x8c, 0x06, 0x33, 0x1b, 0x96, + 0x1f, 0x50, 0x8d, 0x5f, 0xba, 0x3d, 0x57, 0xaa, 0xed, 0xed, 0x96, 0xf6, 0x36, 0x4d, 0x25, 0xc4, + 0x5c, 0x98, 0x4a, 0x17, 0x8a, 0xbb, 0x5c, 0xd9, 0x0b, 0x13, 0x2b, 0x3b, 0x3c, 0x19, 0xe5, 0xb5, + 0x84, 0xa1, 0xb6, 0xbf, 0xbb, 0x5b, 0xc5, 0x3b, 0x75, 0x79, 0x05, 0xb7, 0x90, 0x7a, 0x23, 0x4a, + 0x2a, 0x8a, 0x20, 0x2a, 0xab, 0x97, 0xfe, 0xba, 0x06, 0x45, 0x41, 0x9a, 0xdc, 0x9f, 0x11, 0x02, + 0xda, 0x20, 0x89, 0xc4, 0x4b, 0x70, 0x3e, 0x96, 0x47, 0x39, 0xbd, 0xba, 0x61, 0xee, 0xad, 0xed, + 0xb2, 0xb0, 0xfb, 0xb1, 0x6c, 0x31, 0x96, 0xc9, 0x9c, 0xad, 0xea, 0x5a, 0x69, 0xab, 0x98, 0x5f, + 0xfa, 0x6e, 0xb8, 0xb0, 0xc3, 0xc3, 0x7c, 0x19, 0xd2, 0x4b, 0x16, 0xc2, 0xe4, 0x71, 0x01, 0xce, + 0xed, 0x94, 0x4b, 0x06, 0x5f, 0x64, 0xf6, 0x8c, 0xd2, 0x5e, 0xf9, 0xce, 0xc7, 0x42, 0x8e, 0x5d, + 0x83, 0x4b, 0x29, 0x99, 0xa5, 0x3b, 0x78, 0x8d, 0x90, 0xf5, 0xdf, 0x55, 0xb8, 0x98, 0x02, 0x52, + 0xdd, 0xdd, 0xab, 0x6c, 0x57, 0x3e, 0xa1, 0xaa, 0xdb, 0xd2, 0x67, 0x70, 0xbe, 0xd4, 0x76, 0xdb, + 0x27, 0x2d, 0xb7, 0xeb, 0xaf, 0x62, 0x60, 0xd4, 0x52, 0xbd, 0x6e, 0xfb, 0x3e, 0x3a, 0xc1, 0x5d, + 0x80, 0x73, 0x9c, 0xe9, 0xe3, 0x59, 0xfc, 0x95, 0x56, 0x0f, 0x1f, 0x5c, 0x2f, 0x6a, 0x64, 0x1a, + 0x26, 0x0c, 0xdb, 0x6a, 0x54, 0xdb, 0xcd, 0x93, 0x62, 0x8e, 0x6e, 0x9f, 0x70, 0xf3, 0x8e, 0x9f, + 0x79, 0xfa, 0x49, 0x33, 0x31, 0xa9, 0x38, 0xb2, 0xf4, 0x2f, 0x35, 0x7c, 0xf6, 0x60, 0xcf, 0x69, + 0xd9, 0xf7, 0x6c, 0xfb, 0x41, 0xc3, 0x3a, 0x41, 0xf5, 0x4d, 0x49, 0xa9, 0x75, 0xdb, 0x0d, 0xeb, + 0x84, 0x2d, 0x65, 0x6a, 0xce, 0xb6, 0x8b, 0x39, 0x4c, 0x1b, 0x54, 0x72, 0xf6, 0xba, 0xb6, 0x4f, + 0xb3, 0x72, 0x28, 0xc7, 0x94, 0xac, 0x7b, 0x76, 0xa3, 0xcd, 0x32, 0x51, 0x62, 0xc7, 0xca, 0xdd, + 0xef, 0x7a, 0x98, 0x37, 0x92, 0xac, 0x6d, 0xc3, 0x73, 0x68, 0xce, 0x68, 0xb2, 0x54, 0xcd, 0x0a, + 0xba, 0x1e, 0xcd, 0x1b, 0x5b, 0xfa, 0x18, 0x16, 0xb2, 0x1e, 0xe9, 0x90, 0xdf, 0xb2, 0x3d, 0x25, + 0xbf, 0x65, 0xab, 0x85, 0x6f, 0xd9, 0xe6, 0xa4, 0x77, 0xb4, 0xf3, 0xea, 0x3b, 0xda, 0x23, 0x4b, + 0xff, 0x56, 0x8b, 0xc7, 0x2c, 0x64, 0xf1, 0x05, 0xc9, 0x95, 0x78, 0x8c, 0x3a, 0x96, 0xce, 0x87, + 0xab, 0x78, 0x0a, 0x77, 0x75, 0x29, 0x00, 0xe2, 0x77, 0x51, 0xa3, 0xfc, 0x93, 0x1a, 0xba, 0x90, + 0x59, 0x10, 0xaa, 0x1d, 0xa6, 0x29, 0xd6, 0x1a, 0x0f, 0x04, 0x87, 0xb2, 0xfc, 0xb5, 0xa6, 0xdb, + 0xa6, 0xb9, 0x79, 0xba, 0x56, 0x27, 0x72, 0x29, 0x17, 0x97, 0x1a, 0x8d, 0x6a, 0xa7, 0x38, 0x92, + 0x91, 0x2f, 0xb0, 0x8f, 0x2e, 0xfd, 0x6f, 0x23, 0x88, 0x3e, 0x35, 0x72, 0x19, 0xee, 0x39, 0x33, + 0xf2, 0xa2, 0x46, 0x3e, 0x83, 0xaf, 0x1f, 0xa4, 0x02, 0xed, 0xb8, 0x01, 0x3a, 0xe9, 0xe3, 0x6d, + 0x99, 0xab, 0xe9, 0x91, 0xf3, 0x28, 0x1c, 0x5e, 0xbc, 0xc9, 0xf5, 0xaa, 0xae, 0x74, 0xe0, 0x22, + 0x9a, 0x3c, 0xdd, 0x0b, 0x65, 0x01, 0xed, 0x5a, 0x5d, 0x1f, 0xef, 0xda, 0xf4, 0x40, 0x54, 0x0b, + 0xdc, 0x4e, 0xc7, 0x6e, 0x14, 0x47, 0x7b, 0x21, 0xa2, 0x5a, 0xf7, 0xb1, 0x5d, 0x1c, 0xeb, 0x05, + 0xc3, 0x2f, 0xf6, 0x8c, 0xf7, 0x82, 0xe1, 0x37, 0x85, 0x26, 0x7a, 0x11, 0xc4, 0x2f, 0x18, 0x15, + 0x27, 0x39, 0x90, 0x18, 0xaa, 0xd4, 0x5e, 0x04, 0x2a, 0xff, 0x52, 0x81, 0xb0, 0x0b, 0xa7, 0x38, + 0x4b, 0x26, 0xb3, 0x79, 0xd7, 0x4c, 0xf3, 0x51, 0x48, 0x02, 0x88, 0x7e, 0x29, 0x64, 0xa2, 0xe0, + 0x9d, 0x32, 0x93, 0x09, 0xc0, 0x7b, 0x64, 0x36, 0xb3, 0x0e, 0xd1, 0xd4, 0xe2, 0xd2, 0xdf, 0x4d, + 0x09, 0x12, 0x2e, 0x47, 0x78, 0x23, 0xcf, 0xc6, 0x43, 0x40, 0xa9, 0xf9, 0x11, 0xf7, 0x5d, 0x8f, + 0x07, 0x94, 0x52, 0x01, 0xb1, 0xdd, 0x45, 0x2d, 0xc9, 0xa4, 0xb1, 0x08, 0x73, 0xb6, 0xcf, 0xee, + 0x98, 0x3d, 0x1d, 0x8f, 0x78, 0xa5, 0xc2, 0xd1, 0x5e, 0x0a, 0x79, 0x30, 0x5a, 0x34, 0x92, 0x35, + 0x8e, 0xc4, 0x46, 0x33, 0xb5, 0xba, 0x51, 0x3e, 0xfd, 0xd3, 0x81, 0xb0, 0xae, 0xb1, 0xa5, 0x65, + 0x98, 0x8d, 0x9d, 0x9c, 0x52, 0x41, 0x2f, 0xa2, 0x1c, 0x15, 0x4f, 0x51, 0x69, 0xc5, 0xcc, 0xd8, + 0xf4, 0x53, 0x5b, 0x7a, 0x1f, 0x4e, 0xa7, 0xd9, 0x1f, 0xa9, 0xea, 0xc5, 0x36, 0x7d, 0xab, 0x1f, + 0xec, 0xef, 0xd6, 0x8c, 0x35, 0x66, 0x72, 0x63, 0x49, 0x1b, 0xa5, 0xad, 0x1a, 0x5d, 0xaa, 0x66, + 0x00, 0x58, 0xc2, 0x9e, 0xb1, 0x5f, 0x2e, 0xe6, 0x56, 0xfe, 0x61, 0x0e, 0xe6, 0xa4, 0x3b, 0xa5, + 0xb8, 0x37, 0xf6, 0xc9, 0x2f, 0x6b, 0x70, 0x3a, 0x2d, 0xa4, 0x2c, 0x79, 0x25, 0x35, 0x10, 0x05, + 0x16, 0xea, 0x11, 0x09, 0x7a, 0xf1, 0xd5, 0x61, 0x8b, 0x71, 0xcf, 0xc7, 0x4b, 0xdf, 0xfb, 0x47, + 0x7f, 0xfa, 0x13, 0xb9, 0x73, 0x3a, 0xb9, 0x7d, 0xfc, 0xe2, 0x6d, 0x0b, 0xe1, 0x6f, 0xb3, 0xf0, + 0xd4, 0xfe, 0x9b, 0xda, 0xd2, 0x0b, 0x1a, 0xf1, 0x60, 0x8c, 0x39, 0x4b, 0x92, 0x67, 0xb3, 0xab, + 0x50, 0x9c, 0x31, 0x17, 0x6f, 0xf4, 0x07, 0xe4, 0xb5, 0x9f, 0xc1, 0xda, 0x67, 0x75, 0x88, 0x6a, + 0x7f, 0x53, 0x5b, 0x5a, 0xf9, 0xd7, 0x23, 0xf8, 0x7a, 0x90, 0xe8, 0x32, 0x8c, 0x0a, 0xd5, 0x82, + 0x31, 0xe6, 0x3b, 0x4c, 0xae, 0x67, 0x85, 0xf6, 0x51, 0xfc, 0x97, 0x17, 0x9f, 0xe9, 0x07, 0xc6, + 0x69, 0x38, 0x8d, 0x34, 0xcc, 0xe8, 0x93, 0x94, 0x06, 0xcf, 0x6d, 0xda, 0x94, 0x04, 0xe2, 0xc3, + 0x64, 0xd8, 0x6f, 0xe4, 0x46, 0x16, 0xaa, 0xb8, 0x07, 0xda, 0xe2, 0x73, 0x03, 0x40, 0xf2, 0x7a, + 0xe7, 0xb0, 0xde, 0x29, 0x12, 0xd5, 0x4b, 0xbe, 0x13, 0xc6, 0xb9, 0xd7, 0x1c, 0xc9, 0xa4, 0x5e, + 0xf5, 0xef, 0x5b, 0x7c, 0xb6, 0x2f, 0x9c, 0xb8, 0xd6, 0x8e, 0xd5, 0x2d, 0x92, 0x85, 0xb0, 0xba, + 0xdb, 0x0e, 0x03, 0xb9, 0xfd, 0xd5, 0xb6, 0xd5, 0xb2, 0xbf, 0x46, 0x3e, 0x0b, 0x47, 0x3a, 0xb3, + 0x87, 0xd5, 0x71, 0x7e, 0xa6, 0x1f, 0x18, 0xaf, 0x7a, 0x01, 0xab, 0x26, 0x4b, 0xc5, 0xa8, 0x6a, + 0x5e, 0x65, 0x0b, 0xc6, 0xf8, 0xed, 0x9f, 0xcc, 0x2a, 0x95, 0x58, 0x51, 0xd9, 0x55, 0xc6, 0x82, + 0xee, 0xf1, 0x41, 0x5d, 0x54, 0x06, 0x75, 0xe5, 0x37, 0x26, 0xe0, 0xbc, 0xc4, 0x57, 0x6a, 0x58, + 0x13, 0xf2, 0x23, 0x1a, 0xde, 0x81, 0xf5, 0x02, 0xb2, 0x9c, 0x56, 0x4b, 0x76, 0x90, 0xa5, 0xc5, + 0xdb, 0x03, 0xc3, 0x73, 0xf2, 0x9e, 0x46, 0xf2, 0x2e, 0xeb, 0xe7, 0x29, 0x79, 0x87, 0x21, 0xe0, + 0xad, 0xc0, 0x73, 0x5a, 0xb7, 0xf1, 0xd2, 0x12, 0xe5, 0xc1, 0x1f, 0xd5, 0x42, 0x4b, 0xff, 0x60, + 0x35, 0x44, 0x37, 0x6f, 0x16, 0x5f, 0x18, 0xbc, 0x00, 0xa7, 0x49, 0x47, 0x9a, 0x2e, 0x92, 0xc5, + 0x0c, 0x9a, 0x28, 0x19, 0xbf, 0xa0, 0x41, 0x31, 0x1e, 0x38, 0x88, 0x3c, 0x3f, 0x58, 0x78, 0x21, + 0x46, 0xd7, 0xcd, 0x61, 0x62, 0x11, 0xe9, 0xcb, 0x48, 0xd3, 0x0d, 0xf2, 0x4c, 0x1a, 0x4d, 0x56, + 0x37, 0x70, 0x6f, 0xb1, 0x53, 0xa4, 0x5b, 0x9c, 0xbe, 0x9f, 0xd5, 0x60, 0x36, 0x16, 0xb4, 0x87, + 0x2c, 0x0d, 0x14, 0xd9, 0x87, 0x51, 0xf7, 0xfc, 0x10, 0x51, 0x80, 0xf4, 0x5b, 0x48, 0xdc, 0xb3, + 0xe4, 0x7a, 0x3f, 0xe2, 0x58, 0x88, 0xa0, 0x1f, 0xd0, 0x60, 0x84, 0x2e, 0x47, 0xe4, 0xd6, 0x20, + 0x43, 0x13, 0x86, 0xb3, 0x58, 0x5c, 0x1e, 0x14, 0x9c, 0x93, 0xf5, 0x14, 0x92, 0x75, 0x49, 0x5f, + 0x48, 0x1f, 0x47, 0xb7, 0x43, 0x59, 0x8b, 0xee, 0x66, 0xd5, 0xd8, 0x3b, 0xe4, 0xb9, 0xde, 0x6d, + 0x97, 0x02, 0xfb, 0x2c, 0x2e, 0x0d, 0x02, 0xca, 0xc9, 0xb9, 0x8d, 0xe4, 0x3c, 0xa7, 0x3f, 0xdd, + 0xaf, 0x97, 0x3a, 0x5d, 0xff, 0x3e, 0x25, 0xed, 0x27, 0x35, 0x28, 0x28, 0x71, 0x7a, 0xd2, 0xc5, + 0x6f, 0x5a, 0x08, 0xa0, 0xc5, 0xe7, 0x06, 0x80, 0x54, 0x59, 0x4b, 0x7f, 0xaa, 0x2f, 0x5d, 0xd8, + 0x63, 0x2b, 0xff, 0x3a, 0x0f, 0x8b, 0xa9, 0xb2, 0x03, 0x23, 0x88, 0x90, 0x1f, 0x0b, 0x85, 0x47, + 0x9f, 0xa9, 0x9a, 0x08, 0x60, 0xd3, 0x6f, 0xaa, 0x26, 0xa3, 0xd3, 0xe8, 0xd7, 0x91, 0xf6, 0x2b, + 0x7a, 0x7c, 0xaa, 0xd6, 0x29, 0x68, 0x24, 0x3f, 0x7e, 0x3c, 0x92, 0x1f, 0x03, 0xd6, 0x21, 0x4d, + 0xd4, 0x17, 0x87, 0x28, 0xa1, 0x72, 0x1e, 0xb9, 0x90, 0x45, 0x16, 0xa5, 0xe4, 0x87, 0xc5, 0x34, + 0x58, 0x1e, 0xa8, 0x82, 0x68, 0x6c, 0x6f, 0x0f, 0x0c, 0xdf, 0x47, 0xc8, 0x0a, 0x72, 0xd8, 0xb8, + 0xfe, 0x17, 0x39, 0x98, 0x97, 0xc6, 0x55, 0x44, 0x52, 0x21, 0x3f, 0xa5, 0xc1, 0xb4, 0x1c, 0xda, + 0x25, 0x7d, 0x5c, 0x7b, 0x84, 0x89, 0x49, 0x1f, 0xd7, 0x5e, 0x51, 0x63, 0xd4, 0x0e, 0x74, 0x18, + 0xa4, 0x63, 0xfb, 0xb7, 0xe5, 0x78, 0x30, 0xe4, 0x7b, 0xb5, 0x28, 0x5e, 0xc6, 0x52, 0xaf, 0x2a, + 0xd4, 0x50, 0x31, 0xe9, 0xb2, 0x2d, 0x23, 0x70, 0x8c, 0x7e, 0x19, 0x29, 0x59, 0x20, 0x67, 0x63, + 0x94, 0xf0, 0x20, 0x19, 0x2b, 0xbf, 0xa6, 0x29, 0x01, 0x57, 0xb8, 0x17, 0x39, 0xf9, 0xa6, 0x06, + 0x33, 0xea, 0x1b, 0x83, 0x24, 0xe3, 0xf9, 0x08, 0x76, 0x33, 0x27, 0xed, 0xb9, 0xc2, 0xc5, 0x17, + 0x87, 0x28, 0x91, 0xd6, 0x71, 0xfc, 0xda, 0x4f, 0xa8, 0xdf, 0xf0, 0x1b, 0x22, 0x2b, 0x7f, 0x31, + 0x06, 0x67, 0x93, 0x34, 0xef, 0x5a, 0x8e, 0x47, 0xfb, 0x54, 0x68, 0x97, 0x37, 0x7b, 0xd4, 0x9e, + 0xb8, 0x24, 0xb7, 0x78, 0x6b, 0x40, 0x68, 0x4e, 0xe7, 0x05, 0xa4, 0xf3, 0x8c, 0x5e, 0x94, 0xe8, + 0xc4, 0x8b, 0x02, 0x7c, 0xb9, 0x0f, 0xd5, 0xbf, 0x7e, 0x78, 0x63, 0x5a, 0xe0, 0xf2, 0xa0, 0xe0, + 0xaa, 0x00, 0x21, 0x97, 0xe2, 0x74, 0x44, 0x3a, 0xa1, 0xd3, 0xf8, 0x1a, 0xf9, 0xdb, 0x9a, 0xac, + 0x05, 0xdf, 0xee, 0x53, 0x49, 0x42, 0x19, 0x7e, 0x61, 0xf0, 0x02, 0xaa, 0xa6, 0x48, 0x12, 0xfd, + 0x43, 0x7e, 0x50, 0x83, 0x09, 0x71, 0x7d, 0x8a, 0xf4, 0x6b, 0x6e, 0xec, 0x22, 0xd6, 0xe2, 0xed, + 0x81, 0xe1, 0xd3, 0xd8, 0x5f, 0xe9, 0x1f, 0x76, 0x6b, 0xe8, 0x27, 0x35, 0x80, 0xe8, 0x06, 0x15, + 0xe9, 0xd7, 0xd0, 0xc4, 0x7d, 0xac, 0x9e, 0x3c, 0x9e, 0x7e, 0x3d, 0x4b, 0xbf, 0x86, 0x34, 0x5d, + 0xd0, 0x33, 0x68, 0xa2, 0x1c, 0xf4, 0x43, 0x5a, 0xa8, 0xc2, 0xf7, 0x63, 0x63, 0x55, 0x93, 0xbf, + 0x35, 0x20, 0xb4, 0xca, 0x3e, 0x4b, 0x49, 0xf6, 0xf9, 0x6a, 0x74, 0x0b, 0xef, 0x6b, 0x2b, 0xbf, + 0x31, 0xaa, 0xa8, 0xdb, 0x1c, 0xdf, 0xba, 0xdb, 0xb2, 0x9c, 0xb6, 0x4f, 0xbe, 0xae, 0x30, 0xd7, + 0x4a, 0x0f, 0x0a, 0x78, 0x89, 0x04, 0x7f, 0xbd, 0x34, 0x54, 0x19, 0x4e, 0xfb, 0x22, 0xd2, 0x7e, + 0x9a, 0x10, 0x89, 0xf6, 0x06, 0x27, 0xe9, 0x97, 0xa5, 0x19, 0x78, 0xbb, 0x2f, 0xf2, 0xd8, 0x1c, + 0x7c, 0x61, 0xf0, 0x02, 0x9c, 0x94, 0xd7, 0x91, 0x94, 0x15, 0xf2, 0x42, 0x92, 0x94, 0x68, 0x1e, + 0x8a, 0x0e, 0x65, 0x19, 0x26, 0xdb, 0x37, 0xfd, 0x7d, 0x0d, 0x26, 0xd0, 0x94, 0x44, 0xbb, 0xae, + 0x7f, 0xc5, 0x02, 0x74, 0x10, 0xee, 0x8b, 0x97, 0xe0, 0xb4, 0xbe, 0x81, 0xb4, 0xbe, 0xa4, 0xbf, + 0x98, 0x42, 0xab, 0xc5, 0x81, 0x33, 0x88, 0xfd, 0x75, 0x0d, 0x60, 0xdd, 0x16, 0x40, 0x03, 0x8c, + 0x74, 0x04, 0x3c, 0xf8, 0x48, 0xcb, 0x65, 0x38, 0xc9, 0x6f, 0x21, 0xc9, 0xaf, 0xe8, 0x2f, 0xa5, + 0x90, 0xdc, 0xb0, 0x7b, 0x13, 0xbd, 0xf2, 0x2b, 0x63, 0x8a, 0x09, 0x62, 0xd7, 0x75, 0x9b, 0x54, + 0x75, 0x19, 0x63, 0xcf, 0xf8, 0xa6, 0x4f, 0xaf, 0x94, 0xd7, 0x7e, 0x7b, 0x4c, 0xaf, 0xec, 0xb7, + 0x81, 0x9f, 0x41, 0xc2, 0xaf, 0x2e, 0x5e, 0xa6, 0x84, 0xf3, 0x52, 0x1d, 0xd7, 0x6d, 0xfa, 0xb7, + 0x3d, 0x04, 0xbc, 0xfd, 0xd5, 0x6e, 0x97, 0x8a, 0xe7, 0x1f, 0xd0, 0x60, 0x32, 0x34, 0xd4, 0xa7, + 0x6f, 0xc3, 0xe2, 0xe6, 0xfc, 0x9e, 0xdb, 0xb0, 0x24, 0xb0, 0xba, 0x35, 0x5c, 0x5c, 0x4c, 0x21, + 0x48, 0x54, 0xff, 0x4b, 0x1a, 0x9c, 0x4b, 0xbe, 0xdd, 0xcd, 0x0c, 0x91, 0xa9, 0xed, 0xcf, 0x7c, + 0x59, 0x3c, 0x7d, 0x35, 0xeb, 0xf1, 0x2e, 0xf8, 0xf3, 0x48, 0xde, 0xf5, 0xc5, 0xa7, 0xb2, 0xc9, + 0xbb, 0xfd, 0xa9, 0x7b, 0xc0, 0xd6, 0xb4, 0xbf, 0xa7, 0xc1, 0x99, 0xd4, 0xe7, 0xc0, 0xd3, 0xe7, + 0x51, 0xaf, 0xd7, 0xc6, 0xd3, 0xe7, 0x51, 0xcf, 0xb7, 0xc6, 0x05, 0xad, 0x64, 0x20, 0x5a, 0xff, + 0x53, 0x0d, 0xce, 0xa6, 0x3f, 0xda, 0x4d, 0x52, 0xab, 0xee, 0xf9, 0x08, 0xf8, 0xe2, 0xca, 0x30, + 0x45, 0x54, 0x56, 0x24, 0x97, 0x7b, 0x93, 0xbb, 0xf2, 0x7d, 0x1a, 0x14, 0xa5, 0xe9, 0xb2, 0xee, + 0x58, 0x47, 0x3e, 0xf1, 0x60, 0x7c, 0xcd, 0x6d, 0x36, 0xa9, 0x34, 0x4d, 0x35, 0x53, 0x21, 0x14, + 0x87, 0xe8, 0x69, 0x3b, 0x54, 0x01, 0xd3, 0xec, 0x76, 0x0d, 0x0a, 0x41, 0xd5, 0xf9, 0x3f, 0xcf, + 0xe1, 0x29, 0xba, 0x20, 0xe4, 0x7d, 0xf7, 0x80, 0xb8, 0xa1, 0x91, 0xe9, 0xe9, 0x6c, 0xc6, 0x92, + 0xd8, 0xef, 0x7a, 0x1f, 0x28, 0x55, 0x57, 0x59, 0x2c, 0xd0, 0xfa, 0x3f, 0x75, 0x0f, 0x7c, 0x1c, + 0x33, 0xba, 0x0c, 0x77, 0x61, 0xf2, 0x8e, 0x1d, 0x70, 0xae, 0x7a, 0x36, 0x83, 0x47, 0x12, 0xcc, + 0x74, 0xa3, 0x3f, 0xa0, 0x6a, 0x35, 0x25, 0x6a, 0xcd, 0xc4, 0xeb, 0x6b, 0xb2, 0x0c, 0xb3, 0x65, + 0xb6, 0x78, 0x6e, 0x00, 0x48, 0x5e, 0x71, 0x11, 0x2b, 0x06, 0x32, 0x21, 0x2a, 0x5e, 0xf9, 0xc5, + 0x69, 0x45, 0x4c, 0xee, 0xb8, 0x0d, 0x9b, 0x7c, 0x77, 0x1f, 0x2b, 0xa6, 0xf2, 0xe8, 0x79, 0x0f, + 0x2b, 0x66, 0xca, 0xe3, 0xe8, 0xaa, 0xa2, 0x8f, 0x2f, 0x6c, 0x4b, 0x56, 0x4c, 0x16, 0x22, 0xf7, + 0x6b, 0x74, 0x2f, 0x1e, 0xdf, 0x85, 0xdc, 0xea, 0x53, 0x41, 0x6c, 0x0b, 0xb2, 0x3c, 0x28, 0x78, + 0x9a, 0x71, 0x55, 0x21, 0x8b, 0x6f, 0x3e, 0x06, 0xb0, 0x27, 0xa7, 0x3d, 0xa6, 0x9e, 0x3e, 0x38, + 0xa9, 0x6f, 0xab, 0xab, 0xf6, 0x64, 0xa4, 0x81, 0xfc, 0x7c, 0xd6, 0x21, 0xc3, 0x4b, 0x7d, 0xd1, + 0xa6, 0x1c, 0x31, 0xbc, 0x3c, 0x5c, 0x21, 0x4e, 0xd6, 0x79, 0x24, 0x6b, 0x9e, 0xcc, 0x45, 0x5d, + 0xc3, 0xcf, 0x17, 0xc8, 0xcf, 0x69, 0xc2, 0x43, 0x0f, 0x0d, 0x6b, 0x2c, 0x2c, 0x72, 0xba, 0x18, + 0xa6, 0x39, 0x09, 0xd0, 0x9e, 0x62, 0x38, 0xa3, 0x84, 0xaa, 0x4c, 0x93, 0xf3, 0x11, 0x55, 0x68, + 0xa5, 0x93, 0xb8, 0xe8, 0xa7, 0x34, 0x28, 0xae, 0x7b, 0x54, 0x17, 0x42, 0xdf, 0x9f, 0x96, 0xdd, + 0x0e, 0x32, 0x8c, 0x00, 0x14, 0x73, 0x1c, 0x52, 0xd0, 0x76, 0x25, 0xad, 0x80, 0x2c, 0x46, 0x5e, + 0x40, 0x4a, 0x96, 0x16, 0xaf, 0x47, 0x94, 0x58, 0x11, 0x9a, 0xdb, 0x0d, 0x8a, 0x37, 0xa2, 0x8a, + 0x8a, 0x97, 0x5f, 0xd1, 0x60, 0x6e, 0xcd, 0xf5, 0x1a, 0xae, 0x42, 0x59, 0x66, 0xb7, 0x25, 0x40, + 0xfb, 0x76, 0x5b, 0x4a, 0x09, 0x4e, 0xec, 0x0a, 0x12, 0x7b, 0x73, 0xf1, 0xd9, 0x0c, 0x62, 0x1d, + 0xdf, 0x3a, 0x68, 0xda, 0x2a, 0xb9, 0xbf, 0xa6, 0xc1, 0xfc, 0x7e, 0xbb, 0x9e, 0x20, 0x78, 0x25, + 0xab, 0xfa, 0x14, 0xe0, 0x9e, 0x7a, 0x60, 0x66, 0x19, 0x4e, 0xf4, 0x8b, 0x48, 0xf4, 0xf3, 0x8b, + 0xcf, 0xa4, 0x13, 0xcd, 0x9e, 0x4a, 0x57, 0x69, 0xfe, 0xba, 0x06, 0x67, 0x52, 0x83, 0x76, 0xa7, + 0x5b, 0x5c, 0xd2, 0xc3, 0x76, 0xa7, 0x5b, 0x5c, 0x32, 0x82, 0x89, 0x8b, 0x2d, 0xa7, 0x3e, 0x1f, + 0x51, 0x89, 0xa1, 0xc3, 0xba, 0xbe, 0xdd, 0xa0, 0x24, 0xfd, 0x23, 0x0d, 0xce, 0xb3, 0xb9, 0xb5, + 0xe3, 0xb6, 0xab, 0xc7, 0xb6, 0xd7, 0xb4, 0x3a, 0x1d, 0xa7, 0x7d, 0xb4, 0x83, 0x33, 0xfd, 0xe5, + 0x0c, 0xe3, 0x58, 0x3a, 0xb8, 0x20, 0xf0, 0x95, 0x21, 0x4b, 0x71, 0x52, 0x97, 0x90, 0xd4, 0xa7, + 0xf5, 0x2b, 0xf1, 0x29, 0x7d, 0xab, 0xed, 0xb6, 0xdd, 0xa8, 0x14, 0x5d, 0x8f, 0x7f, 0x61, 0x44, + 0x39, 0xfd, 0x64, 0xee, 0x37, 0xa4, 0x19, 0x9a, 0x5b, 0x92, 0x4b, 0x32, 0x03, 0x51, 0xcd, 0x2c, + 0xd7, 0xfb, 0x40, 0xa5, 0x1d, 0x27, 0xb2, 0xd7, 0x91, 0xd9, 0x7a, 0x2c, 0x76, 0xc5, 0x59, 0xb5, + 0xa9, 0xbb, 0xe1, 0xeb, 0x7d, 0xa0, 0xd4, 0x11, 0x5b, 0x3a, 0x1b, 0xd5, 0x76, 0xfb, 0xab, 0xec, + 0x3f, 0x0a, 0x90, 0x1f, 0xd1, 0x60, 0xea, 0x8e, 0x67, 0xb5, 0xb9, 0xb7, 0x51, 0x8a, 0x81, 0x9d, + 0xa1, 0x95, 0x60, 0xb2, 0x0d, 0xec, 0x29, 0xa0, 0x9c, 0x8c, 0x1b, 0x48, 0x86, 0xae, 0x5f, 0x92, + 0xc8, 0xb0, 0x10, 0x44, 0xa6, 0x86, 0xf6, 0xc3, 0x8f, 0xa1, 0x07, 0xf9, 0xb1, 0xfb, 0xc0, 0xe6, + 0x14, 0x65, 0x55, 0x23, 0x03, 0x65, 0x33, 0x73, 0x1a, 0x6c, 0x0f, 0x9a, 0x3c, 0x04, 0x8c, 0xd1, + 0xb4, 0xf2, 0x17, 0x44, 0xe1, 0x0f, 0x1e, 0x83, 0xd3, 0x0f, 0xf9, 0xe3, 0xd9, 0xec, 0x39, 0xa4, + 0xb2, 0xc8, 0x8d, 0xfe, 0x80, 0x9c, 0xb8, 0xb3, 0x48, 0x5c, 0x51, 0x9f, 0xa2, 0xc4, 0xf1, 0xd8, + 0xa2, 0xb4, 0x7b, 0x8e, 0x61, 0x14, 0x5d, 0x82, 0xd2, 0xb5, 0x16, 0x8e, 0x8a, 0x02, 0xf4, 0xd4, + 0x5a, 0x14, 0x38, 0x5e, 0xe3, 0x45, 0xac, 0xf1, 0xac, 0x3e, 0x27, 0xd5, 0x78, 0xbb, 0x4e, 0x41, + 0x68, 0xbd, 0xdf, 0xd9, 0xfb, 0x84, 0x9d, 0x21, 0x1c, 0xe0, 0x84, 0x5d, 0x05, 0xe4, 0x55, 0x5f, + 0xc1, 0xaa, 0xcf, 0x2f, 0x9d, 0x93, 0xab, 0xfe, 0x6a, 0x78, 0xbf, 0xe9, 0x6b, 0xe4, 0x6f, 0x49, + 0x36, 0x8f, 0x1e, 0x68, 0x63, 0x0a, 0xdb, 0x73, 0x03, 0x40, 0x72, 0x0a, 0x9e, 0x45, 0x0a, 0xae, + 0x91, 0x2b, 0x32, 0x05, 0xa1, 0xd2, 0x26, 0x51, 0xf2, 0xf7, 0x35, 0x20, 0xbc, 0x70, 0x5f, 0x5d, + 0x45, 0xa9, 0x6a, 0x50, 0x5d, 0x25, 0xbb, 0x10, 0x27, 0xf5, 0x39, 0x24, 0xf5, 0x29, 0xfd, 0x72, + 0x0a, 0xa9, 0x9f, 0x3b, 0xc1, 0xfd, 0xc8, 0x31, 0x82, 0x7c, 0x77, 0xb8, 0xa9, 0xe8, 0x31, 0x68, + 0xea, 0xd9, 0xf5, 0x8d, 0xfe, 0x80, 0xb1, 0xfd, 0x76, 0xd6, 0xa0, 0x31, 0x02, 0x46, 0xe9, 0xb6, + 0xc0, 0xef, 0xc5, 0xad, 0x08, 0x30, 0x00, 0xb7, 0x72, 0xb8, 0x34, 0xe3, 0xb0, 0xa8, 0xdd, 0xa7, + 0x20, 0xca, 0x70, 0xfd, 0xb4, 0x06, 0x85, 0x35, 0xfe, 0x16, 0x18, 0x3b, 0x69, 0x5d, 0xee, 0x31, + 0x1f, 0x64, 0xc0, 0x9e, 0x66, 0xd9, 0x54, 0xf8, 0x5e, 0x94, 0x71, 0xbd, 0x4d, 0xa2, 0xec, 0x44, + 0xd6, 0xb5, 0x7b, 0x2c, 0xd8, 0x09, 0x6d, 0xfb, 0xf9, 0x81, 0x60, 0x39, 0x31, 0xf3, 0x48, 0x4c, + 0x81, 0xc8, 0x62, 0x84, 0xfc, 0xd2, 0x50, 0x6e, 0x3d, 0x31, 0xd4, 0x83, 0xba, 0xf5, 0xf4, 0x2a, + 0x96, 0xa6, 0x4d, 0x88, 0x9e, 0x92, 0xd8, 0xf7, 0x1b, 0x1a, 0xcc, 0xd4, 0xf8, 0x65, 0x75, 0x2e, + 0x69, 0x7b, 0x8c, 0x86, 0x0a, 0xd9, 0xd3, 0xe0, 0x99, 0x5e, 0x40, 0xdd, 0x26, 0xe9, 0x67, 0x14, + 0xce, 0xe2, 0xb0, 0x48, 0xd7, 0xdf, 0xd1, 0x60, 0x56, 0x14, 0xe6, 0x1e, 0x58, 0x64, 0x80, 0x7a, + 0x38, 0x68, 0x4f, 0xcd, 0x36, 0xa3, 0x44, 0xda, 0x8a, 0x95, 0x20, 0xed, 0x36, 0x7f, 0x03, 0x8f, + 0x92, 0x48, 0x77, 0x2d, 0x02, 0x4b, 0x1f, 0xfb, 0xb5, 0x5a, 0xe5, 0x60, 0xf6, 0xeb, 0xcc, 0x32, + 0xaa, 0xc3, 0x16, 0x49, 0xef, 0x43, 0xf2, 0x47, 0x1a, 0x5c, 0x4c, 0x14, 0x96, 0x19, 0xf1, 0x9d, + 0x21, 0x2a, 0x4d, 0x61, 0xc8, 0x77, 0x1f, 0xb5, 0x38, 0x27, 0xff, 0x65, 0x24, 0x7f, 0x59, 0x7f, + 0x2e, 0xbd, 0x9f, 0x39, 0x8b, 0xc6, 0x85, 0xdd, 0xef, 0x6a, 0x70, 0xb6, 0x16, 0x8b, 0xad, 0xc0, + 0xc5, 0xef, 0x6b, 0xfd, 0x09, 0x52, 0x4b, 0x88, 0x96, 0xbc, 0x3e, 0x7c, 0x41, 0xde, 0x86, 0x57, + 0xb0, 0x0d, 0xb7, 0xf5, 0xa5, 0xb4, 0x36, 0xdc, 0x0e, 0x9f, 0xa2, 0x8d, 0x37, 0xe2, 0x6f, 0x68, + 0x50, 0x50, 0xae, 0x03, 0xf7, 0x5a, 0x6f, 0xd5, 0x3b, 0xc9, 0xbd, 0xd6, 0xdb, 0xd8, 0x45, 0x61, + 0xd5, 0xa3, 0x8f, 0x51, 0x70, 0x9b, 0xdf, 0x1d, 0xa6, 0x0a, 0xd7, 0x43, 0xc5, 0x50, 0x77, 0x0f, + 0xdf, 0x66, 0x68, 0xc0, 0x28, 0xfb, 0x71, 0x35, 0xad, 0x1a, 0xcc, 0x12, 0x84, 0x5c, 0xeb, 0x01, + 0x91, 0x66, 0x98, 0xfb, 0x9c, 0x66, 0xa1, 0x27, 0xe1, 0xca, 0xcf, 0x8e, 0x28, 0xe7, 0xaf, 0x78, + 0xc9, 0x9e, 0xed, 0xd7, 0xc8, 0x77, 0xc1, 0x18, 0xff, 0xd5, 0x63, 0x95, 0x62, 0x10, 0x03, 0xac, + 0xa6, 0x02, 0x30, 0xed, 0xe0, 0x0c, 0xc3, 0x02, 0xb0, 0xed, 0x1f, 0xdf, 0x05, 0xd2, 0xa1, 0xf9, + 0x2e, 0xaa, 0x82, 0xf5, 0xab, 0x9f, 0x41, 0x0c, 0xa4, 0x82, 0x0d, 0x56, 0x7f, 0xc3, 0x16, 0xf5, + 0x7f, 0x05, 0x46, 0xb1, 0x3b, 0x7a, 0x2d, 0xe6, 0x08, 0x30, 0xc0, 0x62, 0xce, 0xe1, 0xd2, 0x44, + 0xae, 0x5c, 0x39, 0xfe, 0xa6, 0x75, 0x7f, 0xaf, 0x06, 0xe3, 0xfb, 0x6d, 0xfc, 0xec, 0xc5, 0x90, + 0x1c, 0x64, 0x00, 0x86, 0x0c, 0x21, 0x55, 0x6d, 0x46, 0x3f, 0x17, 0x27, 0xa1, 0xdb, 0x16, 0x44, + 0xac, 0xfc, 0x6a, 0x5e, 0xf1, 0x27, 0xe0, 0xd1, 0x8e, 0x29, 0x6d, 0xdc, 0xab, 0xe6, 0xe6, 0x30, + 0x41, 0xff, 0x17, 0x6f, 0x0d, 0x08, 0x9d, 0xad, 0x9f, 0xf3, 0x27, 0xec, 0xc5, 0xa9, 0x2a, 0x0b, + 0x31, 0x4f, 0xfa, 0xe2, 0x55, 0x62, 0xd6, 0x67, 0x1d, 0xcb, 0x67, 0x46, 0xae, 0x57, 0x5c, 0xb7, + 0x14, 0x3a, 0x6e, 0xd7, 0x11, 0x92, 0x8f, 0x97, 0xf0, 0xea, 0x19, 0xa4, 0x99, 0x92, 0x85, 0x79, + 0x79, 0x50, 0xf0, 0x34, 0xd3, 0x9d, 0x42, 0xce, 0xca, 0x9f, 0xaa, 0x73, 0x99, 0xbd, 0x23, 0xcb, + 0x96, 0xeb, 0x9f, 0xeb, 0xe7, 0xc6, 0x20, 0x01, 0x0f, 0xe2, 0xc6, 0x90, 0x06, 0xae, 0x5a, 0x76, + 0x08, 0x2e, 0x26, 0x6e, 0x04, 0x27, 0xed, 0x2f, 0xa4, 0x54, 0xd4, 0x0d, 0xfb, 0x79, 0x7a, 0x48, + 0xb5, 0x0d, 0xe0, 0xe9, 0x91, 0x02, 0x9d, 0xe6, 0xe9, 0x21, 0x93, 0xc6, 0xcd, 0x4b, 0x3d, 0xcf, + 0xe9, 0x25, 0xb4, 0x03, 0x9c, 0xd3, 0xa7, 0x40, 0xab, 0xfb, 0x99, 0xa5, 0x6b, 0x89, 0xfe, 0x49, + 0xf4, 0xcb, 0x4f, 0x68, 0xe1, 0x86, 0xa6, 0x1f, 0x49, 0xea, 0x32, 0x7a, 0x6b, 0x40, 0x68, 0x4e, + 0xd2, 0x4d, 0x24, 0xe9, 0x99, 0xc5, 0xfe, 0x24, 0x51, 0xb1, 0xf0, 0xeb, 0x13, 0xaa, 0xcb, 0x4e, + 0x18, 0x56, 0xd9, 0xa7, 0x1b, 0x30, 0x3e, 0x8e, 0xe9, 0x8f, 0x3d, 0x87, 0xa0, 0xea, 0x30, 0xde, + 0x1c, 0x0c, 0x58, 0x75, 0x16, 0xd0, 0x67, 0xf1, 0x08, 0x39, 0xaa, 0x5d, 0x78, 0xe7, 0xf2, 0x1e, + 0xeb, 0x43, 0x81, 0xda, 0x61, 0x37, 0x07, 0x03, 0x56, 0x6d, 0x6d, 0x8b, 0x57, 0x62, 0x14, 0xdc, + 0xfe, 0xaa, 0x12, 0x78, 0x1a, 0x15, 0x8c, 0xbf, 0xa9, 0x78, 0x54, 0x2c, 0xf7, 0xae, 0x27, 0xa1, + 0x8d, 0xde, 0x1e, 0x18, 0x9e, 0x93, 0x76, 0x0e, 0x49, 0x9b, 0x23, 0xf1, 0xce, 0xa1, 0x3b, 0xc3, + 0x50, 0x02, 0xf4, 0x69, 0x6d, 0x4c, 0x00, 0xdc, 0x1a, 0x10, 0x5a, 0xf5, 0x2d, 0x25, 0xcf, 0xc6, + 0x3b, 0x27, 0xf2, 0x9e, 0x50, 0x3a, 0x49, 0x76, 0x90, 0xe9, 0x33, 0x66, 0xea, 0xbc, 0xbb, 0x39, + 0x18, 0xb0, 0x6a, 0xf1, 0x58, 0xea, 0x37, 0x66, 0x54, 0x54, 0x4e, 0xdc, 0xb5, 0x9a, 0x4e, 0x23, + 0xf3, 0x90, 0x3c, 0xaa, 0x43, 0xc0, 0xf5, 0x16, 0xe6, 0x29, 0xe0, 0xea, 0x39, 0x03, 0xb9, 0x11, + 0x27, 0xea, 0x98, 0x43, 0x26, 0xa8, 0xfb, 0xc7, 0x1a, 0x14, 0x45, 0xcb, 0x78, 0x94, 0xa6, 0x8c, + 0x7d, 0x6c, 0xb2, 0x27, 0x04, 0x7c, 0xcf, 0x7d, 0x6c, 0xaf, 0x62, 0xea, 0x81, 0xc3, 0xd2, 0x52, + 0x9c, 0xea, 0x30, 0x70, 0x54, 0xa2, 0x57, 0x57, 0xfe, 0x1f, 0xd5, 0xed, 0x48, 0x28, 0xf1, 0x3c, + 0x56, 0xd6, 0x0f, 0x45, 0x0b, 0x40, 0x2a, 0xc7, 0xab, 0xe0, 0x03, 0xec, 0x78, 0xd3, 0x0b, 0xa8, + 0xe6, 0x37, 0xfd, 0x34, 0x9e, 0x9f, 0x73, 0x48, 0x0c, 0xfa, 0xe5, 0xb0, 0xa5, 0xe0, 0x87, 0x22, + 0x29, 0x32, 0x00, 0x39, 0xaa, 0x24, 0x79, 0x61, 0xf0, 0x02, 0x2a, 0x39, 0x8b, 0x99, 0xe4, 0xfc, + 0x78, 0x7f, 0xa7, 0x2c, 0xb5, 0x82, 0xc1, 0x36, 0xb5, 0x99, 0x65, 0x54, 0x05, 0x8c, 0xa4, 0xd2, + 0xa5, 0x68, 0x14, 0x03, 0xb4, 0x39, 0x26, 0x53, 0x5e, 0x1c, 0xa2, 0x44, 0xaa, 0x93, 0x46, 0x8c, + 0x9c, 0xf8, 0xb5, 0x19, 0x69, 0x31, 0x1f, 0x60, 0x04, 0x55, 0xb9, 0xf2, 0xc2, 0xe0, 0x05, 0x54, + 0x15, 0x71, 0xe9, 0x42, 0x2a, 0x69, 0x8c, 0xa4, 0x95, 0x5f, 0x24, 0x31, 0x4f, 0xd7, 0xf0, 0x26, + 0xde, 0x00, 0x9e, 0xae, 0x21, 0xec, 0x40, 0x9e, 0xae, 0x09, 0xe8, 0x74, 0x4f, 0xd7, 0xf0, 0xb5, + 0x22, 0xe4, 0xb2, 0x9f, 0xc6, 0x93, 0x11, 0x57, 0x14, 0x22, 0x2f, 0xf6, 0xc1, 0x2d, 0xc1, 0xf6, + 0x74, 0x66, 0xc9, 0x2a, 0x92, 0xee, 0x41, 0x19, 0xd1, 0x74, 0x1b, 0x03, 0x24, 0x52, 0xca, 0x7e, + 0x58, 0x0b, 0x1f, 0xb8, 0x23, 0xfd, 0x5a, 0x1c, 0x33, 0x3a, 0x2d, 0x0f, 0x0a, 0x9e, 0xa6, 0xec, + 0x2b, 0xd4, 0x48, 0xc6, 0xa6, 0x1f, 0xef, 0xeb, 0xd1, 0x19, 0xe2, 0x1f, 0xc8, 0xa3, 0x33, 0x01, + 0xad, 0x72, 0xfc, 0xd2, 0x53, 0x09, 0x62, 0xd8, 0xff, 0xdb, 0x5f, 0x0d, 0x9f, 0xa0, 0xfa, 0x1a, + 0xf9, 0x86, 0x06, 0x93, 0xac, 0x7c, 0xa9, 0xd9, 0xcc, 0x72, 0x94, 0x8c, 0xd5, 0x54, 0x6a, 0x36, + 0xfb, 0x38, 0x4a, 0xa6, 0x15, 0x48, 0xbb, 0xef, 0xa0, 0x50, 0xd7, 0x40, 0x58, 0xab, 0x89, 0x3b, + 0xa3, 0xdf, 0xce, 0x32, 0xbe, 0xbe, 0xd9, 0xa7, 0xc6, 0x5e, 0x06, 0xaf, 0xb7, 0x1e, 0xa9, 0xac, + 0x7a, 0x45, 0x48, 0xd7, 0x13, 0x84, 0xdb, 0xa2, 0x98, 0x6c, 0x95, 0xfd, 0xfe, 0x68, 0x6b, 0xd7, + 0x6f, 0xb4, 0xd5, 0x9d, 0xdd, 0xad, 0x01, 0xa1, 0xd3, 0x76, 0xe4, 0x0a, 0x59, 0xec, 0x92, 0x86, + 0x98, 0x09, 0xc2, 0x4e, 0xd5, 0x77, 0xee, 0xab, 0xc6, 0xaa, 0xe5, 0x41, 0xc1, 0xfb, 0xce, 0x84, + 0xc8, 0x6e, 0x45, 0xbe, 0xa9, 0xc1, 0xf8, 0xa6, 0x43, 0x91, 0x9e, 0xf4, 0xa5, 0x87, 0xc3, 0x0d, + 0x4a, 0x4f, 0x08, 0x9e, 0xaa, 0x2a, 0xc9, 0xf4, 0xdc, 0x67, 0x90, 0xb7, 0xbf, 0xea, 0x7b, 0x75, + 0x53, 0x3a, 0x71, 0xf8, 0x05, 0x0d, 0xa6, 0xd0, 0xd5, 0x91, 0x45, 0x2e, 0xeb, 0x2b, 0xd0, 0x24, + 0xd8, 0x41, 0x05, 0x9a, 0x52, 0x44, 0x55, 0x34, 0xf5, 0x8b, 0xa9, 0xe3, 0x68, 0xd7, 0x11, 0x9a, + 0xdb, 0xac, 0xa7, 0x70, 0x59, 0x19, 0x50, 0xe0, 0x4a, 0xb0, 0x03, 0xd3, 0x27, 0x17, 0xe9, 0x3b, + 0x6f, 0x43, 0x23, 0xa9, 0x42, 0x1d, 0x57, 0x84, 0x06, 0xa2, 0x4e, 0x55, 0x85, 0x56, 0x86, 0x29, + 0xa2, 0x52, 0xb7, 0xd8, 0x87, 0xba, 0x5f, 0x15, 0xd4, 0x71, 0x39, 0x3c, 0x10, 0x75, 0xaa, 0x30, + 0x5e, 0x19, 0xa6, 0x88, 0x78, 0x58, 0x1f, 0xa9, 0x7b, 0x71, 0xe9, 0x76, 0x36, 0x75, 0xa1, 0x50, + 0x16, 0x29, 0xc8, 0x8b, 0xff, 0xb1, 0x06, 0x33, 0x88, 0x30, 0xd2, 0xe3, 0x5e, 0x1e, 0xa4, 0xfe, + 0x84, 0x26, 0xf7, 0xca, 0x90, 0xa5, 0xd2, 0xee, 0x91, 0xa6, 0x13, 0x4e, 0xbe, 0x0b, 0x46, 0x6a, + 0xce, 0x57, 0x32, 0x0e, 0xe7, 0xe4, 0x2a, 0x24, 0x27, 0xea, 0xe7, 0x07, 0x82, 0x4d, 0x3b, 0x25, + 0x51, 0x89, 0x70, 0xbe, 0x62, 0xaf, 0xfc, 0x28, 0x28, 0x5e, 0x07, 0x7c, 0x6b, 0xf0, 0x63, 0x91, + 0x6e, 0x94, 0x3a, 0x62, 0x89, 0x12, 0xea, 0x0c, 0x79, 0x69, 0xa8, 0x32, 0x69, 0x07, 0x75, 0xa1, + 0x83, 0x6d, 0xa4, 0x90, 0xff, 0xb4, 0xa2, 0x90, 0xbf, 0x32, 0x50, 0x15, 0x89, 0x91, 0x7c, 0x75, + 0xd8, 0x62, 0xaa, 0x12, 0x47, 0xd2, 0x88, 0x23, 0x7f, 0x47, 0xd2, 0xca, 0x07, 0x6b, 0x7a, 0x4c, + 0x31, 0x7f, 0x79, 0xb8, 0x42, 0xaa, 0x41, 0x84, 0xe8, 0x29, 0x34, 0xc5, 0x55, 0xf3, 0x1f, 0x8b, + 0x36, 0x57, 0x83, 0x0d, 0xa8, 0x2a, 0x54, 0x5e, 0x1a, 0xaa, 0x8c, 0x3a, 0xa0, 0x8b, 0x59, 0x03, + 0xfa, 0x8d, 0x48, 0xa3, 0x1b, 0x8c, 0x26, 0x55, 0x94, 0xbc, 0x34, 0x54, 0x19, 0x75, 0x4a, 0x2e, + 0x2d, 0xa6, 0xf5, 0x19, 0xef, 0xab, 0x5f, 0xd1, 0x00, 0x6a, 0xd1, 0x8b, 0x79, 0x83, 0xb1, 0x4c, + 0x54, 0x40, 0xd0, 0xf7, 0xda, 0xd0, 0xe5, 0xd2, 0x54, 0xa5, 0x38, 0x8d, 0xfc, 0x85, 0x1e, 0x4e, + 0x2b, 0xed, 0xc6, 0xff, 0x4c, 0x83, 0x19, 0x8e, 0x42, 0x30, 0xe1, 0x9b, 0x03, 0x76, 0x8d, 0x5c, + 0xa8, 0xa7, 0x96, 0xd7, 0xb7, 0x6c, 0x9a, 0x53, 0x72, 0x06, 0xe9, 0xe4, 0xe7, 0x71, 0x67, 0xd1, + 0xb4, 0x2d, 0xdf, 0x1e, 0x70, 0xba, 0x70, 0xe8, 0xe1, 0xa6, 0x4b, 0x58, 0x48, 0x75, 0xe0, 0xd7, + 0x53, 0x69, 0xf3, 0x18, 0xf0, 0x9b, 0xda, 0xd2, 0xea, 0x45, 0x98, 0xaf, 0xbb, 0xad, 0x78, 0x15, + 0xbb, 0xda, 0x27, 0x79, 0xab, 0xe3, 0x1c, 0x8c, 0xe1, 0x2b, 0x3c, 0x2f, 0xfd, 0xbf, 0x01, 0x00, + 0x00, 0xff, 0xff, 0xc8, 0x38, 0x73, 0xe5, 0x7e, 0x55, 0x01, 0x00, } diff --git a/vendor/github.com/libopenstorage/openstorage/api/api.pb.gw.go b/vendor/github.com/libopenstorage/openstorage/api/api.pb.gw.go index 1fbf6117ec..429fc1036f 100644 --- a/vendor/github.com/libopenstorage/openstorage/api/api.pb.gw.go +++ b/vendor/github.com/libopenstorage/openstorage/api/api.pb.gw.go @@ -9,39 +9,30 @@ It translates gRPC into RESTful JSON APIs. package api import ( - "context" "io" "net/http" - "github.com/golang/protobuf/descriptor" "github.com/golang/protobuf/proto" "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/grpc-ecosystem/grpc-gateway/utilities" + "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" ) -// Suppress "imported and not used" errors var _ codes.Code var _ io.Reader var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage -var _ = metadata.Join func request_OpenStorageAlerts_EnumerateWithFilters_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageAlertsClient, req *http.Request, pathParams map[string]string) (OpenStorageAlerts_EnumerateWithFiltersClient, runtime.ServerMetadata, error) { var protoReq SdkAlertsEnumerateWithFiltersRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -62,11 +53,7 @@ func request_OpenStorageAlerts_Delete_0(ctx context.Context, marshaler runtime.M var protoReq SdkAlertsDeleteRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -75,32 +62,11 @@ func request_OpenStorageAlerts_Delete_0(ctx context.Context, marshaler runtime.M } -func local_request_OpenStorageAlerts_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageAlertsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkAlertsDeleteRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Delete(ctx, &protoReq) - return msg, metadata, err - -} - func request_OpenStorageRole_Create_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageRoleClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq SdkRoleCreateRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -109,23 +75,6 @@ func request_OpenStorageRole_Create_0(ctx context.Context, marshaler runtime.Mar } -func local_request_OpenStorageRole_Create_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageRoleServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkRoleCreateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Create(ctx, &protoReq) - return msg, metadata, err - -} - func request_OpenStorageRole_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageRoleClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq SdkRoleEnumerateRequest var metadata runtime.ServerMetadata @@ -135,15 +84,6 @@ func request_OpenStorageRole_Enumerate_0(ctx context.Context, marshaler runtime. } -func local_request_OpenStorageRole_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageRoleServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkRoleEnumerateRequest - var metadata runtime.ServerMetadata - - msg, err := server.Enumerate(ctx, &protoReq) - return msg, metadata, err - -} - func request_OpenStorageRole_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageRoleClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq SdkRoleInspectRequest var metadata runtime.ServerMetadata @@ -171,33 +111,6 @@ func request_OpenStorageRole_Inspect_0(ctx context.Context, marshaler runtime.Ma } -func local_request_OpenStorageRole_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageRoleServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkRoleInspectRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - msg, err := server.Inspect(ctx, &protoReq) - return msg, metadata, err - -} - func request_OpenStorageRole_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageRoleClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq SdkRoleDeleteRequest var metadata runtime.ServerMetadata @@ -225,42 +138,11 @@ func request_OpenStorageRole_Delete_0(ctx context.Context, marshaler runtime.Mar } -func local_request_OpenStorageRole_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageRoleServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkRoleDeleteRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - msg, err := server.Delete(ctx, &protoReq) - return msg, metadata, err - -} - func request_OpenStorageRole_Update_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageRoleClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq SdkRoleUpdateRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -269,32 +151,11 @@ func request_OpenStorageRole_Update_0(ctx context.Context, marshaler runtime.Mar } -func local_request_OpenStorageRole_Update_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageRoleServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkRoleUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Update(ctx, &protoReq) - return msg, metadata, err - -} - func request_OpenStorageFilesystemTrim_Start_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageFilesystemTrimClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq SdkFilesystemTrimStartRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -303,23 +164,6 @@ func request_OpenStorageFilesystemTrim_Start_0(ctx context.Context, marshaler ru } -func local_request_OpenStorageFilesystemTrim_Start_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageFilesystemTrimServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkFilesystemTrimStartRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Start(ctx, &protoReq) - return msg, metadata, err - -} - var ( filter_OpenStorageFilesystemTrim_Status_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} ) @@ -328,10 +172,7 @@ func request_OpenStorageFilesystemTrim_Status_0(ctx context.Context, marshaler r var protoReq SdkFilesystemTrimStatusRequest var metadata runtime.ServerMetadata - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageFilesystemTrim_Status_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_OpenStorageFilesystemTrim_Status_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -340,22 +181,6 @@ func request_OpenStorageFilesystemTrim_Status_0(ctx context.Context, marshaler r } -func local_request_OpenStorageFilesystemTrim_Status_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageFilesystemTrimServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkFilesystemTrimStatusRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageFilesystemTrim_Status_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Status(ctx, &protoReq) - return msg, metadata, err - -} - func request_OpenStorageFilesystemTrim_AutoFSTrimStatus_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageFilesystemTrimClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq SdkAutoFSTrimStatusRequest var metadata runtime.ServerMetadata @@ -365,15 +190,6 @@ func request_OpenStorageFilesystemTrim_AutoFSTrimStatus_0(ctx context.Context, m } -func local_request_OpenStorageFilesystemTrim_AutoFSTrimStatus_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageFilesystemTrimServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkAutoFSTrimStatusRequest - var metadata runtime.ServerMetadata - - msg, err := server.AutoFSTrimStatus(ctx, &protoReq) - return msg, metadata, err - -} - func request_OpenStorageFilesystemTrim_AutoFSTrimUsage_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageFilesystemTrimClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq SdkAutoFSTrimUsageRequest var metadata runtime.ServerMetadata @@ -383,24 +199,11 @@ func request_OpenStorageFilesystemTrim_AutoFSTrimUsage_0(ctx context.Context, ma } -func local_request_OpenStorageFilesystemTrim_AutoFSTrimUsage_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageFilesystemTrimServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkAutoFSTrimUsageRequest - var metadata runtime.ServerMetadata - - msg, err := server.AutoFSTrimUsage(ctx, &protoReq) - return msg, metadata, err - -} - func request_OpenStorageFilesystemTrim_Stop_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageFilesystemTrimClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq SdkFilesystemTrimStopRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -409,32 +212,11 @@ func request_OpenStorageFilesystemTrim_Stop_0(ctx context.Context, marshaler run } -func local_request_OpenStorageFilesystemTrim_Stop_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageFilesystemTrimServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkFilesystemTrimStopRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Stop(ctx, &protoReq) - return msg, metadata, err - -} - func request_OpenStorageFilesystemTrim_AutoFSTrimPush_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageFilesystemTrimClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq SdkAutoFSTrimPushRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -443,32 +225,11 @@ func request_OpenStorageFilesystemTrim_AutoFSTrimPush_0(ctx context.Context, mar } -func local_request_OpenStorageFilesystemTrim_AutoFSTrimPush_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageFilesystemTrimServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkAutoFSTrimPushRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.AutoFSTrimPush(ctx, &protoReq) - return msg, metadata, err - -} - func request_OpenStorageFilesystemTrim_AutoFSTrimPop_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageFilesystemTrimClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq SdkAutoFSTrimPopRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -477,32 +238,11 @@ func request_OpenStorageFilesystemTrim_AutoFSTrimPop_0(ctx context.Context, mars } -func local_request_OpenStorageFilesystemTrim_AutoFSTrimPop_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageFilesystemTrimServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkAutoFSTrimPopRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.AutoFSTrimPop(ctx, &protoReq) - return msg, metadata, err - -} - func request_OpenStorageFilesystemCheck_Start_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageFilesystemCheckClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq SdkFilesystemCheckStartRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -511,23 +251,6 @@ func request_OpenStorageFilesystemCheck_Start_0(ctx context.Context, marshaler r } -func local_request_OpenStorageFilesystemCheck_Start_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageFilesystemCheckServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkFilesystemCheckStartRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Start(ctx, &protoReq) - return msg, metadata, err - -} - var ( filter_OpenStorageFilesystemCheck_Status_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} ) @@ -536,10 +259,7 @@ func request_OpenStorageFilesystemCheck_Status_0(ctx context.Context, marshaler var protoReq SdkFilesystemCheckStatusRequest var metadata runtime.ServerMetadata - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageFilesystemCheck_Status_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_OpenStorageFilesystemCheck_Status_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -548,252 +268,182 @@ func request_OpenStorageFilesystemCheck_Status_0(ctx context.Context, marshaler } -func local_request_OpenStorageFilesystemCheck_Status_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageFilesystemCheckServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkFilesystemCheckStatusRequest +func request_OpenStorageFilesystemCheck_Stop_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageFilesystemCheckClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkFilesystemCheckStopRequest var metadata runtime.ServerMetadata - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageFilesystemCheck_Status_0); err != nil { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.Status(ctx, &protoReq) + msg, err := client.Stop(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageFilesystemCheck_Stop_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageFilesystemCheckClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkFilesystemCheckStopRequest +func request_OpenStorageIdentity_Capabilities_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageIdentityClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkIdentityCapabilitiesRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Stop(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.Capabilities(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageFilesystemCheck_Stop_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageFilesystemCheckServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkFilesystemCheckStopRequest +func request_OpenStorageIdentity_Version_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageIdentityClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkIdentityVersionRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Stop(ctx, &protoReq) + msg, err := client.Version(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -var ( - filter_OpenStorageFilesystemCheck_ListSnapshots_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) - -func request_OpenStorageFilesystemCheck_ListSnapshots_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageFilesystemCheckClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkFilesystemCheckListSnapshotsRequest +func request_OpenStorageCluster_InspectCurrent_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageClusterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkClusterInspectCurrentRequest var metadata runtime.ServerMetadata - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageFilesystemCheck_ListSnapshots_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ListSnapshots(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.InspectCurrent(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageFilesystemCheck_ListSnapshots_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageFilesystemCheckServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkFilesystemCheckListSnapshotsRequest +func request_OpenStorageClusterPair_Create_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageClusterPairClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkClusterPairCreateRequest var metadata runtime.ServerMetadata - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageFilesystemCheck_ListSnapshots_0); err != nil { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListSnapshots(ctx, &protoReq) + msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageFilesystemCheck_DeleteSnapshots_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageFilesystemCheckClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkFilesystemCheckDeleteSnapshotsRequest +func request_OpenStorageClusterPair_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageClusterPairClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkClusterPairInspectRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + + protoReq.Id, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) } - msg, err := client.DeleteSnapshots(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.Inspect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageFilesystemCheck_DeleteSnapshots_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageFilesystemCheckServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkFilesystemCheckDeleteSnapshotsRequest +func request_OpenStorageClusterPair_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageClusterPairClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkClusterPairEnumerateRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.DeleteSnapshots(ctx, &protoReq) + msg, err := client.Enumerate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -var ( - filter_OpenStorageFilesystemCheck_ListVolumes_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) - -func request_OpenStorageFilesystemCheck_ListVolumes_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageFilesystemCheckClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkFilesystemCheckListVolumesRequest +func request_OpenStorageClusterPair_GetToken_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageClusterPairClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkClusterPairGetTokenRequest var metadata runtime.ServerMetadata - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageFilesystemCheck_ListVolumes_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ListVolumes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.GetToken(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageFilesystemCheck_ListVolumes_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageFilesystemCheckServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkFilesystemCheckListVolumesRequest +func request_OpenStorageClusterPair_ResetToken_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageClusterPairClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkClusterPairResetTokenRequest var metadata runtime.ServerMetadata - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageFilesystemCheck_ListVolumes_0); err != nil { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ListVolumes(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageIdentity_Capabilities_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageIdentityClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkIdentityCapabilitiesRequest - var metadata runtime.ServerMetadata - - msg, err := client.Capabilities(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.ResetToken(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageIdentity_Capabilities_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageIdentityServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkIdentityCapabilitiesRequest +func request_OpenStorageClusterPair_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageClusterPairClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkClusterPairDeleteRequest var metadata runtime.ServerMetadata - msg, err := server.Capabilities(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageIdentity_Version_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageIdentityClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkIdentityVersionRequest - var metadata runtime.ServerMetadata + var ( + val string + ok bool + err error + _ = err + ) - msg, err := client.Version(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err + val, ok = pathParams["cluster_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_id") + } -} + protoReq.ClusterId, err = runtime.String(val) -func local_request_OpenStorageIdentity_Version_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageIdentityServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkIdentityVersionRequest - var metadata runtime.ServerMetadata + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster_id", err) + } - msg, err := server.Version(ctx, &protoReq) + msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageCluster_InspectCurrent_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageClusterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkClusterInspectCurrentRequest +func request_OpenStorageClusterDomains_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageClusterDomainsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkClusterDomainsEnumerateRequest var metadata runtime.ServerMetadata - msg, err := client.InspectCurrent(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.Enumerate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageCluster_InspectCurrent_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageClusterServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkClusterInspectCurrentRequest +func request_OpenStorageClusterDomains_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageClusterDomainsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkClusterDomainInspectRequest var metadata runtime.ServerMetadata - msg, err := server.InspectCurrent(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageClusterPair_Create_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageClusterPairClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkClusterPairCreateRequest - var metadata runtime.ServerMetadata + var ( + val string + ok bool + err error + _ = err + ) - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + val, ok = pathParams["cluster_domain_name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_domain_name") } - msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageClusterPair_Create_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageClusterPairServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkClusterPairCreateRequest - var metadata runtime.ServerMetadata + protoReq.ClusterDomainName, err = runtime.String(val) - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster_domain_name", err) } - msg, err := server.Create(ctx, &protoReq) + msg, err := client.Inspect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageClusterPair_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageClusterPairClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkClusterPairInspectRequest +func request_OpenStorageClusterDomains_Activate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageClusterDomainsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkClusterDomainActivateRequest var metadata runtime.ServerMetadata var ( @@ -803,24 +453,24 @@ func request_OpenStorageClusterPair_Inspect_0(ctx context.Context, marshaler run _ = err ) - val, ok = pathParams["id"] + val, ok = pathParams["cluster_domain_name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_domain_name") } - protoReq.Id, err = runtime.String(val) + protoReq.ClusterDomainName, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster_domain_name", err) } - msg, err := client.Inspect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.Activate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageClusterPair_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageClusterPairServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkClusterPairInspectRequest +func request_OpenStorageClusterDomains_Deactivate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageClusterDomainsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkClusterDomainDeactivateRequest var metadata runtime.ServerMetadata var ( @@ -830,94 +480,80 @@ func local_request_OpenStorageClusterPair_Inspect_0(ctx context.Context, marshal _ = err ) - val, ok = pathParams["id"] + val, ok = pathParams["cluster_domain_name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_domain_name") } - protoReq.Id, err = runtime.String(val) + protoReq.ClusterDomainName, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster_domain_name", err) } - msg, err := server.Inspect(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageClusterPair_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageClusterPairClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkClusterPairEnumerateRequest - var metadata runtime.ServerMetadata - - msg, err := client.Enumerate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageClusterPair_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageClusterPairServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkClusterPairEnumerateRequest - var metadata runtime.ServerMetadata - - msg, err := server.Enumerate(ctx, &protoReq) + msg, err := client.Deactivate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageClusterPair_GetToken_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageClusterPairClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkClusterPairGetTokenRequest - var metadata runtime.ServerMetadata - - msg, err := client.GetToken(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} +var ( + filter_OpenStoragePool_Resize_0 = &utilities.DoubleArray{Encoding: map[string]int{"uuid": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) -func local_request_OpenStorageClusterPair_GetToken_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageClusterPairServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkClusterPairGetTokenRequest +func request_OpenStoragePool_Resize_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePoolClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkStoragePoolResizeRequest var metadata runtime.ServerMetadata - msg, err := server.GetToken(ctx, &protoReq) - return msg, metadata, err + var ( + val string + ok bool + err error + _ = err + ) -} + val, ok = pathParams["uuid"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "uuid") + } -func request_OpenStorageClusterPair_ResetToken_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageClusterPairClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkClusterPairResetTokenRequest - var metadata runtime.ServerMetadata + protoReq.Uuid, err = runtime.String(val) - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "uuid", err) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + + if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_OpenStoragePool_Resize_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.ResetToken(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.Resize(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageClusterPair_ResetToken_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageClusterPairServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkClusterPairResetTokenRequest +var ( + filter_OpenStoragePool_Rebalance_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_OpenStoragePool_Rebalance_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePoolClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkStorageRebalanceRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_OpenStoragePool_Rebalance_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.ResetToken(ctx, &protoReq) + msg, err := client.Rebalance(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageClusterPair_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageClusterPairClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkClusterPairDeleteRequest +var ( + filter_OpenStoragePool_UpdateRebalanceJobState_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_OpenStoragePool_UpdateRebalanceJobState_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePoolClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkUpdateRebalanceJobRequest var metadata runtime.ServerMetadata var ( @@ -927,24 +563,28 @@ func request_OpenStorageClusterPair_Delete_0(ctx context.Context, marshaler runt _ = err ) - val, ok = pathParams["cluster_id"] + val, ok = pathParams["id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") } - protoReq.ClusterId, err = runtime.String(val) + protoReq.Id, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster_id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) } - msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_OpenStoragePool_UpdateRebalanceJobState_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.UpdateRebalanceJobState(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageClusterPair_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageClusterPairServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkClusterPairDeleteRequest +func request_OpenStoragePool_GetRebalanceJobStatus_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePoolClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkGetRebalanceJobStatusRequest var metadata runtime.ServerMetadata var ( @@ -954,44 +594,52 @@ func local_request_OpenStorageClusterPair_Delete_0(ctx context.Context, marshale _ = err ) - val, ok = pathParams["cluster_id"] + val, ok = pathParams["id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") } - protoReq.ClusterId, err = runtime.String(val) + protoReq.Id, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster_id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) } - msg, err := server.Delete(ctx, &protoReq) + msg, err := client.GetRebalanceJobStatus(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageClusterDomains_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageClusterDomainsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkClusterDomainsEnumerateRequest +func request_OpenStoragePool_EnumerateRebalanceJobs_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePoolClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkEnumerateRebalanceJobsRequest var metadata runtime.ServerMetadata - msg, err := client.Enumerate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.EnumerateRebalanceJobs(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageClusterDomains_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageClusterDomainsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkClusterDomainsEnumerateRequest +func request_OpenStorageDiags_Collect_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageDiagsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkDiagsCollectRequest var metadata runtime.ServerMetadata - msg, err := server.Enumerate(ctx, &protoReq) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.Collect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageClusterDomains_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageClusterDomainsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkClusterDomainInspectRequest +func request_OpenStorageJob_Update_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageJobClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkUpdateJobRequest var metadata runtime.ServerMetadata + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -999,24 +647,28 @@ func request_OpenStorageClusterDomains_Inspect_0(ctx context.Context, marshaler _ = err ) - val, ok = pathParams["cluster_domain_name"] + val, ok = pathParams["id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_domain_name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") } - protoReq.ClusterDomainName, err = runtime.String(val) + protoReq.Id, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster_domain_name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) } - msg, err := client.Inspect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageClusterDomains_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageClusterDomainsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkClusterDomainInspectRequest +var ( + filter_OpenStorageJob_GetStatus_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_OpenStorageJob_GetStatus_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageJobClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkGetJobStatusRequest var metadata runtime.ServerMetadata var ( @@ -1026,24 +678,45 @@ func local_request_OpenStorageClusterDomains_Inspect_0(ctx context.Context, mars _ = err ) - val, ok = pathParams["cluster_domain_name"] + val, ok = pathParams["id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_domain_name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") } - protoReq.ClusterDomainName, err = runtime.String(val) + protoReq.Id, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster_domain_name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) } - msg, err := server.Inspect(ctx, &protoReq) - return msg, metadata, err + if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_OpenStorageJob_GetStatus_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetStatus(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err } -func request_OpenStorageClusterDomains_Activate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageClusterDomainsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkClusterDomainActivateRequest +var ( + filter_OpenStorageJob_Enumerate_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_OpenStorageJob_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageJobClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkEnumerateJobsRequest + var metadata runtime.ServerMetadata + + if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_OpenStorageJob_Enumerate_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.Enumerate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_OpenStorageNode_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageNodeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkNodeInspectRequest var metadata runtime.ServerMetadata var ( @@ -1053,51 +726,51 @@ func request_OpenStorageClusterDomains_Activate_0(ctx context.Context, marshaler _ = err ) - val, ok = pathParams["cluster_domain_name"] + val, ok = pathParams["node_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_domain_name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") } - protoReq.ClusterDomainName, err = runtime.String(val) + protoReq.NodeId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster_domain_name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) } - msg, err := client.Activate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.Inspect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageClusterDomains_Activate_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageClusterDomainsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkClusterDomainActivateRequest +func request_OpenStorageNode_InspectCurrent_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageNodeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkNodeInspectCurrentRequest var metadata runtime.ServerMetadata - var ( - val string - ok bool - err error - _ = err - ) + msg, err := client.InspectCurrent(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err - val, ok = pathParams["cluster_domain_name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_domain_name") - } +} - protoReq.ClusterDomainName, err = runtime.String(val) +func request_OpenStorageNode_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageNodeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkNodeEnumerateRequest + var metadata runtime.ServerMetadata - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster_domain_name", err) - } + msg, err := client.Enumerate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_OpenStorageNode_EnumerateWithFilters_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageNodeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkNodeEnumerateWithFiltersRequest + var metadata runtime.ServerMetadata - msg, err := server.Activate(ctx, &protoReq) + msg, err := client.EnumerateWithFilters(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageClusterDomains_Deactivate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageClusterDomainsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkClusterDomainDeactivateRequest +func request_OpenStorageNode_VolumeUsageByNode_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageNodeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkNodeVolumeUsageByNodeRequest var metadata runtime.ServerMetadata var ( @@ -1107,26 +780,30 @@ func request_OpenStorageClusterDomains_Deactivate_0(ctx context.Context, marshal _ = err ) - val, ok = pathParams["cluster_domain_name"] + val, ok = pathParams["node_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_domain_name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") } - protoReq.ClusterDomainName, err = runtime.String(val) + protoReq.NodeId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster_domain_name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) } - msg, err := client.Deactivate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.VolumeUsageByNode(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageClusterDomains_Deactivate_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageClusterDomainsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkClusterDomainDeactivateRequest +func request_OpenStorageNode_DrainAttachments_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageNodeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkNodeDrainAttachmentsRequest var metadata runtime.ServerMetadata + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -1134,30 +811,30 @@ func local_request_OpenStorageClusterDomains_Deactivate_0(ctx context.Context, m _ = err ) - val, ok = pathParams["cluster_domain_name"] + val, ok = pathParams["node_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cluster_domain_name") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") } - protoReq.ClusterDomainName, err = runtime.String(val) + protoReq.NodeId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cluster_domain_name", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) } - msg, err := server.Deactivate(ctx, &protoReq) + msg, err := client.DrainAttachments(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -var ( - filter_OpenStoragePool_Resize_0 = &utilities.DoubleArray{Encoding: map[string]int{"uuid": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} -) - -func request_OpenStoragePool_Resize_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePoolClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkStoragePoolResizeRequest +func request_OpenStorageNode_CordonAttachments_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageNodeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkNodeCordonAttachmentsRequest var metadata runtime.ServerMetadata + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -1165,33 +842,30 @@ func request_OpenStoragePool_Resize_0(ctx context.Context, marshaler runtime.Mar _ = err ) - val, ok = pathParams["uuid"] + val, ok = pathParams["node_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "uuid") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") } - protoReq.Uuid, err = runtime.String(val) + protoReq.NodeId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "uuid", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStoragePool_Resize_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) } - msg, err := client.Resize(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.CordonAttachments(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStoragePool_Resize_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStoragePoolServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkStoragePoolResizeRequest +func request_OpenStorageNode_UncordonAttachments_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageNodeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkNodeUncordonAttachmentsRequest var metadata runtime.ServerMetadata + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -1199,71 +873,67 @@ func local_request_OpenStoragePool_Resize_0(ctx context.Context, marshaler runti _ = err ) - val, ok = pathParams["uuid"] + val, ok = pathParams["node_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "uuid") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") } - protoReq.Uuid, err = runtime.String(val) + protoReq.NodeId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "uuid", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStoragePool_Resize_0); err != nil { + msg, err := client.UncordonAttachments(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_OpenStorageNode_VolumeBytesUsedByNode_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageNodeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkVolumeBytesUsedRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.Resize(ctx, &protoReq) + msg, err := client.VolumeBytesUsedByNode(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -var ( - filter_OpenStoragePool_Rebalance_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) - -func request_OpenStoragePool_Rebalance_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePoolClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkStorageRebalanceRequest +func request_OpenStorageNode_FilterNonOverlappingNodes_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageNodeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkFilterNonOverlappingNodesRequest var metadata runtime.ServerMetadata - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStoragePool_Rebalance_0); err != nil { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.Rebalance(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.FilterNonOverlappingNodes(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStoragePool_Rebalance_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStoragePoolServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkStorageRebalanceRequest +func request_OpenStorageBucket_Create_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageBucketClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq BucketCreateRequest var metadata runtime.ServerMetadata - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStoragePool_Rebalance_0); err != nil { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.Rebalance(ctx, &protoReq) + msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } var ( - filter_OpenStoragePool_UpdateRebalanceJobState_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} + filter_OpenStorageBucket_Delete_0 = &utilities.DoubleArray{Encoding: map[string]int{"bucket_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} ) -func request_OpenStoragePool_UpdateRebalanceJobState_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePoolClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkUpdateRebalanceJobRequest +func request_OpenStorageBucket_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageBucketClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq BucketDeleteRequest var metadata runtime.ServerMetadata var ( @@ -1273,33 +943,34 @@ func request_OpenStoragePool_UpdateRebalanceJobState_0(ctx context.Context, mars _ = err ) - val, ok = pathParams["id"] + val, ok = pathParams["bucket_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bucket_id") } - protoReq.Id, err = runtime.String(val) + protoReq.BucketId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bucket_id", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStoragePool_UpdateRebalanceJobState_0); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_OpenStorageBucket_Delete_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.UpdateRebalanceJobState(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStoragePool_UpdateRebalanceJobState_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStoragePoolServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkUpdateRebalanceJobRequest +func request_OpenStorageBucket_GrantAccess_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageBucketClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq BucketGrantAccessRequest var metadata runtime.ServerMetadata + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -1307,33 +978,30 @@ func local_request_OpenStoragePool_UpdateRebalanceJobState_0(ctx context.Context _ = err ) - val, ok = pathParams["id"] + val, ok = pathParams["bucket_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bucket_id") } - protoReq.Id, err = runtime.String(val) + protoReq.BucketId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStoragePool_UpdateRebalanceJobState_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bucket_id", err) } - msg, err := server.UpdateRebalanceJobState(ctx, &protoReq) + msg, err := client.GrantAccess(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStoragePool_GetRebalanceJobStatus_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePoolClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkGetRebalanceJobStatusRequest +func request_OpenStorageBucket_RevokeAccess_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageBucketClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq BucketRevokeAccessRequest var metadata runtime.ServerMetadata + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -1341,24 +1009,50 @@ func request_OpenStoragePool_GetRebalanceJobStatus_0(ctx context.Context, marsha _ = err ) - val, ok = pathParams["id"] + val, ok = pathParams["bucket_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bucket_id") } - protoReq.Id, err = runtime.String(val) + protoReq.BucketId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bucket_id", err) } - msg, err := client.GetRebalanceJobStatus(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.RevokeAccess(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStoragePool_GetRebalanceJobStatus_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStoragePoolServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkGetRebalanceJobStatusRequest +func request_OpenStorageVolume_Create_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkVolumeCreateRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_OpenStorageVolume_Clone_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkVolumeCloneRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.Clone(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_OpenStorageVolume_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkVolumeDeleteRequest var metadata runtime.ServerMetadata var ( @@ -1368,155 +1062,75 @@ func local_request_OpenStoragePool_GetRebalanceJobStatus_0(ctx context.Context, _ = err ) - val, ok = pathParams["id"] + val, ok = pathParams["volume_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "volume_id") } - protoReq.Id, err = runtime.String(val) + protoReq.VolumeId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "volume_id", err) } - msg, err := server.GetRebalanceJobStatus(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStoragePool_EnumerateRebalanceJobs_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePoolClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkEnumerateRebalanceJobsRequest - var metadata runtime.ServerMetadata - - msg, err := client.EnumerateRebalanceJobs(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStoragePool_EnumerateRebalanceJobs_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStoragePoolServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkEnumerateRebalanceJobsRequest - var metadata runtime.ServerMetadata - - msg, err := server.EnumerateRebalanceJobs(ctx, &protoReq) + msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } var ( - filter_OpenStoragePool_CreateRebalanceSchedule_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} + filter_OpenStorageVolume_Inspect_0 = &utilities.DoubleArray{Encoding: map[string]int{"volume_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} ) -func request_OpenStoragePool_CreateRebalanceSchedule_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePoolClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCreateRebalanceScheduleRequest +func request_OpenStorageVolume_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkVolumeInspectRequest var metadata runtime.ServerMetadata - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStoragePool_CreateRebalanceSchedule_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.CreateRebalanceSchedule(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStoragePool_CreateRebalanceSchedule_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStoragePoolServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCreateRebalanceScheduleRequest - var metadata runtime.ServerMetadata + var ( + val string + ok bool + err error + _ = err + ) - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStoragePool_CreateRebalanceSchedule_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + val, ok = pathParams["volume_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "volume_id") } - msg, err := server.CreateRebalanceSchedule(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStoragePool_GetRebalanceSchedule_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePoolClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkGetRebalanceScheduleRequest - var metadata runtime.ServerMetadata - - msg, err := client.GetRebalanceSchedule(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStoragePool_GetRebalanceSchedule_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStoragePoolServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkGetRebalanceScheduleRequest - var metadata runtime.ServerMetadata - - msg, err := server.GetRebalanceSchedule(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStoragePool_DeleteRebalanceSchedule_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePoolClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkDeleteRebalanceScheduleRequest - var metadata runtime.ServerMetadata - - msg, err := client.DeleteRebalanceSchedule(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStoragePool_DeleteRebalanceSchedule_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStoragePoolServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkDeleteRebalanceScheduleRequest - var metadata runtime.ServerMetadata - - msg, err := server.DeleteRebalanceSchedule(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageDiags_Collect_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageDiagsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkDiagsCollectRequest - var metadata runtime.ServerMetadata + protoReq.VolumeId, err = runtime.String(val) - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "volume_id", err) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + + if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_OpenStorageVolume_Inspect_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.Collect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.Inspect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageDiags_Collect_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageDiagsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkDiagsCollectRequest +func request_OpenStorageVolume_InspectWithFilters_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkVolumeInspectWithFiltersRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.Collect(ctx, &protoReq) + msg, err := client.InspectWithFilters(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageJob_Update_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageJobClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkUpdateJobRequest +func request_OpenStorageVolume_Update_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkVolumeUpdateRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1527,15 +1141,15 @@ func request_OpenStorageJob_Update_0(ctx context.Context, marshaler runtime.Mars _ = err ) - val, ok = pathParams["id"] + val, ok = pathParams["volume_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "volume_id") } - protoReq.Id, err = runtime.String(val) + protoReq.VolumeId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "volume_id", err) } msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) @@ -1543,17 +1157,13 @@ func request_OpenStorageJob_Update_0(ctx context.Context, marshaler runtime.Mars } -func local_request_OpenStorageJob_Update_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageJobServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkUpdateJobRequest - var metadata runtime.ServerMetadata +var ( + filter_OpenStorageVolume_Stats_0 = &utilities.DoubleArray{Encoding: map[string]int{"volume_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } +func request_OpenStorageVolume_Stats_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkVolumeStatsRequest + var metadata runtime.ServerMetadata var ( val string @@ -1562,28 +1172,28 @@ func local_request_OpenStorageJob_Update_0(ctx context.Context, marshaler runtim _ = err ) - val, ok = pathParams["id"] + val, ok = pathParams["volume_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "volume_id") } - protoReq.Id, err = runtime.String(val) + protoReq.VolumeId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "volume_id", err) + } + + if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_OpenStorageVolume_Stats_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.Update(ctx, &protoReq) + msg, err := client.Stats(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -var ( - filter_OpenStorageJob_GetStatus_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} -) - -func request_OpenStorageJob_GetStatus_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageJobClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkGetJobStatusRequest +func request_OpenStorageVolume_CapacityUsage_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkVolumeCapacityUsageRequest var metadata runtime.ServerMetadata var ( @@ -1593,103 +1203,95 @@ func request_OpenStorageJob_GetStatus_0(ctx context.Context, marshaler runtime.M _ = err ) - val, ok = pathParams["id"] + val, ok = pathParams["volume_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "volume_id") } - protoReq.Id, err = runtime.String(val) + protoReq.VolumeId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageJob_GetStatus_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "volume_id", err) } - msg, err := client.GetStatus(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.CapacityUsage(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageJob_GetStatus_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageJobServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkGetJobStatusRequest +func request_OpenStorageVolume_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkVolumeEnumerateRequest var metadata runtime.ServerMetadata - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") - } + msg, err := client.Enumerate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err - protoReq.Id, err = runtime.String(val) +} - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) - } +func request_OpenStorageVolume_EnumerateWithFilters_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkVolumeEnumerateWithFiltersRequest + var metadata runtime.ServerMetadata - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageJob_GetStatus_0); err != nil { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.GetStatus(ctx, &protoReq) + msg, err := client.EnumerateWithFilters(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -var ( - filter_OpenStorageJob_Enumerate_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) - -func request_OpenStorageJob_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageJobClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkEnumerateJobsRequest +func request_OpenStorageVolume_SnapshotCreate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkVolumeSnapshotCreateRequest var metadata runtime.ServerMetadata - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageJob_Enumerate_0); err != nil { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.Enumerate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.SnapshotCreate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageJob_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageJobServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkEnumerateJobsRequest +func request_OpenStorageVolume_SnapshotRestore_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkVolumeSnapshotRestoreRequest var metadata runtime.ServerMetadata - if err := req.ParseForm(); err != nil { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageJob_Enumerate_0); err != nil { + + msg, err := client.SnapshotRestore(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +var ( + filter_OpenStorageVolume_SnapshotEnumerate_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_OpenStorageVolume_SnapshotEnumerate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkVolumeSnapshotEnumerateRequest + var metadata runtime.ServerMetadata + + if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_OpenStorageVolume_SnapshotEnumerate_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.Enumerate(ctx, &protoReq) + msg, err := client.SnapshotEnumerate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageNode_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageNodeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkNodeInspectRequest +func request_OpenStorageVolume_SnapshotEnumerateWithFilters_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkVolumeSnapshotEnumerateWithFiltersRequest var metadata runtime.ServerMetadata + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -1697,26 +1299,30 @@ func request_OpenStorageNode_Inspect_0(ctx context.Context, marshaler runtime.Ma _ = err ) - val, ok = pathParams["node_id"] + val, ok = pathParams["volume_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "volume_id") } - protoReq.NodeId, err = runtime.String(val) + protoReq.VolumeId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "volume_id", err) } - msg, err := client.Inspect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.SnapshotEnumerateWithFilters(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageNode_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageNodeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkNodeInspectRequest +func request_OpenStorageVolume_SnapshotScheduleUpdate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkVolumeSnapshotScheduleUpdateRequest var metadata runtime.ServerMetadata + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -1724,105 +1330,153 @@ func local_request_OpenStorageNode_Inspect_0(ctx context.Context, marshaler runt _ = err ) - val, ok = pathParams["node_id"] + val, ok = pathParams["volume_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "volume_id") } - protoReq.NodeId, err = runtime.String(val) + protoReq.VolumeId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "volume_id", err) } - msg, err := server.Inspect(ctx, &protoReq) + msg, err := client.SnapshotScheduleUpdate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageNode_InspectCurrent_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageNodeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkNodeInspectCurrentRequest +func request_OpenStorageVolume_VolumeCatalog_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkVolumeCatalogRequest var metadata runtime.ServerMetadata - msg, err := client.InspectCurrent(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.VolumeCatalog(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageNode_InspectCurrent_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageNodeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkNodeInspectCurrentRequest +func request_OpenStorageWatch_Watch_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageWatchClient, req *http.Request, pathParams map[string]string) (OpenStorageWatch_WatchClient, runtime.ServerMetadata, error) { + var protoReq SdkWatchRequest var metadata runtime.ServerMetadata - msg, err := server.InspectCurrent(ctx, &protoReq) - return msg, metadata, err + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + stream, err := client.Watch(ctx, &protoReq) + if err != nil { + return nil, metadata, err + } + header, err := stream.Header() + if err != nil { + return nil, metadata, err + } + metadata.HeaderMD = header + return stream, metadata, nil } -func request_OpenStorageNode_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageNodeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkNodeEnumerateRequest - var metadata runtime.ServerMetadata +func request_OpenStorageMountAttach_Attach_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageMountAttachClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkVolumeAttachRequest + var metadata runtime.ServerMetadata - msg, err := client.Enumerate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.Attach(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageNode_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageNodeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkNodeEnumerateRequest +func request_OpenStorageMountAttach_Detach_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageMountAttachClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkVolumeDetachRequest var metadata runtime.ServerMetadata - msg, err := server.Enumerate(ctx, &protoReq) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.Detach(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageNode_EnumerateWithFilters_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageNodeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkNodeEnumerateWithFiltersRequest +func request_OpenStorageMountAttach_Mount_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageMountAttachClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkVolumeMountRequest var metadata runtime.ServerMetadata - msg, err := client.EnumerateWithFilters(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.Mount(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageNode_EnumerateWithFilters_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageNodeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkNodeEnumerateWithFiltersRequest +func request_OpenStorageMountAttach_Unmount_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageMountAttachClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkVolumeUnmountRequest var metadata runtime.ServerMetadata - msg, err := server.EnumerateWithFilters(ctx, &protoReq) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.Unmount(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageNode_VolumeUsageByNode_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageNodeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkNodeVolumeUsageByNodeRequest +func request_OpenStorageMigrate_Start_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageMigrateClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCloudMigrateStartRequest var metadata runtime.ServerMetadata - var ( - val string - ok bool - err error - _ = err - ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } - val, ok = pathParams["node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") + msg, err := client.Start(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_OpenStorageMigrate_Cancel_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageMigrateClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCloudMigrateCancelRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - protoReq.NodeId, err = runtime.String(val) + msg, err := client.Cancel(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) +} + +var ( + filter_OpenStorageMigrate_Status_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_OpenStorageMigrate_Status_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageMigrateClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCloudMigrateStatusRequest + var metadata runtime.ServerMetadata + + if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_OpenStorageMigrate_Status_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.VolumeUsageByNode(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.Status(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageNode_VolumeUsageByNode_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageNodeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkNodeVolumeUsageByNodeRequest +func request_OpenStorageObjectstore_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageObjectstoreClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkObjectstoreInspectRequest var metadata runtime.ServerMetadata var ( @@ -1832,51 +1486,37 @@ func local_request_OpenStorageNode_VolumeUsageByNode_0(ctx context.Context, mars _ = err ) - val, ok = pathParams["node_id"] + val, ok = pathParams["objectstore_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "objectstore_id") } - protoReq.NodeId, err = runtime.String(val) + protoReq.ObjectstoreId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "objectstore_id", err) } - msg, err := server.VolumeUsageByNode(ctx, &protoReq) + msg, err := client.Inspect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageNode_RelaxedReclaimPurge_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageNodeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkNodeRelaxedReclaimPurgeRequest +func request_OpenStorageObjectstore_Create_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageObjectstoreClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkObjectstoreCreateRequest var metadata runtime.ServerMetadata - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["node_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") - } - - protoReq.NodeId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.RelaxedReclaimPurge(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageNode_RelaxedReclaimPurge_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageNodeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkNodeRelaxedReclaimPurgeRequest +func request_OpenStorageObjectstore_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageObjectstoreClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkObjectstoreDeleteRequest var metadata runtime.ServerMetadata var ( @@ -1886,31 +1526,27 @@ func local_request_OpenStorageNode_RelaxedReclaimPurge_0(ctx context.Context, ma _ = err ) - val, ok = pathParams["node_id"] + val, ok = pathParams["objectstore_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "objectstore_id") } - protoReq.NodeId, err = runtime.String(val) + protoReq.ObjectstoreId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "objectstore_id", err) } - msg, err := server.RelaxedReclaimPurge(ctx, &protoReq) + msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageNode_DrainAttachments_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageNodeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkNodeDrainAttachmentsRequest +func request_OpenStorageObjectstore_Update_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageObjectstoreClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkObjectstoreUpdateRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1921,31 +1557,40 @@ func request_OpenStorageNode_DrainAttachments_0(ctx context.Context, marshaler r _ = err ) - val, ok = pathParams["node_id"] + val, ok = pathParams["objectstore_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "objectstore_id") } - protoReq.NodeId, err = runtime.String(val) + protoReq.ObjectstoreId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "objectstore_id", err) } - msg, err := client.DrainAttachments(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageNode_DrainAttachments_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageNodeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkNodeDrainAttachmentsRequest +func request_OpenStorageCredentials_Create_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCredentialsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCredentialCreateRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + + msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_OpenStorageCredentials_Update_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCredentialsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCredentialUpdateRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1956,33 +1601,34 @@ func local_request_OpenStorageNode_DrainAttachments_0(ctx context.Context, marsh _ = err ) - val, ok = pathParams["node_id"] + val, ok = pathParams["credential_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "credential_id") } - protoReq.NodeId, err = runtime.String(val) + protoReq.CredentialId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "credential_id", err) } - msg, err := server.DrainAttachments(ctx, &protoReq) + msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageNode_CordonAttachments_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageNodeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkNodeCordonAttachmentsRequest +func request_OpenStorageCredentials_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCredentialsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCredentialEnumerateRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } + msg, err := client.Enumerate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_OpenStorageCredentials_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCredentialsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCredentialInspectRequest + var metadata runtime.ServerMetadata var ( val string @@ -1991,34 +1637,26 @@ func request_OpenStorageNode_CordonAttachments_0(ctx context.Context, marshaler _ = err ) - val, ok = pathParams["node_id"] + val, ok = pathParams["credential_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "credential_id") } - protoReq.NodeId, err = runtime.String(val) + protoReq.CredentialId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "credential_id", err) } - msg, err := client.CordonAttachments(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.Inspect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageNode_CordonAttachments_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageNodeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkNodeCordonAttachmentsRequest +func request_OpenStorageCredentials_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCredentialsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCredentialDeleteRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - var ( val string ok bool @@ -2026,34 +1664,26 @@ func local_request_OpenStorageNode_CordonAttachments_0(ctx context.Context, mars _ = err ) - val, ok = pathParams["node_id"] + val, ok = pathParams["credential_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "credential_id") } - protoReq.NodeId, err = runtime.String(val) + protoReq.CredentialId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "credential_id", err) } - msg, err := server.CordonAttachments(ctx, &protoReq) + msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageNode_UncordonAttachments_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageNodeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkNodeUncordonAttachmentsRequest +func request_OpenStorageCredentials_Validate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCredentialsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCredentialValidateRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - var ( val string ok bool @@ -2061,34 +1691,26 @@ func request_OpenStorageNode_UncordonAttachments_0(ctx context.Context, marshale _ = err ) - val, ok = pathParams["node_id"] + val, ok = pathParams["credential_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "credential_id") } - protoReq.NodeId, err = runtime.String(val) + protoReq.CredentialId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "credential_id", err) } - msg, err := client.UncordonAttachments(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.Validate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageNode_UncordonAttachments_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageNodeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkNodeUncordonAttachmentsRequest +func request_OpenStorageCredentials_DeleteReferences_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCredentialsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCredentialDeleteReferencesRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - var ( val string ok bool @@ -2096,96 +1718,86 @@ func local_request_OpenStorageNode_UncordonAttachments_0(ctx context.Context, ma _ = err ) - val, ok = pathParams["node_id"] + val, ok = pathParams["credential_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "node_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "credential_id") } - protoReq.NodeId, err = runtime.String(val) + protoReq.CredentialId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "node_id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "credential_id", err) } - msg, err := server.UncordonAttachments(ctx, &protoReq) + msg, err := client.DeleteReferences(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageNode_VolumeBytesUsedByNode_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageNodeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeBytesUsedRequest +func request_OpenStorageSchedulePolicy_Create_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageSchedulePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkSchedulePolicyCreateRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.VolumeBytesUsedByNode(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageNode_VolumeBytesUsedByNode_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageNodeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeBytesUsedRequest +func request_OpenStorageSchedulePolicy_Update_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageSchedulePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkSchedulePolicyUpdateRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.VolumeBytesUsedByNode(ctx, &protoReq) + msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageBucket_Create_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageBucketClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq BucketCreateRequest +func request_OpenStorageSchedulePolicy_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageSchedulePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkSchedulePolicyEnumerateRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.Enumerate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageBucket_Create_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageBucketServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq BucketCreateRequest +func request_OpenStorageSchedulePolicy_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageSchedulePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkSchedulePolicyInspectRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) } - msg, err := server.Create(ctx, &protoReq) + msg, err := client.Inspect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -var ( - filter_OpenStorageBucket_Delete_0 = &utilities.DoubleArray{Encoding: map[string]int{"bucket_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} -) - -func request_OpenStorageBucket_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageBucketClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq BucketDeleteRequest +func request_OpenStorageSchedulePolicy_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageSchedulePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkSchedulePolicyDeleteRequest var metadata runtime.ServerMetadata var ( @@ -2195,31 +1807,67 @@ func request_OpenStorageBucket_Delete_0(ctx context.Context, marshaler runtime.M _ = err ) - val, ok = pathParams["bucket_id"] + val, ok = pathParams["name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bucket_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") } - protoReq.BucketId, err = runtime.String(val) + protoReq.Name, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bucket_id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) } - if err := req.ParseForm(); err != nil { + msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_OpenStorageCloudBackup_Create_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCloudBackupCreateRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageBucket_Delete_0); err != nil { + + msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_OpenStorageCloudBackup_GroupCreate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCloudBackupGroupCreateRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.GroupCreate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageBucket_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageBucketServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq BucketDeleteRequest +func request_OpenStorageCloudBackup_Restore_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCloudBackupRestoreRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.Restore(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +var ( + filter_OpenStorageCloudBackup_Delete_0 = &utilities.DoubleArray{Encoding: map[string]int{"backup_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_OpenStorageCloudBackup_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCloudBackupDeleteRequest var metadata runtime.ServerMetadata var ( @@ -2229,76 +1877,82 @@ func local_request_OpenStorageBucket_Delete_0(ctx context.Context, marshaler run _ = err ) - val, ok = pathParams["bucket_id"] + val, ok = pathParams["backup_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bucket_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "backup_id") } - protoReq.BucketId, err = runtime.String(val) + protoReq.BackupId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bucket_id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "backup_id", err) } - if err := req.ParseForm(); err != nil { + if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_OpenStorageCloudBackup_Delete_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageBucket_Delete_0); err != nil { + + msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_OpenStorageCloudBackup_DeleteAll_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCloudBackupDeleteAllRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.Delete(ctx, &protoReq) + msg, err := client.DeleteAll(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageBucket_GrantAccess_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageBucketClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq BucketGrantAccessRequest +func request_OpenStorageCloudBackup_EnumerateWithFilters_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCloudBackupEnumerateWithFiltersRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - var ( - val string - ok bool - err error - _ = err - ) + msg, err := client.EnumerateWithFilters(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err - val, ok = pathParams["bucket_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bucket_id") - } +} - protoReq.BucketId, err = runtime.String(val) +func request_OpenStorageCloudBackup_Status_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCloudBackupStatusRequest + var metadata runtime.ServerMetadata - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bucket_id", err) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.GrantAccess(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.Status(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageBucket_GrantAccess_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageBucketServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq BucketGrantAccessRequest +func request_OpenStorageCloudBackup_Catalog_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCloudBackupCatalogRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + msg, err := client.Catalog(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_OpenStorageCloudBackup_History_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCloudBackupHistoryRequest + var metadata runtime.ServerMetadata + var ( val string ok bool @@ -2306,69 +1960,65 @@ func local_request_OpenStorageBucket_GrantAccess_0(ctx context.Context, marshale _ = err ) - val, ok = pathParams["bucket_id"] + val, ok = pathParams["src_volume_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bucket_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "src_volume_id") } - protoReq.BucketId, err = runtime.String(val) + protoReq.SrcVolumeId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bucket_id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "src_volume_id", err) } - msg, err := server.GrantAccess(ctx, &protoReq) + msg, err := client.History(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageBucket_RevokeAccess_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageBucketClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq BucketRevokeAccessRequest +func request_OpenStorageCloudBackup_StateChange_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCloudBackupStateChangeRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - var ( - val string - ok bool - err error - _ = err - ) + msg, err := client.StateChange(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err - val, ok = pathParams["bucket_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bucket_id") - } +} - protoReq.BucketId, err = runtime.String(val) +func request_OpenStorageCloudBackup_SchedCreate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCloudBackupSchedCreateRequest + var metadata runtime.ServerMetadata - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bucket_id", err) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.RevokeAccess(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.SchedCreate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageBucket_RevokeAccess_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageBucketServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq BucketRevokeAccessRequest +func request_OpenStorageCloudBackup_SchedUpdate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCloudBackupSchedUpdateRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } + msg, err := client.SchedUpdate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_OpenStorageCloudBackup_SchedDelete_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCloudBackupSchedDeleteRequest + var metadata runtime.ServerMetadata + var ( val string ok bool @@ -2376,92 +2026,72 @@ func local_request_OpenStorageBucket_RevokeAccess_0(ctx context.Context, marshal _ = err ) - val, ok = pathParams["bucket_id"] + val, ok = pathParams["backup_schedule_id"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bucket_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "backup_schedule_id") } - protoReq.BucketId, err = runtime.String(val) + protoReq.BackupScheduleId, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "bucket_id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "backup_schedule_id", err) } - msg, err := server.RevokeAccess(ctx, &protoReq) + msg, err := client.SchedDelete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageVolume_Create_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeCreateRequest +func request_OpenStorageCloudBackup_SchedEnumerate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCloudBackupSchedEnumerateRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.SchedEnumerate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageVolume_Create_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageVolumeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeCreateRequest +var ( + filter_OpenStorageCloudBackup_Size_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_OpenStorageCloudBackup_Size_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkCloudBackupSizeRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_OpenStorageCloudBackup_Size_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.Create(ctx, &protoReq) + msg, err := client.Size(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageVolume_Clone_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeCloneRequest +func request_OpenStoragePolicy_Create_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkOpenStoragePolicyCreateRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.Clone(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageVolume_Clone_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageVolumeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeCloneRequest +func request_OpenStoragePolicy_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkOpenStoragePolicyEnumerateRequest var metadata runtime.ServerMetadata - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Clone(ctx, &protoReq) + msg, err := client.Enumerate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_OpenStorageVolume_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeDeleteRequest +func request_OpenStoragePolicy_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkOpenStoragePolicyInspectRequest var metadata runtime.ServerMetadata var ( @@ -2471,24 +2101,37 @@ func request_OpenStorageVolume_Delete_0(ctx context.Context, marshaler runtime.M _ = err ) - val, ok = pathParams["volume_id"] + val, ok = pathParams["name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "volume_id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") } - protoReq.VolumeId, err = runtime.String(val) + protoReq.Name, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "volume_id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) } - msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.Inspect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_OpenStorageVolume_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageVolumeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeDeleteRequest +func request_OpenStoragePolicy_Update_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkOpenStoragePolicyUpdateRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_OpenStoragePolicy_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkOpenStoragePolicyDeleteRequest var metadata runtime.ServerMetadata var ( @@ -2498,5705 +2141,73 @@ func local_request_OpenStorageVolume_Delete_0(ctx context.Context, marshaler run _ = err ) - val, ok = pathParams["volume_id"] + val, ok = pathParams["name"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "volume_id") - } - - protoReq.VolumeId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "volume_id", err) - } - - msg, err := server.Delete(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_OpenStorageVolume_Inspect_0 = &utilities.DoubleArray{Encoding: map[string]int{"volume_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} -) - -func request_OpenStorageVolume_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeInspectRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["volume_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "volume_id") - } - - protoReq.VolumeId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "volume_id", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageVolume_Inspect_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Inspect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageVolume_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageVolumeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeInspectRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["volume_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "volume_id") - } - - protoReq.VolumeId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "volume_id", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageVolume_Inspect_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Inspect(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageVolume_InspectWithFilters_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeInspectWithFiltersRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.InspectWithFilters(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageVolume_InspectWithFilters_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageVolumeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeInspectWithFiltersRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.InspectWithFilters(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageVolume_Update_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["volume_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "volume_id") - } - - protoReq.VolumeId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "volume_id", err) - } - - msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageVolume_Update_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageVolumeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["volume_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "volume_id") - } - - protoReq.VolumeId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "volume_id", err) - } - - msg, err := server.Update(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_OpenStorageVolume_Stats_0 = &utilities.DoubleArray{Encoding: map[string]int{"volume_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} -) - -func request_OpenStorageVolume_Stats_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeStatsRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["volume_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "volume_id") - } - - protoReq.VolumeId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "volume_id", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageVolume_Stats_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Stats(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageVolume_Stats_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageVolumeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeStatsRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["volume_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "volume_id") - } - - protoReq.VolumeId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "volume_id", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageVolume_Stats_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Stats(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageVolume_CapacityUsage_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeCapacityUsageRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["volume_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "volume_id") - } - - protoReq.VolumeId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "volume_id", err) - } - - msg, err := client.CapacityUsage(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageVolume_CapacityUsage_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageVolumeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeCapacityUsageRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["volume_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "volume_id") - } - - protoReq.VolumeId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "volume_id", err) - } - - msg, err := server.CapacityUsage(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageVolume_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeEnumerateRequest - var metadata runtime.ServerMetadata - - msg, err := client.Enumerate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageVolume_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageVolumeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeEnumerateRequest - var metadata runtime.ServerMetadata - - msg, err := server.Enumerate(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageVolume_EnumerateWithFilters_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeEnumerateWithFiltersRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.EnumerateWithFilters(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageVolume_EnumerateWithFilters_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageVolumeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeEnumerateWithFiltersRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.EnumerateWithFilters(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageVolume_SnapshotCreate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeSnapshotCreateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.SnapshotCreate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageVolume_SnapshotCreate_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageVolumeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeSnapshotCreateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.SnapshotCreate(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageVolume_SnapshotRestore_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeSnapshotRestoreRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.SnapshotRestore(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageVolume_SnapshotRestore_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageVolumeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeSnapshotRestoreRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.SnapshotRestore(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_OpenStorageVolume_SnapshotEnumerate_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) - -func request_OpenStorageVolume_SnapshotEnumerate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeSnapshotEnumerateRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageVolume_SnapshotEnumerate_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.SnapshotEnumerate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageVolume_SnapshotEnumerate_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageVolumeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeSnapshotEnumerateRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageVolume_SnapshotEnumerate_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.SnapshotEnumerate(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageVolume_SnapshotEnumerateWithFilters_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeSnapshotEnumerateWithFiltersRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["volume_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "volume_id") - } - - protoReq.VolumeId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "volume_id", err) - } - - msg, err := client.SnapshotEnumerateWithFilters(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageVolume_SnapshotEnumerateWithFilters_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageVolumeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeSnapshotEnumerateWithFiltersRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["volume_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "volume_id") - } - - protoReq.VolumeId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "volume_id", err) - } - - msg, err := server.SnapshotEnumerateWithFilters(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageVolume_SnapshotScheduleUpdate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeSnapshotScheduleUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["volume_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "volume_id") - } - - protoReq.VolumeId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "volume_id", err) - } - - msg, err := client.SnapshotScheduleUpdate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageVolume_SnapshotScheduleUpdate_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageVolumeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeSnapshotScheduleUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["volume_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "volume_id") - } - - protoReq.VolumeId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "volume_id", err) - } - - msg, err := server.SnapshotScheduleUpdate(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageVolume_VolumeCatalog_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVolumeClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeCatalogRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.VolumeCatalog(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageVolume_VolumeCatalog_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageVolumeServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeCatalogRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.VolumeCatalog(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageWatch_Watch_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageWatchClient, req *http.Request, pathParams map[string]string) (OpenStorageWatch_WatchClient, runtime.ServerMetadata, error) { - var protoReq SdkWatchRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - stream, err := client.Watch(ctx, &protoReq) - if err != nil { - return nil, metadata, err - } - header, err := stream.Header() - if err != nil { - return nil, metadata, err - } - metadata.HeaderMD = header - return stream, metadata, nil - -} - -func request_OpenStorageMountAttach_Attach_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageMountAttachClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeAttachRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Attach(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageMountAttach_Attach_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageMountAttachServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeAttachRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Attach(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageMountAttach_Detach_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageMountAttachClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeDetachRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Detach(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageMountAttach_Detach_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageMountAttachServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeDetachRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Detach(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageMountAttach_Mount_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageMountAttachClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeMountRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Mount(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageMountAttach_Mount_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageMountAttachServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeMountRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Mount(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageMountAttach_Unmount_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageMountAttachClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeUnmountRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Unmount(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageMountAttach_Unmount_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageMountAttachServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVolumeUnmountRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Unmount(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageMigrate_Start_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageMigrateClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudMigrateStartRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Start(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageMigrate_Start_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageMigrateServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudMigrateStartRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Start(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageMigrate_Cancel_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageMigrateClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudMigrateCancelRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Cancel(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageMigrate_Cancel_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageMigrateServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudMigrateCancelRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Cancel(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_OpenStorageMigrate_Status_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) - -func request_OpenStorageMigrate_Status_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageMigrateClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudMigrateStatusRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageMigrate_Status_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Status(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageMigrate_Status_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageMigrateServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudMigrateStatusRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageMigrate_Status_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Status(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageObjectstore_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageObjectstoreClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkObjectstoreInspectRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["objectstore_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "objectstore_id") - } - - protoReq.ObjectstoreId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "objectstore_id", err) - } - - msg, err := client.Inspect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageObjectstore_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageObjectstoreServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkObjectstoreInspectRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["objectstore_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "objectstore_id") - } - - protoReq.ObjectstoreId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "objectstore_id", err) - } - - msg, err := server.Inspect(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageObjectstore_Create_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageObjectstoreClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkObjectstoreCreateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageObjectstore_Create_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageObjectstoreServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkObjectstoreCreateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Create(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageObjectstore_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageObjectstoreClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkObjectstoreDeleteRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["objectstore_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "objectstore_id") - } - - protoReq.ObjectstoreId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "objectstore_id", err) - } - - msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageObjectstore_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageObjectstoreServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkObjectstoreDeleteRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["objectstore_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "objectstore_id") - } - - protoReq.ObjectstoreId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "objectstore_id", err) - } - - msg, err := server.Delete(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageObjectstore_Update_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageObjectstoreClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkObjectstoreUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["objectstore_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "objectstore_id") - } - - protoReq.ObjectstoreId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "objectstore_id", err) - } - - msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageObjectstore_Update_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageObjectstoreServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkObjectstoreUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["objectstore_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "objectstore_id") - } - - protoReq.ObjectstoreId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "objectstore_id", err) - } - - msg, err := server.Update(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageCredentials_Create_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCredentialsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCredentialCreateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageCredentials_Create_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageCredentialsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCredentialCreateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Create(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageCredentials_Update_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCredentialsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCredentialUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["credential_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "credential_id") - } - - protoReq.CredentialId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "credential_id", err) - } - - msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageCredentials_Update_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageCredentialsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCredentialUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["credential_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "credential_id") - } - - protoReq.CredentialId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "credential_id", err) - } - - msg, err := server.Update(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageCredentials_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCredentialsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCredentialEnumerateRequest - var metadata runtime.ServerMetadata - - msg, err := client.Enumerate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageCredentials_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageCredentialsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCredentialEnumerateRequest - var metadata runtime.ServerMetadata - - msg, err := server.Enumerate(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageCredentials_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCredentialsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCredentialInspectRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["credential_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "credential_id") - } - - protoReq.CredentialId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "credential_id", err) - } - - msg, err := client.Inspect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageCredentials_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageCredentialsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCredentialInspectRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["credential_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "credential_id") - } - - protoReq.CredentialId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "credential_id", err) - } - - msg, err := server.Inspect(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageCredentials_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCredentialsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCredentialDeleteRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["credential_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "credential_id") - } - - protoReq.CredentialId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "credential_id", err) - } - - msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageCredentials_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageCredentialsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCredentialDeleteRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["credential_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "credential_id") - } - - protoReq.CredentialId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "credential_id", err) - } - - msg, err := server.Delete(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageCredentials_Validate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCredentialsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCredentialValidateRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["credential_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "credential_id") - } - - protoReq.CredentialId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "credential_id", err) - } - - msg, err := client.Validate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageCredentials_Validate_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageCredentialsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCredentialValidateRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["credential_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "credential_id") - } - - protoReq.CredentialId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "credential_id", err) - } - - msg, err := server.Validate(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageCredentials_DeleteReferences_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCredentialsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCredentialDeleteReferencesRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["credential_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "credential_id") - } - - protoReq.CredentialId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "credential_id", err) - } - - msg, err := client.DeleteReferences(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageCredentials_DeleteReferences_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageCredentialsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCredentialDeleteReferencesRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["credential_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "credential_id") - } - - protoReq.CredentialId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "credential_id", err) - } - - msg, err := server.DeleteReferences(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageSchedulePolicy_Create_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageSchedulePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkSchedulePolicyCreateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageSchedulePolicy_Create_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageSchedulePolicyServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkSchedulePolicyCreateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Create(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageSchedulePolicy_Update_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageSchedulePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkSchedulePolicyUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageSchedulePolicy_Update_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageSchedulePolicyServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkSchedulePolicyUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Update(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageSchedulePolicy_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageSchedulePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkSchedulePolicyEnumerateRequest - var metadata runtime.ServerMetadata - - msg, err := client.Enumerate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageSchedulePolicy_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageSchedulePolicyServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkSchedulePolicyEnumerateRequest - var metadata runtime.ServerMetadata - - msg, err := server.Enumerate(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageSchedulePolicy_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageSchedulePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkSchedulePolicyInspectRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - msg, err := client.Inspect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageSchedulePolicy_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageSchedulePolicyServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkSchedulePolicyInspectRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - msg, err := server.Inspect(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageSchedulePolicy_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageSchedulePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkSchedulePolicyDeleteRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageSchedulePolicy_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageSchedulePolicyServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkSchedulePolicyDeleteRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - msg, err := server.Delete(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageCloudBackup_Create_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupCreateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageCloudBackup_Create_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageCloudBackupServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupCreateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Create(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageCloudBackup_GroupCreate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupGroupCreateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.GroupCreate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageCloudBackup_GroupCreate_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageCloudBackupServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupGroupCreateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.GroupCreate(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageCloudBackup_Restore_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupRestoreRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Restore(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageCloudBackup_Restore_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageCloudBackupServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupRestoreRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Restore(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_OpenStorageCloudBackup_Delete_0 = &utilities.DoubleArray{Encoding: map[string]int{"backup_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} -) - -func request_OpenStorageCloudBackup_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupDeleteRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["backup_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "backup_id") - } - - protoReq.BackupId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "backup_id", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageCloudBackup_Delete_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageCloudBackup_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageCloudBackupServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupDeleteRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["backup_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "backup_id") - } - - protoReq.BackupId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "backup_id", err) - } - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageCloudBackup_Delete_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Delete(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageCloudBackup_DeleteAll_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupDeleteAllRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.DeleteAll(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageCloudBackup_DeleteAll_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageCloudBackupServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupDeleteAllRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.DeleteAll(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageCloudBackup_EnumerateWithFilters_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupEnumerateWithFiltersRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.EnumerateWithFilters(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageCloudBackup_EnumerateWithFilters_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageCloudBackupServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupEnumerateWithFiltersRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.EnumerateWithFilters(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageCloudBackup_Status_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupStatusRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Status(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageCloudBackup_Status_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageCloudBackupServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupStatusRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Status(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageCloudBackup_Catalog_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupCatalogRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Catalog(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageCloudBackup_Catalog_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageCloudBackupServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupCatalogRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Catalog(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageCloudBackup_History_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupHistoryRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["src_volume_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "src_volume_id") - } - - protoReq.SrcVolumeId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "src_volume_id", err) - } - - msg, err := client.History(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageCloudBackup_History_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageCloudBackupServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupHistoryRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["src_volume_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "src_volume_id") - } - - protoReq.SrcVolumeId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "src_volume_id", err) - } - - msg, err := server.History(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageCloudBackup_StateChange_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupStateChangeRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.StateChange(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageCloudBackup_StateChange_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageCloudBackupServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupStateChangeRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.StateChange(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageCloudBackup_SchedCreate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupSchedCreateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.SchedCreate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageCloudBackup_SchedCreate_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageCloudBackupServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupSchedCreateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.SchedCreate(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageCloudBackup_SchedUpdate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupSchedUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.SchedUpdate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageCloudBackup_SchedUpdate_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageCloudBackupServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupSchedUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.SchedUpdate(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageCloudBackup_SchedDelete_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupSchedDeleteRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["backup_schedule_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "backup_schedule_id") - } - - protoReq.BackupScheduleId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "backup_schedule_id", err) - } - - msg, err := client.SchedDelete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageCloudBackup_SchedDelete_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageCloudBackupServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupSchedDeleteRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["backup_schedule_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "backup_schedule_id") - } - - protoReq.BackupScheduleId, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "backup_schedule_id", err) - } - - msg, err := server.SchedDelete(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageCloudBackup_SchedEnumerate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupSchedEnumerateRequest - var metadata runtime.ServerMetadata - - msg, err := client.SchedEnumerate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageCloudBackup_SchedEnumerate_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageCloudBackupServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupSchedEnumerateRequest - var metadata runtime.ServerMetadata - - msg, err := server.SchedEnumerate(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_OpenStorageCloudBackup_Size_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) - -func request_OpenStorageCloudBackup_Size_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageCloudBackupClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupSizeRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageCloudBackup_Size_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Size(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageCloudBackup_Size_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageCloudBackupServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkCloudBackupSizeRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageCloudBackup_Size_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Size(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStoragePolicy_Create_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkOpenStoragePolicyCreateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStoragePolicy_Create_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStoragePolicyServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkOpenStoragePolicyCreateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Create(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStoragePolicy_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkOpenStoragePolicyEnumerateRequest - var metadata runtime.ServerMetadata - - msg, err := client.Enumerate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStoragePolicy_Enumerate_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStoragePolicyServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkOpenStoragePolicyEnumerateRequest - var metadata runtime.ServerMetadata - - msg, err := server.Enumerate(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStoragePolicy_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkOpenStoragePolicyInspectRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - msg, err := client.Inspect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStoragePolicy_Inspect_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStoragePolicyServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkOpenStoragePolicyInspectRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - msg, err := server.Inspect(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStoragePolicy_Update_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkOpenStoragePolicyUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStoragePolicy_Update_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStoragePolicyServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkOpenStoragePolicyUpdateRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Update(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStoragePolicy_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkOpenStoragePolicyDeleteRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStoragePolicy_Delete_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStoragePolicyServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkOpenStoragePolicyDeleteRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - msg, err := server.Delete(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStoragePolicy_SetDefault_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkOpenStoragePolicySetDefaultRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - msg, err := client.SetDefault(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStoragePolicy_SetDefault_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStoragePolicyServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkOpenStoragePolicySetDefaultRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") - } - - protoReq.Name, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) - } - - msg, err := server.SetDefault(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStoragePolicy_DefaultInspect_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkOpenStoragePolicyDefaultInspectRequest - var metadata runtime.ServerMetadata - - msg, err := client.DefaultInspect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStoragePolicy_DefaultInspect_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStoragePolicyServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkOpenStoragePolicyDefaultInspectRequest - var metadata runtime.ServerMetadata - - msg, err := server.DefaultInspect(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStoragePolicy_Release_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkOpenStoragePolicyReleaseRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Release(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStoragePolicy_Release_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStoragePolicyServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkOpenStoragePolicyReleaseRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Release(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageVerifyChecksum_Start_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVerifyChecksumClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVerifyChecksumStartRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Start(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageVerifyChecksum_Start_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageVerifyChecksumServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVerifyChecksumStartRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Start(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_OpenStorageVerifyChecksum_Status_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) - -func request_OpenStorageVerifyChecksum_Status_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVerifyChecksumClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVerifyChecksumStatusRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageVerifyChecksum_Status_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Status(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageVerifyChecksum_Status_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageVerifyChecksumServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVerifyChecksumStatusRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_OpenStorageVerifyChecksum_Status_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Status(ctx, &protoReq) - return msg, metadata, err - -} - -func request_OpenStorageVerifyChecksum_Stop_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStorageVerifyChecksumClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVerifyChecksumStopRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Stop(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_OpenStorageVerifyChecksum_Stop_0(ctx context.Context, marshaler runtime.Marshaler, server OpenStorageVerifyChecksumServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SdkVerifyChecksumStopRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Stop(ctx, &protoReq) - return msg, metadata, err - -} - -// RegisterOpenStorageAlertsHandlerServer registers the http handlers for service OpenStorageAlerts to "mux". -// UnaryRPC :call OpenStorageAlertsServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStorageAlertsHandlerFromEndpoint instead. -func RegisterOpenStorageAlertsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStorageAlertsServer) error { - - mux.Handle("POST", pattern_OpenStorageAlerts_EnumerateWithFilters_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") - _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - }) - - mux.Handle("POST", pattern_OpenStorageAlerts_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageAlerts_Delete_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageAlerts_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterOpenStorageRoleHandlerServer registers the http handlers for service OpenStorageRole to "mux". -// UnaryRPC :call OpenStorageRoleServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStorageRoleHandlerFromEndpoint instead. -func RegisterOpenStorageRoleHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStorageRoleServer) error { - - mux.Handle("POST", pattern_OpenStorageRole_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageRole_Create_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageRole_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageRole_Enumerate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageRole_Enumerate_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageRole_Enumerate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageRole_Inspect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageRole_Inspect_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageRole_Inspect_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_OpenStorageRole_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageRole_Delete_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageRole_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_OpenStorageRole_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageRole_Update_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageRole_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterOpenStorageFilesystemTrimHandlerServer registers the http handlers for service OpenStorageFilesystemTrim to "mux". -// UnaryRPC :call OpenStorageFilesystemTrimServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStorageFilesystemTrimHandlerFromEndpoint instead. -func RegisterOpenStorageFilesystemTrimHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStorageFilesystemTrimServer) error { - - mux.Handle("POST", pattern_OpenStorageFilesystemTrim_Start_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageFilesystemTrim_Start_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageFilesystemTrim_Start_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageFilesystemTrim_Status_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageFilesystemTrim_Status_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageFilesystemTrim_Status_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageFilesystemTrim_AutoFSTrimStatus_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageFilesystemTrim_AutoFSTrimStatus_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageFilesystemTrim_AutoFSTrimStatus_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageFilesystemTrim_AutoFSTrimUsage_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageFilesystemTrim_AutoFSTrimUsage_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageFilesystemTrim_AutoFSTrimUsage_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageFilesystemTrim_Stop_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageFilesystemTrim_Stop_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageFilesystemTrim_Stop_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageFilesystemTrim_AutoFSTrimPush_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageFilesystemTrim_AutoFSTrimPush_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageFilesystemTrim_AutoFSTrimPush_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageFilesystemTrim_AutoFSTrimPop_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageFilesystemTrim_AutoFSTrimPop_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageFilesystemTrim_AutoFSTrimPop_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterOpenStorageFilesystemCheckHandlerServer registers the http handlers for service OpenStorageFilesystemCheck to "mux". -// UnaryRPC :call OpenStorageFilesystemCheckServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStorageFilesystemCheckHandlerFromEndpoint instead. -func RegisterOpenStorageFilesystemCheckHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStorageFilesystemCheckServer) error { - - mux.Handle("POST", pattern_OpenStorageFilesystemCheck_Start_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageFilesystemCheck_Start_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageFilesystemCheck_Start_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageFilesystemCheck_Status_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageFilesystemCheck_Status_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageFilesystemCheck_Status_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageFilesystemCheck_Stop_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageFilesystemCheck_Stop_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageFilesystemCheck_Stop_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageFilesystemCheck_ListSnapshots_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageFilesystemCheck_ListSnapshots_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageFilesystemCheck_ListSnapshots_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageFilesystemCheck_DeleteSnapshots_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageFilesystemCheck_DeleteSnapshots_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageFilesystemCheck_DeleteSnapshots_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageFilesystemCheck_ListVolumes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageFilesystemCheck_ListVolumes_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageFilesystemCheck_ListVolumes_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterOpenStorageIdentityHandlerServer registers the http handlers for service OpenStorageIdentity to "mux". -// UnaryRPC :call OpenStorageIdentityServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStorageIdentityHandlerFromEndpoint instead. -func RegisterOpenStorageIdentityHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStorageIdentityServer) error { - - mux.Handle("GET", pattern_OpenStorageIdentity_Capabilities_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageIdentity_Capabilities_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageIdentity_Capabilities_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageIdentity_Version_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageIdentity_Version_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageIdentity_Version_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterOpenStorageClusterHandlerServer registers the http handlers for service OpenStorageCluster to "mux". -// UnaryRPC :call OpenStorageClusterServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStorageClusterHandlerFromEndpoint instead. -func RegisterOpenStorageClusterHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStorageClusterServer) error { - - mux.Handle("GET", pattern_OpenStorageCluster_InspectCurrent_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCluster_InspectCurrent_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCluster_InspectCurrent_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterOpenStorageClusterPairHandlerServer registers the http handlers for service OpenStorageClusterPair to "mux". -// UnaryRPC :call OpenStorageClusterPairServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStorageClusterPairHandlerFromEndpoint instead. -func RegisterOpenStorageClusterPairHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStorageClusterPairServer) error { - - mux.Handle("POST", pattern_OpenStorageClusterPair_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageClusterPair_Create_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageClusterPair_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageClusterPair_Inspect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageClusterPair_Inspect_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageClusterPair_Inspect_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageClusterPair_Enumerate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageClusterPair_Enumerate_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageClusterPair_Enumerate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageClusterPair_GetToken_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageClusterPair_GetToken_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageClusterPair_GetToken_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageClusterPair_ResetToken_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageClusterPair_ResetToken_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageClusterPair_ResetToken_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_OpenStorageClusterPair_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageClusterPair_Delete_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageClusterPair_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterOpenStorageClusterDomainsHandlerServer registers the http handlers for service OpenStorageClusterDomains to "mux". -// UnaryRPC :call OpenStorageClusterDomainsServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStorageClusterDomainsHandlerFromEndpoint instead. -func RegisterOpenStorageClusterDomainsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStorageClusterDomainsServer) error { - - mux.Handle("GET", pattern_OpenStorageClusterDomains_Enumerate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageClusterDomains_Enumerate_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageClusterDomains_Enumerate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageClusterDomains_Inspect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageClusterDomains_Inspect_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageClusterDomains_Inspect_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageClusterDomains_Activate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageClusterDomains_Activate_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageClusterDomains_Activate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageClusterDomains_Deactivate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageClusterDomains_Deactivate_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageClusterDomains_Deactivate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterOpenStoragePoolHandlerServer registers the http handlers for service OpenStoragePool to "mux". -// UnaryRPC :call OpenStoragePoolServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStoragePoolHandlerFromEndpoint instead. -func RegisterOpenStoragePoolHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStoragePoolServer) error { - - mux.Handle("PUT", pattern_OpenStoragePool_Resize_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStoragePool_Resize_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStoragePool_Resize_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_OpenStoragePool_Rebalance_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStoragePool_Rebalance_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStoragePool_Rebalance_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_OpenStoragePool_UpdateRebalanceJobState_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStoragePool_UpdateRebalanceJobState_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStoragePool_UpdateRebalanceJobState_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStoragePool_GetRebalanceJobStatus_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStoragePool_GetRebalanceJobStatus_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStoragePool_GetRebalanceJobStatus_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStoragePool_EnumerateRebalanceJobs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStoragePool_EnumerateRebalanceJobs_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStoragePool_EnumerateRebalanceJobs_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStoragePool_CreateRebalanceSchedule_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStoragePool_CreateRebalanceSchedule_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStoragePool_CreateRebalanceSchedule_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStoragePool_GetRebalanceSchedule_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStoragePool_GetRebalanceSchedule_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStoragePool_GetRebalanceSchedule_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_OpenStoragePool_DeleteRebalanceSchedule_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStoragePool_DeleteRebalanceSchedule_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStoragePool_DeleteRebalanceSchedule_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterOpenStorageDiagsHandlerServer registers the http handlers for service OpenStorageDiags to "mux". -// UnaryRPC :call OpenStorageDiagsServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStorageDiagsHandlerFromEndpoint instead. -func RegisterOpenStorageDiagsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStorageDiagsServer) error { - - mux.Handle("POST", pattern_OpenStorageDiags_Collect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageDiags_Collect_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageDiags_Collect_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterOpenStorageJobHandlerServer registers the http handlers for service OpenStorageJob to "mux". -// UnaryRPC :call OpenStorageJobServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStorageJobHandlerFromEndpoint instead. -func RegisterOpenStorageJobHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStorageJobServer) error { - - mux.Handle("PUT", pattern_OpenStorageJob_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageJob_Update_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageJob_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageJob_GetStatus_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageJob_GetStatus_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageJob_GetStatus_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageJob_Enumerate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageJob_Enumerate_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageJob_Enumerate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterOpenStorageNodeHandlerServer registers the http handlers for service OpenStorageNode to "mux". -// UnaryRPC :call OpenStorageNodeServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStorageNodeHandlerFromEndpoint instead. -func RegisterOpenStorageNodeHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStorageNodeServer) error { - - mux.Handle("GET", pattern_OpenStorageNode_Inspect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageNode_Inspect_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageNode_Inspect_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageNode_InspectCurrent_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageNode_InspectCurrent_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageNode_InspectCurrent_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageNode_Enumerate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageNode_Enumerate_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageNode_Enumerate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageNode_EnumerateWithFilters_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageNode_EnumerateWithFilters_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageNode_EnumerateWithFilters_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageNode_VolumeUsageByNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageNode_VolumeUsageByNode_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageNode_VolumeUsageByNode_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageNode_RelaxedReclaimPurge_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageNode_RelaxedReclaimPurge_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageNode_RelaxedReclaimPurge_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_OpenStorageNode_DrainAttachments_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageNode_DrainAttachments_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageNode_DrainAttachments_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_OpenStorageNode_CordonAttachments_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageNode_CordonAttachments_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageNode_CordonAttachments_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_OpenStorageNode_UncordonAttachments_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageNode_UncordonAttachments_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageNode_UncordonAttachments_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageNode_VolumeBytesUsedByNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageNode_VolumeBytesUsedByNode_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageNode_VolumeBytesUsedByNode_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterOpenStorageBucketHandlerServer registers the http handlers for service OpenStorageBucket to "mux". -// UnaryRPC :call OpenStorageBucketServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStorageBucketHandlerFromEndpoint instead. -func RegisterOpenStorageBucketHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStorageBucketServer) error { - - mux.Handle("POST", pattern_OpenStorageBucket_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageBucket_Create_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageBucket_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_OpenStorageBucket_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageBucket_Delete_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageBucket_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageBucket_GrantAccess_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageBucket_GrantAccess_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageBucket_GrantAccess_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageBucket_RevokeAccess_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageBucket_RevokeAccess_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageBucket_RevokeAccess_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterOpenStorageVolumeHandlerServer registers the http handlers for service OpenStorageVolume to "mux". -// UnaryRPC :call OpenStorageVolumeServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStorageVolumeHandlerFromEndpoint instead. -func RegisterOpenStorageVolumeHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStorageVolumeServer) error { - - mux.Handle("POST", pattern_OpenStorageVolume_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageVolume_Create_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageVolume_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageVolume_Clone_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageVolume_Clone_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageVolume_Clone_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_OpenStorageVolume_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageVolume_Delete_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageVolume_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageVolume_Inspect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageVolume_Inspect_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageVolume_Inspect_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageVolume_InspectWithFilters_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageVolume_InspectWithFilters_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageVolume_InspectWithFilters_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_OpenStorageVolume_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageVolume_Update_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageVolume_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageVolume_Stats_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageVolume_Stats_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageVolume_Stats_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageVolume_CapacityUsage_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageVolume_CapacityUsage_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageVolume_CapacityUsage_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageVolume_Enumerate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageVolume_Enumerate_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageVolume_Enumerate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageVolume_EnumerateWithFilters_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageVolume_EnumerateWithFilters_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageVolume_EnumerateWithFilters_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageVolume_SnapshotCreate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageVolume_SnapshotCreate_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageVolume_SnapshotCreate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageVolume_SnapshotRestore_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageVolume_SnapshotRestore_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageVolume_SnapshotRestore_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageVolume_SnapshotEnumerate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageVolume_SnapshotEnumerate_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageVolume_SnapshotEnumerate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageVolume_SnapshotEnumerateWithFilters_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageVolume_SnapshotEnumerateWithFilters_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageVolume_SnapshotEnumerateWithFilters_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageVolume_SnapshotScheduleUpdate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageVolume_SnapshotScheduleUpdate_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageVolume_SnapshotScheduleUpdate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageVolume_VolumeCatalog_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageVolume_VolumeCatalog_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageVolume_VolumeCatalog_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterOpenStorageWatchHandlerServer registers the http handlers for service OpenStorageWatch to "mux". -// UnaryRPC :call OpenStorageWatchServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStorageWatchHandlerFromEndpoint instead. -func RegisterOpenStorageWatchHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStorageWatchServer) error { - - mux.Handle("POST", pattern_OpenStorageWatch_Watch_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") - _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - }) - - return nil -} - -// RegisterOpenStorageMountAttachHandlerServer registers the http handlers for service OpenStorageMountAttach to "mux". -// UnaryRPC :call OpenStorageMountAttachServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStorageMountAttachHandlerFromEndpoint instead. -func RegisterOpenStorageMountAttachHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStorageMountAttachServer) error { - - mux.Handle("POST", pattern_OpenStorageMountAttach_Attach_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageMountAttach_Attach_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageMountAttach_Attach_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageMountAttach_Detach_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageMountAttach_Detach_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageMountAttach_Detach_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageMountAttach_Mount_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageMountAttach_Mount_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageMountAttach_Mount_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageMountAttach_Unmount_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageMountAttach_Unmount_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageMountAttach_Unmount_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterOpenStorageMigrateHandlerServer registers the http handlers for service OpenStorageMigrate to "mux". -// UnaryRPC :call OpenStorageMigrateServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStorageMigrateHandlerFromEndpoint instead. -func RegisterOpenStorageMigrateHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStorageMigrateServer) error { - - mux.Handle("POST", pattern_OpenStorageMigrate_Start_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageMigrate_Start_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageMigrate_Start_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageMigrate_Cancel_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageMigrate_Cancel_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageMigrate_Cancel_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageMigrate_Status_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageMigrate_Status_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageMigrate_Status_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterOpenStorageObjectstoreHandlerServer registers the http handlers for service OpenStorageObjectstore to "mux". -// UnaryRPC :call OpenStorageObjectstoreServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStorageObjectstoreHandlerFromEndpoint instead. -func RegisterOpenStorageObjectstoreHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStorageObjectstoreServer) error { - - mux.Handle("GET", pattern_OpenStorageObjectstore_Inspect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageObjectstore_Inspect_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageObjectstore_Inspect_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageObjectstore_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageObjectstore_Create_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageObjectstore_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_OpenStorageObjectstore_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageObjectstore_Delete_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageObjectstore_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_OpenStorageObjectstore_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageObjectstore_Update_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageObjectstore_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterOpenStorageCredentialsHandlerServer registers the http handlers for service OpenStorageCredentials to "mux". -// UnaryRPC :call OpenStorageCredentialsServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStorageCredentialsHandlerFromEndpoint instead. -func RegisterOpenStorageCredentialsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStorageCredentialsServer) error { - - mux.Handle("POST", pattern_OpenStorageCredentials_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCredentials_Create_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCredentials_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_OpenStorageCredentials_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCredentials_Update_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCredentials_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageCredentials_Enumerate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCredentials_Enumerate_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCredentials_Enumerate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageCredentials_Inspect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCredentials_Inspect_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCredentials_Inspect_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_OpenStorageCredentials_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCredentials_Delete_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCredentials_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageCredentials_Validate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCredentials_Validate_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCredentials_Validate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_OpenStorageCredentials_DeleteReferences_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCredentials_DeleteReferences_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCredentials_DeleteReferences_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterOpenStorageSchedulePolicyHandlerServer registers the http handlers for service OpenStorageSchedulePolicy to "mux". -// UnaryRPC :call OpenStorageSchedulePolicyServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStorageSchedulePolicyHandlerFromEndpoint instead. -func RegisterOpenStorageSchedulePolicyHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStorageSchedulePolicyServer) error { - - mux.Handle("POST", pattern_OpenStorageSchedulePolicy_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageSchedulePolicy_Create_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageSchedulePolicy_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_OpenStorageSchedulePolicy_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageSchedulePolicy_Update_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageSchedulePolicy_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageSchedulePolicy_Enumerate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageSchedulePolicy_Enumerate_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageSchedulePolicy_Enumerate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageSchedulePolicy_Inspect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageSchedulePolicy_Inspect_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageSchedulePolicy_Inspect_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_OpenStorageSchedulePolicy_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageSchedulePolicy_Delete_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageSchedulePolicy_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterOpenStorageCloudBackupHandlerServer registers the http handlers for service OpenStorageCloudBackup to "mux". -// UnaryRPC :call OpenStorageCloudBackupServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStorageCloudBackupHandlerFromEndpoint instead. -func RegisterOpenStorageCloudBackupHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStorageCloudBackupServer) error { - - mux.Handle("POST", pattern_OpenStorageCloudBackup_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCloudBackup_Create_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCloudBackup_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageCloudBackup_GroupCreate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCloudBackup_GroupCreate_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCloudBackup_GroupCreate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageCloudBackup_Restore_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCloudBackup_Restore_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCloudBackup_Restore_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_OpenStorageCloudBackup_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCloudBackup_Delete_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCloudBackup_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageCloudBackup_DeleteAll_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCloudBackup_DeleteAll_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCloudBackup_DeleteAll_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageCloudBackup_EnumerateWithFilters_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCloudBackup_EnumerateWithFilters_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCloudBackup_EnumerateWithFilters_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageCloudBackup_Status_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCloudBackup_Status_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCloudBackup_Status_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageCloudBackup_Catalog_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCloudBackup_Catalog_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCloudBackup_Catalog_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageCloudBackup_History_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCloudBackup_History_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCloudBackup_History_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageCloudBackup_StateChange_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCloudBackup_StateChange_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCloudBackup_StateChange_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageCloudBackup_SchedCreate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCloudBackup_SchedCreate_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCloudBackup_SchedCreate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_OpenStorageCloudBackup_SchedUpdate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCloudBackup_SchedUpdate_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCloudBackup_SchedUpdate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_OpenStorageCloudBackup_SchedDelete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCloudBackup_SchedDelete_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCloudBackup_SchedDelete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageCloudBackup_SchedEnumerate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCloudBackup_SchedEnumerate_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCloudBackup_SchedEnumerate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageCloudBackup_Size_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageCloudBackup_Size_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageCloudBackup_Size_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterOpenStoragePolicyHandlerServer registers the http handlers for service OpenStoragePolicy to "mux". -// UnaryRPC :call OpenStoragePolicyServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStoragePolicyHandlerFromEndpoint instead. -func RegisterOpenStoragePolicyHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStoragePolicyServer) error { - - mux.Handle("POST", pattern_OpenStoragePolicy_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStoragePolicy_Create_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStoragePolicy_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStoragePolicy_Enumerate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStoragePolicy_Enumerate_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStoragePolicy_Enumerate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStoragePolicy_Inspect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStoragePolicy_Inspect_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStoragePolicy_Inspect_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_OpenStoragePolicy_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStoragePolicy_Update_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStoragePolicy_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_OpenStoragePolicy_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStoragePolicy_Delete_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStoragePolicy_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStoragePolicy_SetDefault_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStoragePolicy_SetDefault_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStoragePolicy_SetDefault_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStoragePolicy_DefaultInspect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStoragePolicy_DefaultInspect_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStoragePolicy_DefaultInspect_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStoragePolicy_Release_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStoragePolicy_Release_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } - forward_OpenStoragePolicy_Release_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + protoReq.Name, err = runtime.String(val) - }) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err - return nil } -// RegisterOpenStorageVerifyChecksumHandlerServer registers the http handlers for service OpenStorageVerifyChecksum to "mux". -// UnaryRPC :call OpenStorageVerifyChecksumServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOpenStorageVerifyChecksumHandlerFromEndpoint instead. -func RegisterOpenStorageVerifyChecksumHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OpenStorageVerifyChecksumServer) error { +func request_OpenStoragePolicy_SetDefault_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkOpenStoragePolicySetDefaultRequest + var metadata runtime.ServerMetadata - mux.Handle("POST", pattern_OpenStorageVerifyChecksum_Start_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageVerifyChecksum_Start_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } - forward_OpenStorageVerifyChecksum_Start_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + var ( + val string + ok bool + err error + _ = err + ) - }) + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } - mux.Handle("GET", pattern_OpenStorageVerifyChecksum_Status_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageVerifyChecksum_Status_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } + protoReq.Name, err = runtime.String(val) - forward_OpenStorageVerifyChecksum_Status_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } - }) + msg, err := client.SetDefault(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err - mux.Handle("POST", pattern_OpenStorageVerifyChecksum_Stop_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_OpenStorageVerifyChecksum_Stop_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } +} - forward_OpenStorageVerifyChecksum_Stop_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) +func request_OpenStoragePolicy_DefaultInspect_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkOpenStoragePolicyDefaultInspectRequest + var metadata runtime.ServerMetadata - }) + msg, err := client.DefaultInspect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func request_OpenStoragePolicy_Release_0(ctx context.Context, marshaler runtime.Marshaler, client OpenStoragePolicyClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SdkOpenStoragePolicyReleaseRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.Release(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err - return nil } // RegisterOpenStorageAlertsHandlerFromEndpoint is same as RegisterOpenStorageAlertsHandler but @@ -8209,14 +2220,14 @@ func RegisterOpenStorageAlertsHandlerFromEndpoint(ctx context.Context, mux *runt defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -8230,8 +2241,8 @@ func RegisterOpenStorageAlertsHandler(ctx context.Context, mux *runtime.ServeMux return RegisterOpenStorageAlertsHandlerClient(ctx, mux, NewOpenStorageAlertsClient(conn)) } -// RegisterOpenStorageAlertsHandlerClient registers the http handlers for service OpenStorageAlerts -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageAlertsClient". +// RegisterOpenStorageAlertsHandler registers the http handlers for service OpenStorageAlerts to "mux". +// The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageAlertsClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStorageAlertsClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "OpenStorageAlertsClient" to call the correct interceptors. @@ -8240,6 +2251,15 @@ func RegisterOpenStorageAlertsHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("POST", pattern_OpenStorageAlerts_EnumerateWithFilters_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -8260,6 +2280,15 @@ func RegisterOpenStorageAlertsHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("POST", pattern_OpenStorageAlerts_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -8281,9 +2310,9 @@ func RegisterOpenStorageAlertsHandlerClient(ctx context.Context, mux *runtime.Se } var ( - pattern_OpenStorageAlerts_EnumerateWithFilters_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "alerts", "filters"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageAlerts_EnumerateWithFilters_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "alerts", "filters"}, "")) - pattern_OpenStorageAlerts_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "alerts"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageAlerts_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "alerts"}, "")) ) var ( @@ -8302,14 +2331,14 @@ func RegisterOpenStorageRoleHandlerFromEndpoint(ctx context.Context, mux *runtim defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -8323,8 +2352,8 @@ func RegisterOpenStorageRoleHandler(ctx context.Context, mux *runtime.ServeMux, return RegisterOpenStorageRoleHandlerClient(ctx, mux, NewOpenStorageRoleClient(conn)) } -// RegisterOpenStorageRoleHandlerClient registers the http handlers for service OpenStorageRole -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageRoleClient". +// RegisterOpenStorageRoleHandler registers the http handlers for service OpenStorageRole to "mux". +// The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageRoleClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStorageRoleClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "OpenStorageRoleClient" to call the correct interceptors. @@ -8333,6 +2362,15 @@ func RegisterOpenStorageRoleHandlerClient(ctx context.Context, mux *runtime.Serv mux.Handle("POST", pattern_OpenStorageRole_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -8353,6 +2391,15 @@ func RegisterOpenStorageRoleHandlerClient(ctx context.Context, mux *runtime.Serv mux.Handle("GET", pattern_OpenStorageRole_Enumerate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -8373,6 +2420,15 @@ func RegisterOpenStorageRoleHandlerClient(ctx context.Context, mux *runtime.Serv mux.Handle("GET", pattern_OpenStorageRole_Inspect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -8393,6 +2449,15 @@ func RegisterOpenStorageRoleHandlerClient(ctx context.Context, mux *runtime.Serv mux.Handle("DELETE", pattern_OpenStorageRole_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -8413,6 +2478,15 @@ func RegisterOpenStorageRoleHandlerClient(ctx context.Context, mux *runtime.Serv mux.Handle("PUT", pattern_OpenStorageRole_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -8434,15 +2508,15 @@ func RegisterOpenStorageRoleHandlerClient(ctx context.Context, mux *runtime.Serv } var ( - pattern_OpenStorageRole_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "roles"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageRole_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "roles"}, "")) - pattern_OpenStorageRole_Enumerate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "roles"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageRole_Enumerate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "roles"}, "")) - pattern_OpenStorageRole_Inspect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "roles", "inspect", "name"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageRole_Inspect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "roles", "inspect", "name"}, "")) - pattern_OpenStorageRole_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "roles", "name"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageRole_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "roles", "name"}, "")) - pattern_OpenStorageRole_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "roles"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageRole_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "roles"}, "")) ) var ( @@ -8467,14 +2541,14 @@ func RegisterOpenStorageFilesystemTrimHandlerFromEndpoint(ctx context.Context, m defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -8488,8 +2562,8 @@ func RegisterOpenStorageFilesystemTrimHandler(ctx context.Context, mux *runtime. return RegisterOpenStorageFilesystemTrimHandlerClient(ctx, mux, NewOpenStorageFilesystemTrimClient(conn)) } -// RegisterOpenStorageFilesystemTrimHandlerClient registers the http handlers for service OpenStorageFilesystemTrim -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageFilesystemTrimClient". +// RegisterOpenStorageFilesystemTrimHandler registers the http handlers for service OpenStorageFilesystemTrim to "mux". +// The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageFilesystemTrimClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStorageFilesystemTrimClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "OpenStorageFilesystemTrimClient" to call the correct interceptors. @@ -8498,6 +2572,15 @@ func RegisterOpenStorageFilesystemTrimHandlerClient(ctx context.Context, mux *ru mux.Handle("POST", pattern_OpenStorageFilesystemTrim_Start_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -8518,6 +2601,15 @@ func RegisterOpenStorageFilesystemTrimHandlerClient(ctx context.Context, mux *ru mux.Handle("GET", pattern_OpenStorageFilesystemTrim_Status_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -8538,6 +2630,15 @@ func RegisterOpenStorageFilesystemTrimHandlerClient(ctx context.Context, mux *ru mux.Handle("GET", pattern_OpenStorageFilesystemTrim_AutoFSTrimStatus_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -8558,6 +2659,15 @@ func RegisterOpenStorageFilesystemTrimHandlerClient(ctx context.Context, mux *ru mux.Handle("GET", pattern_OpenStorageFilesystemTrim_AutoFSTrimUsage_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -8578,6 +2688,15 @@ func RegisterOpenStorageFilesystemTrimHandlerClient(ctx context.Context, mux *ru mux.Handle("POST", pattern_OpenStorageFilesystemTrim_Stop_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -8598,6 +2717,15 @@ func RegisterOpenStorageFilesystemTrimHandlerClient(ctx context.Context, mux *ru mux.Handle("POST", pattern_OpenStorageFilesystemTrim_AutoFSTrimPush_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -8618,6 +2746,15 @@ func RegisterOpenStorageFilesystemTrimHandlerClient(ctx context.Context, mux *ru mux.Handle("POST", pattern_OpenStorageFilesystemTrim_AutoFSTrimPop_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -8639,19 +2776,19 @@ func RegisterOpenStorageFilesystemTrimHandlerClient(ctx context.Context, mux *ru } var ( - pattern_OpenStorageFilesystemTrim_Start_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-trim", "start"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageFilesystemTrim_Start_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-trim", "start"}, "")) - pattern_OpenStorageFilesystemTrim_Status_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-trim", "status"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageFilesystemTrim_Status_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-trim", "status"}, "")) - pattern_OpenStorageFilesystemTrim_AutoFSTrimStatus_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-trim", "auto-fstrim-status"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageFilesystemTrim_AutoFSTrimStatus_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-trim", "auto-fstrim-status"}, "")) - pattern_OpenStorageFilesystemTrim_AutoFSTrimUsage_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-trim", "auto-fstrim-usage"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageFilesystemTrim_AutoFSTrimUsage_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-trim", "auto-fstrim-usage"}, "")) - pattern_OpenStorageFilesystemTrim_Stop_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-trim", "stop"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageFilesystemTrim_Stop_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-trim", "stop"}, "")) - pattern_OpenStorageFilesystemTrim_AutoFSTrimPush_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-trim", "auto-fstrim-push"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageFilesystemTrim_AutoFSTrimPush_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-trim", "auto-fstrim-push"}, "")) - pattern_OpenStorageFilesystemTrim_AutoFSTrimPop_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-trim", "auto-fstrim-pop"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageFilesystemTrim_AutoFSTrimPop_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-trim", "auto-fstrim-pop"}, "")) ) var ( @@ -8680,14 +2817,14 @@ func RegisterOpenStorageFilesystemCheckHandlerFromEndpoint(ctx context.Context, defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -8701,8 +2838,8 @@ func RegisterOpenStorageFilesystemCheckHandler(ctx context.Context, mux *runtime return RegisterOpenStorageFilesystemCheckHandlerClient(ctx, mux, NewOpenStorageFilesystemCheckClient(conn)) } -// RegisterOpenStorageFilesystemCheckHandlerClient registers the http handlers for service OpenStorageFilesystemCheck -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageFilesystemCheckClient". +// RegisterOpenStorageFilesystemCheckHandler registers the http handlers for service OpenStorageFilesystemCheck to "mux". +// The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageFilesystemCheckClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStorageFilesystemCheckClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "OpenStorageFilesystemCheckClient" to call the correct interceptors. @@ -8711,6 +2848,15 @@ func RegisterOpenStorageFilesystemCheckHandlerClient(ctx context.Context, mux *r mux.Handle("POST", pattern_OpenStorageFilesystemCheck_Start_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -8731,6 +2877,15 @@ func RegisterOpenStorageFilesystemCheckHandlerClient(ctx context.Context, mux *r mux.Handle("GET", pattern_OpenStorageFilesystemCheck_Status_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -8751,6 +2906,15 @@ func RegisterOpenStorageFilesystemCheckHandlerClient(ctx context.Context, mux *r mux.Handle("POST", pattern_OpenStorageFilesystemCheck_Stop_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -8768,81 +2932,15 @@ func RegisterOpenStorageFilesystemCheckHandlerClient(ctx context.Context, mux *r }) - mux.Handle("GET", pattern_OpenStorageFilesystemCheck_ListSnapshots_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_OpenStorageFilesystemCheck_ListSnapshots_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageFilesystemCheck_ListSnapshots_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageFilesystemCheck_DeleteSnapshots_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_OpenStorageFilesystemCheck_DeleteSnapshots_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageFilesystemCheck_DeleteSnapshots_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageFilesystemCheck_ListVolumes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_OpenStorageFilesystemCheck_ListVolumes_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageFilesystemCheck_ListVolumes_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - return nil } var ( - pattern_OpenStorageFilesystemCheck_Start_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-check", "start"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_OpenStorageFilesystemCheck_Status_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-check", "status"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageFilesystemCheck_Start_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-check", "start"}, "")) - pattern_OpenStorageFilesystemCheck_Stop_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-check", "stop"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageFilesystemCheck_Status_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-check", "status"}, "")) - pattern_OpenStorageFilesystemCheck_ListSnapshots_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-check", "list-snapshots"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_OpenStorageFilesystemCheck_DeleteSnapshots_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-check", "delete-snapshots"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_OpenStorageFilesystemCheck_ListVolumes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-check", "list-volumes"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageFilesystemCheck_Stop_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "filesystem-check", "stop"}, "")) ) var ( @@ -8851,12 +2949,6 @@ var ( forward_OpenStorageFilesystemCheck_Status_0 = runtime.ForwardResponseMessage forward_OpenStorageFilesystemCheck_Stop_0 = runtime.ForwardResponseMessage - - forward_OpenStorageFilesystemCheck_ListSnapshots_0 = runtime.ForwardResponseMessage - - forward_OpenStorageFilesystemCheck_DeleteSnapshots_0 = runtime.ForwardResponseMessage - - forward_OpenStorageFilesystemCheck_ListVolumes_0 = runtime.ForwardResponseMessage ) // RegisterOpenStorageIdentityHandlerFromEndpoint is same as RegisterOpenStorageIdentityHandler but @@ -8869,14 +2961,14 @@ func RegisterOpenStorageIdentityHandlerFromEndpoint(ctx context.Context, mux *ru defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -8890,8 +2982,8 @@ func RegisterOpenStorageIdentityHandler(ctx context.Context, mux *runtime.ServeM return RegisterOpenStorageIdentityHandlerClient(ctx, mux, NewOpenStorageIdentityClient(conn)) } -// RegisterOpenStorageIdentityHandlerClient registers the http handlers for service OpenStorageIdentity -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageIdentityClient". +// RegisterOpenStorageIdentityHandler registers the http handlers for service OpenStorageIdentity to "mux". +// The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageIdentityClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStorageIdentityClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "OpenStorageIdentityClient" to call the correct interceptors. @@ -8900,6 +2992,15 @@ func RegisterOpenStorageIdentityHandlerClient(ctx context.Context, mux *runtime. mux.Handle("GET", pattern_OpenStorageIdentity_Capabilities_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -8920,6 +3021,15 @@ func RegisterOpenStorageIdentityHandlerClient(ctx context.Context, mux *runtime. mux.Handle("GET", pattern_OpenStorageIdentity_Version_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -8941,9 +3051,9 @@ func RegisterOpenStorageIdentityHandlerClient(ctx context.Context, mux *runtime. } var ( - pattern_OpenStorageIdentity_Capabilities_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "identities", "capabilities"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageIdentity_Capabilities_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "identities", "capabilities"}, "")) - pattern_OpenStorageIdentity_Version_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "identities", "version"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageIdentity_Version_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "identities", "version"}, "")) ) var ( @@ -8962,14 +3072,14 @@ func RegisterOpenStorageClusterHandlerFromEndpoint(ctx context.Context, mux *run defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -8983,8 +3093,8 @@ func RegisterOpenStorageClusterHandler(ctx context.Context, mux *runtime.ServeMu return RegisterOpenStorageClusterHandlerClient(ctx, mux, NewOpenStorageClusterClient(conn)) } -// RegisterOpenStorageClusterHandlerClient registers the http handlers for service OpenStorageCluster -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageClusterClient". +// RegisterOpenStorageClusterHandler registers the http handlers for service OpenStorageCluster to "mux". +// The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageClusterClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStorageClusterClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "OpenStorageClusterClient" to call the correct interceptors. @@ -8993,6 +3103,15 @@ func RegisterOpenStorageClusterHandlerClient(ctx context.Context, mux *runtime.S mux.Handle("GET", pattern_OpenStorageCluster_InspectCurrent_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -9014,7 +3133,7 @@ func RegisterOpenStorageClusterHandlerClient(ctx context.Context, mux *runtime.S } var ( - pattern_OpenStorageCluster_InspectCurrent_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "clusters", "inspectcurrent"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCluster_InspectCurrent_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "clusters", "inspectcurrent"}, "")) ) var ( @@ -9031,14 +3150,14 @@ func RegisterOpenStorageClusterPairHandlerFromEndpoint(ctx context.Context, mux defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -9052,8 +3171,8 @@ func RegisterOpenStorageClusterPairHandler(ctx context.Context, mux *runtime.Ser return RegisterOpenStorageClusterPairHandlerClient(ctx, mux, NewOpenStorageClusterPairClient(conn)) } -// RegisterOpenStorageClusterPairHandlerClient registers the http handlers for service OpenStorageClusterPair -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageClusterPairClient". +// RegisterOpenStorageClusterPairHandler registers the http handlers for service OpenStorageClusterPair to "mux". +// The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageClusterPairClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStorageClusterPairClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "OpenStorageClusterPairClient" to call the correct interceptors. @@ -9062,6 +3181,15 @@ func RegisterOpenStorageClusterPairHandlerClient(ctx context.Context, mux *runti mux.Handle("POST", pattern_OpenStorageClusterPair_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -9082,6 +3210,15 @@ func RegisterOpenStorageClusterPairHandlerClient(ctx context.Context, mux *runti mux.Handle("GET", pattern_OpenStorageClusterPair_Inspect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -9102,6 +3239,15 @@ func RegisterOpenStorageClusterPairHandlerClient(ctx context.Context, mux *runti mux.Handle("GET", pattern_OpenStorageClusterPair_Enumerate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -9122,6 +3268,15 @@ func RegisterOpenStorageClusterPairHandlerClient(ctx context.Context, mux *runti mux.Handle("GET", pattern_OpenStorageClusterPair_GetToken_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -9142,6 +3297,15 @@ func RegisterOpenStorageClusterPairHandlerClient(ctx context.Context, mux *runti mux.Handle("POST", pattern_OpenStorageClusterPair_ResetToken_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -9162,6 +3326,15 @@ func RegisterOpenStorageClusterPairHandlerClient(ctx context.Context, mux *runti mux.Handle("DELETE", pattern_OpenStorageClusterPair_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -9183,17 +3356,17 @@ func RegisterOpenStorageClusterPairHandlerClient(ctx context.Context, mux *runti } var ( - pattern_OpenStorageClusterPair_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "clusterpairs"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageClusterPair_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "clusterpairs"}, "")) - pattern_OpenStorageClusterPair_Inspect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "clusterpairs", "inspect", "id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageClusterPair_Inspect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "clusterpairs", "inspect", "id"}, "")) - pattern_OpenStorageClusterPair_Enumerate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "clusterpairs"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageClusterPair_Enumerate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "clusterpairs"}, "")) - pattern_OpenStorageClusterPair_GetToken_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "clusterpairs", "token"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageClusterPair_GetToken_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "clusterpairs", "token"}, "")) - pattern_OpenStorageClusterPair_ResetToken_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "clusterpairs", "token"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageClusterPair_ResetToken_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "clusterpairs", "token"}, "")) - pattern_OpenStorageClusterPair_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "clusterpairs", "cluster_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageClusterPair_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "clusterpairs", "cluster_id"}, "")) ) var ( @@ -9220,14 +3393,14 @@ func RegisterOpenStorageClusterDomainsHandlerFromEndpoint(ctx context.Context, m defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -9241,8 +3414,8 @@ func RegisterOpenStorageClusterDomainsHandler(ctx context.Context, mux *runtime. return RegisterOpenStorageClusterDomainsHandlerClient(ctx, mux, NewOpenStorageClusterDomainsClient(conn)) } -// RegisterOpenStorageClusterDomainsHandlerClient registers the http handlers for service OpenStorageClusterDomains -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageClusterDomainsClient". +// RegisterOpenStorageClusterDomainsHandler registers the http handlers for service OpenStorageClusterDomains to "mux". +// The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageClusterDomainsClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStorageClusterDomainsClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "OpenStorageClusterDomainsClient" to call the correct interceptors. @@ -9251,6 +3424,15 @@ func RegisterOpenStorageClusterDomainsHandlerClient(ctx context.Context, mux *ru mux.Handle("GET", pattern_OpenStorageClusterDomains_Enumerate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -9271,6 +3453,15 @@ func RegisterOpenStorageClusterDomainsHandlerClient(ctx context.Context, mux *ru mux.Handle("GET", pattern_OpenStorageClusterDomains_Inspect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -9291,6 +3482,15 @@ func RegisterOpenStorageClusterDomainsHandlerClient(ctx context.Context, mux *ru mux.Handle("POST", pattern_OpenStorageClusterDomains_Activate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -9311,6 +3511,15 @@ func RegisterOpenStorageClusterDomainsHandlerClient(ctx context.Context, mux *ru mux.Handle("POST", pattern_OpenStorageClusterDomains_Deactivate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -9332,13 +3541,13 @@ func RegisterOpenStorageClusterDomainsHandlerClient(ctx context.Context, mux *ru } var ( - pattern_OpenStorageClusterDomains_Enumerate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "clusterdomains"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageClusterDomains_Enumerate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "clusterdomains"}, "")) - pattern_OpenStorageClusterDomains_Inspect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "clusterdomains", "inspect", "cluster_domain_name"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageClusterDomains_Inspect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "clusterdomains", "inspect", "cluster_domain_name"}, "")) - pattern_OpenStorageClusterDomains_Activate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "clusterdomains", "activate", "cluster_domain_name"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageClusterDomains_Activate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "clusterdomains", "activate", "cluster_domain_name"}, "")) - pattern_OpenStorageClusterDomains_Deactivate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "clusterdomains", "deactivate", "cluster_domain_name"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageClusterDomains_Deactivate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "clusterdomains", "deactivate", "cluster_domain_name"}, "")) ) var ( @@ -9361,191 +3570,176 @@ func RegisterOpenStoragePoolHandlerFromEndpoint(ctx context.Context, mux *runtim defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() - return RegisterOpenStoragePoolHandler(ctx, mux, conn) -} - -// RegisterOpenStoragePoolHandler registers the http handlers for service OpenStoragePool to "mux". -// The handlers forward requests to the grpc endpoint over "conn". -func RegisterOpenStoragePoolHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { - return RegisterOpenStoragePoolHandlerClient(ctx, mux, NewOpenStoragePoolClient(conn)) -} - -// RegisterOpenStoragePoolHandlerClient registers the http handlers for service OpenStoragePool -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStoragePoolClient". -// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStoragePoolClient" -// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "OpenStoragePoolClient" to call the correct interceptors. -func RegisterOpenStoragePoolHandlerClient(ctx context.Context, mux *runtime.ServeMux, client OpenStoragePoolClient) error { - - mux.Handle("PUT", pattern_OpenStoragePool_Resize_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_OpenStoragePool_Resize_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStoragePool_Resize_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_OpenStoragePool_Rebalance_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_OpenStoragePool_Rebalance_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStoragePool_Rebalance_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_OpenStoragePool_UpdateRebalanceJobState_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_OpenStoragePool_UpdateRebalanceJobState_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStoragePool_UpdateRebalanceJobState_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + return RegisterOpenStoragePoolHandler(ctx, mux, conn) +} - }) +// RegisterOpenStoragePoolHandler registers the http handlers for service OpenStoragePool to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterOpenStoragePoolHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterOpenStoragePoolHandlerClient(ctx, mux, NewOpenStoragePoolClient(conn)) +} - mux.Handle("GET", pattern_OpenStoragePool_GetRebalanceJobStatus_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { +// RegisterOpenStoragePoolHandler registers the http handlers for service OpenStoragePool to "mux". +// The handlers forward requests to the grpc endpoint over the given implementation of "OpenStoragePoolClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStoragePoolClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "OpenStoragePoolClient" to call the correct interceptors. +func RegisterOpenStoragePoolHandlerClient(ctx context.Context, mux *runtime.ServeMux, client OpenStoragePoolClient) error { + + mux.Handle("PUT", pattern_OpenStoragePool_Resize_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OpenStoragePool_GetRebalanceJobStatus_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_OpenStoragePool_Resize_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_OpenStoragePool_GetRebalanceJobStatus_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OpenStoragePool_Resize_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_OpenStoragePool_EnumerateRebalanceJobs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PUT", pattern_OpenStoragePool_Rebalance_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OpenStoragePool_EnumerateRebalanceJobs_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_OpenStoragePool_Rebalance_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_OpenStoragePool_EnumerateRebalanceJobs_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OpenStoragePool_Rebalance_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_OpenStoragePool_CreateRebalanceSchedule_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PUT", pattern_OpenStoragePool_UpdateRebalanceJobState_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OpenStoragePool_CreateRebalanceSchedule_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_OpenStoragePool_UpdateRebalanceJobState_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_OpenStoragePool_CreateRebalanceSchedule_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OpenStoragePool_UpdateRebalanceJobState_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_OpenStoragePool_GetRebalanceSchedule_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_OpenStoragePool_GetRebalanceJobStatus_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OpenStoragePool_GetRebalanceSchedule_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_OpenStoragePool_GetRebalanceJobStatus_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_OpenStoragePool_GetRebalanceSchedule_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OpenStoragePool_GetRebalanceJobStatus_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("DELETE", pattern_OpenStoragePool_DeleteRebalanceSchedule_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_OpenStoragePool_EnumerateRebalanceJobs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OpenStoragePool_DeleteRebalanceSchedule_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_OpenStoragePool_EnumerateRebalanceJobs_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_OpenStoragePool_DeleteRebalanceSchedule_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OpenStoragePool_EnumerateRebalanceJobs_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -9553,21 +3747,15 @@ func RegisterOpenStoragePoolHandlerClient(ctx context.Context, mux *runtime.Serv } var ( - pattern_OpenStoragePool_Resize_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "storagepools", "resize", "uuid"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_OpenStoragePool_Rebalance_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "storagepools", "rebalance"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_OpenStoragePool_UpdateRebalanceJobState_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "storagepools", "rebalance", "job", "id"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_OpenStoragePool_GetRebalanceJobStatus_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "storagepools", "rebalance", "job", "id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStoragePool_Resize_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "storagepools", "resize", "uuid"}, "")) - pattern_OpenStoragePool_EnumerateRebalanceJobs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "storagepools", "rebalance", "job"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStoragePool_Rebalance_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "storagepools", "rebalance"}, "")) - pattern_OpenStoragePool_CreateRebalanceSchedule_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "storagepools", "rebalance", "schedule"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStoragePool_UpdateRebalanceJobState_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "storagepools", "rebalance", "job", "id"}, "")) - pattern_OpenStoragePool_GetRebalanceSchedule_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "storagepools", "rebalance", "schedule"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStoragePool_GetRebalanceJobStatus_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "storagepools", "rebalance", "job", "id"}, "")) - pattern_OpenStoragePool_DeleteRebalanceSchedule_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "storagepools", "rebalance", "schedule"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStoragePool_EnumerateRebalanceJobs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "storagepools", "rebalance", "job"}, "")) ) var ( @@ -9580,12 +3768,6 @@ var ( forward_OpenStoragePool_GetRebalanceJobStatus_0 = runtime.ForwardResponseMessage forward_OpenStoragePool_EnumerateRebalanceJobs_0 = runtime.ForwardResponseMessage - - forward_OpenStoragePool_CreateRebalanceSchedule_0 = runtime.ForwardResponseMessage - - forward_OpenStoragePool_GetRebalanceSchedule_0 = runtime.ForwardResponseMessage - - forward_OpenStoragePool_DeleteRebalanceSchedule_0 = runtime.ForwardResponseMessage ) // RegisterOpenStorageDiagsHandlerFromEndpoint is same as RegisterOpenStorageDiagsHandler but @@ -9598,14 +3780,14 @@ func RegisterOpenStorageDiagsHandlerFromEndpoint(ctx context.Context, mux *runti defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -9619,8 +3801,8 @@ func RegisterOpenStorageDiagsHandler(ctx context.Context, mux *runtime.ServeMux, return RegisterOpenStorageDiagsHandlerClient(ctx, mux, NewOpenStorageDiagsClient(conn)) } -// RegisterOpenStorageDiagsHandlerClient registers the http handlers for service OpenStorageDiags -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageDiagsClient". +// RegisterOpenStorageDiagsHandler registers the http handlers for service OpenStorageDiags to "mux". +// The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageDiagsClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStorageDiagsClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "OpenStorageDiagsClient" to call the correct interceptors. @@ -9629,6 +3811,15 @@ func RegisterOpenStorageDiagsHandlerClient(ctx context.Context, mux *runtime.Ser mux.Handle("POST", pattern_OpenStorageDiags_Collect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -9650,7 +3841,7 @@ func RegisterOpenStorageDiagsHandlerClient(ctx context.Context, mux *runtime.Ser } var ( - pattern_OpenStorageDiags_Collect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "diags"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageDiags_Collect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "diags"}, "")) ) var ( @@ -9667,14 +3858,14 @@ func RegisterOpenStorageJobHandlerFromEndpoint(ctx context.Context, mux *runtime defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -9688,8 +3879,8 @@ func RegisterOpenStorageJobHandler(ctx context.Context, mux *runtime.ServeMux, c return RegisterOpenStorageJobHandlerClient(ctx, mux, NewOpenStorageJobClient(conn)) } -// RegisterOpenStorageJobHandlerClient registers the http handlers for service OpenStorageJob -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageJobClient". +// RegisterOpenStorageJobHandler registers the http handlers for service OpenStorageJob to "mux". +// The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageJobClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStorageJobClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "OpenStorageJobClient" to call the correct interceptors. @@ -9698,6 +3889,15 @@ func RegisterOpenStorageJobHandlerClient(ctx context.Context, mux *runtime.Serve mux.Handle("PUT", pattern_OpenStorageJob_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -9718,6 +3918,15 @@ func RegisterOpenStorageJobHandlerClient(ctx context.Context, mux *runtime.Serve mux.Handle("GET", pattern_OpenStorageJob_GetStatus_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -9738,6 +3947,15 @@ func RegisterOpenStorageJobHandlerClient(ctx context.Context, mux *runtime.Serve mux.Handle("GET", pattern_OpenStorageJob_Enumerate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -9759,11 +3977,11 @@ func RegisterOpenStorageJobHandlerClient(ctx context.Context, mux *runtime.Serve } var ( - pattern_OpenStorageJob_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "jobs", "id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageJob_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "jobs", "id"}, "")) - pattern_OpenStorageJob_GetStatus_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "jobs", "id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageJob_GetStatus_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "jobs", "id"}, "")) - pattern_OpenStorageJob_Enumerate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "jobs"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageJob_Enumerate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "jobs"}, "")) ) var ( @@ -9784,14 +4002,14 @@ func RegisterOpenStorageNodeHandlerFromEndpoint(ctx context.Context, mux *runtim defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -9805,8 +4023,8 @@ func RegisterOpenStorageNodeHandler(ctx context.Context, mux *runtime.ServeMux, return RegisterOpenStorageNodeHandlerClient(ctx, mux, NewOpenStorageNodeClient(conn)) } -// RegisterOpenStorageNodeHandlerClient registers the http handlers for service OpenStorageNode -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageNodeClient". +// RegisterOpenStorageNodeHandler registers the http handlers for service OpenStorageNode to "mux". +// The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageNodeClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStorageNodeClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "OpenStorageNodeClient" to call the correct interceptors. @@ -9815,6 +4033,15 @@ func RegisterOpenStorageNodeHandlerClient(ctx context.Context, mux *runtime.Serv mux.Handle("GET", pattern_OpenStorageNode_Inspect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -9835,6 +4062,15 @@ func RegisterOpenStorageNodeHandlerClient(ctx context.Context, mux *runtime.Serv mux.Handle("GET", pattern_OpenStorageNode_InspectCurrent_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -9855,6 +4091,15 @@ func RegisterOpenStorageNodeHandlerClient(ctx context.Context, mux *runtime.Serv mux.Handle("GET", pattern_OpenStorageNode_Enumerate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -9875,6 +4120,15 @@ func RegisterOpenStorageNodeHandlerClient(ctx context.Context, mux *runtime.Serv mux.Handle("GET", pattern_OpenStorageNode_EnumerateWithFilters_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -9895,6 +4149,15 @@ func RegisterOpenStorageNodeHandlerClient(ctx context.Context, mux *runtime.Serv mux.Handle("GET", pattern_OpenStorageNode_VolumeUsageByNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -9912,103 +4175,148 @@ func RegisterOpenStorageNodeHandlerClient(ctx context.Context, mux *runtime.Serv }) - mux.Handle("GET", pattern_OpenStorageNode_RelaxedReclaimPurge_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PUT", pattern_OpenStorageNode_DrainAttachments_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OpenStorageNode_RelaxedReclaimPurge_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_OpenStorageNode_DrainAttachments_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_OpenStorageNode_RelaxedReclaimPurge_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OpenStorageNode_DrainAttachments_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("PUT", pattern_OpenStorageNode_DrainAttachments_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PUT", pattern_OpenStorageNode_CordonAttachments_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OpenStorageNode_DrainAttachments_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_OpenStorageNode_CordonAttachments_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_OpenStorageNode_DrainAttachments_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OpenStorageNode_CordonAttachments_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("PUT", pattern_OpenStorageNode_CordonAttachments_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PUT", pattern_OpenStorageNode_UncordonAttachments_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OpenStorageNode_CordonAttachments_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_OpenStorageNode_UncordonAttachments_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_OpenStorageNode_CordonAttachments_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OpenStorageNode_UncordonAttachments_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("PUT", pattern_OpenStorageNode_UncordonAttachments_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_OpenStorageNode_VolumeBytesUsedByNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OpenStorageNode_UncordonAttachments_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_OpenStorageNode_VolumeBytesUsedByNode_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_OpenStorageNode_UncordonAttachments_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OpenStorageNode_VolumeBytesUsedByNode_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_OpenStorageNode_VolumeBytesUsedByNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_OpenStorageNode_FilterNonOverlappingNodes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_OpenStorageNode_VolumeBytesUsedByNode_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_OpenStorageNode_FilterNonOverlappingNodes_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_OpenStorageNode_VolumeBytesUsedByNode_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_OpenStorageNode_FilterNonOverlappingNodes_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -10016,25 +4324,25 @@ func RegisterOpenStorageNodeHandlerClient(ctx context.Context, mux *runtime.Serv } var ( - pattern_OpenStorageNode_Inspect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "nodes", "inspect", "node_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageNode_Inspect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "nodes", "inspect", "node_id"}, "")) - pattern_OpenStorageNode_InspectCurrent_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "nodes", "inspectcurrent"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageNode_InspectCurrent_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "nodes", "inspectcurrent"}, "")) - pattern_OpenStorageNode_Enumerate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "nodes"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageNode_Enumerate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "nodes"}, "")) - pattern_OpenStorageNode_EnumerateWithFilters_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "nodes", "filters"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageNode_EnumerateWithFilters_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "nodes", "filters"}, "")) - pattern_OpenStorageNode_VolumeUsageByNode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "nodes", "usage", "node_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageNode_VolumeUsageByNode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "nodes", "usage", "node_id"}, "")) - pattern_OpenStorageNode_RelaxedReclaimPurge_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "nodes", "usage", "node_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageNode_DrainAttachments_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "nodes", "attachments", "drain", "node_id"}, "")) - pattern_OpenStorageNode_DrainAttachments_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "nodes", "attachments", "drain", "node_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageNode_CordonAttachments_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "nodes", "attachments", "disable", "node_id"}, "")) - pattern_OpenStorageNode_CordonAttachments_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "nodes", "attachments", "disable", "node_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageNode_UncordonAttachments_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "nodes", "attachments", "enable", "node_id"}, "")) - pattern_OpenStorageNode_UncordonAttachments_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "nodes", "attachments", "enable", "node_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageNode_VolumeBytesUsedByNode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "nodes", "bytesused"}, "")) - pattern_OpenStorageNode_VolumeBytesUsedByNode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "nodes", "bytesused"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageNode_FilterNonOverlappingNodes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "nodes", "filter-nonoverlapping"}, "")) ) var ( @@ -10048,8 +4356,6 @@ var ( forward_OpenStorageNode_VolumeUsageByNode_0 = runtime.ForwardResponseMessage - forward_OpenStorageNode_RelaxedReclaimPurge_0 = runtime.ForwardResponseMessage - forward_OpenStorageNode_DrainAttachments_0 = runtime.ForwardResponseMessage forward_OpenStorageNode_CordonAttachments_0 = runtime.ForwardResponseMessage @@ -10057,6 +4363,8 @@ var ( forward_OpenStorageNode_UncordonAttachments_0 = runtime.ForwardResponseMessage forward_OpenStorageNode_VolumeBytesUsedByNode_0 = runtime.ForwardResponseMessage + + forward_OpenStorageNode_FilterNonOverlappingNodes_0 = runtime.ForwardResponseMessage ) // RegisterOpenStorageBucketHandlerFromEndpoint is same as RegisterOpenStorageBucketHandler but @@ -10069,14 +4377,14 @@ func RegisterOpenStorageBucketHandlerFromEndpoint(ctx context.Context, mux *runt defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -10090,8 +4398,8 @@ func RegisterOpenStorageBucketHandler(ctx context.Context, mux *runtime.ServeMux return RegisterOpenStorageBucketHandlerClient(ctx, mux, NewOpenStorageBucketClient(conn)) } -// RegisterOpenStorageBucketHandlerClient registers the http handlers for service OpenStorageBucket -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageBucketClient". +// RegisterOpenStorageBucketHandler registers the http handlers for service OpenStorageBucket to "mux". +// The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageBucketClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStorageBucketClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "OpenStorageBucketClient" to call the correct interceptors. @@ -10100,6 +4408,15 @@ func RegisterOpenStorageBucketHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("POST", pattern_OpenStorageBucket_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10120,6 +4437,15 @@ func RegisterOpenStorageBucketHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("DELETE", pattern_OpenStorageBucket_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10140,6 +4466,15 @@ func RegisterOpenStorageBucketHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("POST", pattern_OpenStorageBucket_GrantAccess_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10160,6 +4495,15 @@ func RegisterOpenStorageBucketHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("POST", pattern_OpenStorageBucket_RevokeAccess_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10181,13 +4525,13 @@ func RegisterOpenStorageBucketHandlerClient(ctx context.Context, mux *runtime.Se } var ( - pattern_OpenStorageBucket_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "bucket"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageBucket_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "bucket"}, "")) - pattern_OpenStorageBucket_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "bucket", "bucket_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageBucket_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "bucket", "bucket_id"}, "")) - pattern_OpenStorageBucket_GrantAccess_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "bucket", "access", "bucket_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageBucket_GrantAccess_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "bucket", "access", "bucket_id"}, "")) - pattern_OpenStorageBucket_RevokeAccess_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "bucket", "revoke", "bucket_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageBucket_RevokeAccess_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "bucket", "revoke", "bucket_id"}, "")) ) var ( @@ -10210,14 +4554,14 @@ func RegisterOpenStorageVolumeHandlerFromEndpoint(ctx context.Context, mux *runt defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -10231,8 +4575,8 @@ func RegisterOpenStorageVolumeHandler(ctx context.Context, mux *runtime.ServeMux return RegisterOpenStorageVolumeHandlerClient(ctx, mux, NewOpenStorageVolumeClient(conn)) } -// RegisterOpenStorageVolumeHandlerClient registers the http handlers for service OpenStorageVolume -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageVolumeClient". +// RegisterOpenStorageVolumeHandler registers the http handlers for service OpenStorageVolume to "mux". +// The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageVolumeClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStorageVolumeClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "OpenStorageVolumeClient" to call the correct interceptors. @@ -10241,6 +4585,15 @@ func RegisterOpenStorageVolumeHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("POST", pattern_OpenStorageVolume_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10261,6 +4614,15 @@ func RegisterOpenStorageVolumeHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("POST", pattern_OpenStorageVolume_Clone_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10281,6 +4643,15 @@ func RegisterOpenStorageVolumeHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("DELETE", pattern_OpenStorageVolume_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10301,6 +4672,15 @@ func RegisterOpenStorageVolumeHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("GET", pattern_OpenStorageVolume_Inspect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10321,6 +4701,15 @@ func RegisterOpenStorageVolumeHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("POST", pattern_OpenStorageVolume_InspectWithFilters_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10341,6 +4730,15 @@ func RegisterOpenStorageVolumeHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("PUT", pattern_OpenStorageVolume_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10361,6 +4759,15 @@ func RegisterOpenStorageVolumeHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("GET", pattern_OpenStorageVolume_Stats_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10381,6 +4788,15 @@ func RegisterOpenStorageVolumeHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("GET", pattern_OpenStorageVolume_CapacityUsage_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10401,6 +4817,15 @@ func RegisterOpenStorageVolumeHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("GET", pattern_OpenStorageVolume_Enumerate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10421,6 +4846,15 @@ func RegisterOpenStorageVolumeHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("POST", pattern_OpenStorageVolume_EnumerateWithFilters_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10441,6 +4875,15 @@ func RegisterOpenStorageVolumeHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("POST", pattern_OpenStorageVolume_SnapshotCreate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10461,6 +4904,15 @@ func RegisterOpenStorageVolumeHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("POST", pattern_OpenStorageVolume_SnapshotRestore_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10481,6 +4933,15 @@ func RegisterOpenStorageVolumeHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("GET", pattern_OpenStorageVolume_SnapshotEnumerate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10501,6 +4962,15 @@ func RegisterOpenStorageVolumeHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("POST", pattern_OpenStorageVolume_SnapshotEnumerateWithFilters_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10521,6 +4991,15 @@ func RegisterOpenStorageVolumeHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("POST", pattern_OpenStorageVolume_SnapshotScheduleUpdate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10541,6 +5020,15 @@ func RegisterOpenStorageVolumeHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("POST", pattern_OpenStorageVolume_VolumeCatalog_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10562,37 +5050,37 @@ func RegisterOpenStorageVolumeHandlerClient(ctx context.Context, mux *runtime.Se } var ( - pattern_OpenStorageVolume_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "volumes"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageVolume_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "volumes"}, "")) - pattern_OpenStorageVolume_Clone_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "volumes", "clone"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageVolume_Clone_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "volumes", "clone"}, "")) - pattern_OpenStorageVolume_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "volumes", "volume_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageVolume_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "volumes", "volume_id"}, "")) - pattern_OpenStorageVolume_Inspect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "volumes", "inspect", "volume_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageVolume_Inspect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "volumes", "inspect", "volume_id"}, "")) - pattern_OpenStorageVolume_InspectWithFilters_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "volumes", "inspectwithfilters"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageVolume_InspectWithFilters_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "volumes", "inspectwithfilters"}, "")) - pattern_OpenStorageVolume_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "volumes", "volume_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageVolume_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "volumes", "volume_id"}, "")) - pattern_OpenStorageVolume_Stats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "volumes", "stats", "volume_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageVolume_Stats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "volumes", "stats", "volume_id"}, "")) - pattern_OpenStorageVolume_CapacityUsage_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "volumes", "usage", "volume_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageVolume_CapacityUsage_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "volumes", "usage", "volume_id"}, "")) - pattern_OpenStorageVolume_Enumerate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "volumes"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageVolume_Enumerate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "volumes"}, "")) - pattern_OpenStorageVolume_EnumerateWithFilters_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "volumes", "filters"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageVolume_EnumerateWithFilters_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "volumes", "filters"}, "")) - pattern_OpenStorageVolume_SnapshotCreate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "volumes", "snapshots"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageVolume_SnapshotCreate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "volumes", "snapshots"}, "")) - pattern_OpenStorageVolume_SnapshotRestore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "volumes", "snapshots", "restore"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageVolume_SnapshotRestore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "volumes", "snapshots", "restore"}, "")) - pattern_OpenStorageVolume_SnapshotEnumerate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "volumes", "snapshots"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageVolume_SnapshotEnumerate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "volumes", "snapshots"}, "")) - pattern_OpenStorageVolume_SnapshotEnumerateWithFilters_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "volumes", "snapshots", "filters", "volume_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageVolume_SnapshotEnumerateWithFilters_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "volumes", "snapshots", "filters", "volume_id"}, "")) - pattern_OpenStorageVolume_SnapshotScheduleUpdate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "volumes", "snapshot", "schedules", "volume_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageVolume_SnapshotScheduleUpdate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "volumes", "snapshot", "schedules", "volume_id"}, "")) - pattern_OpenStorageVolume_VolumeCatalog_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "volume", "catalog"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageVolume_VolumeCatalog_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "volume", "catalog"}, "")) ) var ( @@ -10639,14 +5127,14 @@ func RegisterOpenStorageWatchHandlerFromEndpoint(ctx context.Context, mux *runti defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -10660,8 +5148,8 @@ func RegisterOpenStorageWatchHandler(ctx context.Context, mux *runtime.ServeMux, return RegisterOpenStorageWatchHandlerClient(ctx, mux, NewOpenStorageWatchClient(conn)) } -// RegisterOpenStorageWatchHandlerClient registers the http handlers for service OpenStorageWatch -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageWatchClient". +// RegisterOpenStorageWatchHandler registers the http handlers for service OpenStorageWatch to "mux". +// The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageWatchClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStorageWatchClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "OpenStorageWatchClient" to call the correct interceptors. @@ -10670,6 +5158,15 @@ func RegisterOpenStorageWatchHandlerClient(ctx context.Context, mux *runtime.Ser mux.Handle("POST", pattern_OpenStorageWatch_Watch_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10691,7 +5188,7 @@ func RegisterOpenStorageWatchHandlerClient(ctx context.Context, mux *runtime.Ser } var ( - pattern_OpenStorageWatch_Watch_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "watch"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageWatch_Watch_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "watch"}, "")) ) var ( @@ -10708,14 +5205,14 @@ func RegisterOpenStorageMountAttachHandlerFromEndpoint(ctx context.Context, mux defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -10729,8 +5226,8 @@ func RegisterOpenStorageMountAttachHandler(ctx context.Context, mux *runtime.Ser return RegisterOpenStorageMountAttachHandlerClient(ctx, mux, NewOpenStorageMountAttachClient(conn)) } -// RegisterOpenStorageMountAttachHandlerClient registers the http handlers for service OpenStorageMountAttach -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageMountAttachClient". +// RegisterOpenStorageMountAttachHandler registers the http handlers for service OpenStorageMountAttach to "mux". +// The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageMountAttachClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStorageMountAttachClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "OpenStorageMountAttachClient" to call the correct interceptors. @@ -10739,6 +5236,15 @@ func RegisterOpenStorageMountAttachHandlerClient(ctx context.Context, mux *runti mux.Handle("POST", pattern_OpenStorageMountAttach_Attach_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10759,6 +5265,15 @@ func RegisterOpenStorageMountAttachHandlerClient(ctx context.Context, mux *runti mux.Handle("POST", pattern_OpenStorageMountAttach_Detach_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10779,6 +5294,15 @@ func RegisterOpenStorageMountAttachHandlerClient(ctx context.Context, mux *runti mux.Handle("POST", pattern_OpenStorageMountAttach_Mount_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10799,6 +5323,15 @@ func RegisterOpenStorageMountAttachHandlerClient(ctx context.Context, mux *runti mux.Handle("POST", pattern_OpenStorageMountAttach_Unmount_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10820,13 +5353,13 @@ func RegisterOpenStorageMountAttachHandlerClient(ctx context.Context, mux *runti } var ( - pattern_OpenStorageMountAttach_Attach_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "mountattach", "attach"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageMountAttach_Attach_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "mountattach", "attach"}, "")) - pattern_OpenStorageMountAttach_Detach_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "mountattach", "detach"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageMountAttach_Detach_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "mountattach", "detach"}, "")) - pattern_OpenStorageMountAttach_Mount_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "mountattach", "mount"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageMountAttach_Mount_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "mountattach", "mount"}, "")) - pattern_OpenStorageMountAttach_Unmount_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "mountattach", "unmount"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageMountAttach_Unmount_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "mountattach", "unmount"}, "")) ) var ( @@ -10849,14 +5382,14 @@ func RegisterOpenStorageMigrateHandlerFromEndpoint(ctx context.Context, mux *run defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -10870,8 +5403,8 @@ func RegisterOpenStorageMigrateHandler(ctx context.Context, mux *runtime.ServeMu return RegisterOpenStorageMigrateHandlerClient(ctx, mux, NewOpenStorageMigrateClient(conn)) } -// RegisterOpenStorageMigrateHandlerClient registers the http handlers for service OpenStorageMigrate -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageMigrateClient". +// RegisterOpenStorageMigrateHandler registers the http handlers for service OpenStorageMigrate to "mux". +// The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageMigrateClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStorageMigrateClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "OpenStorageMigrateClient" to call the correct interceptors. @@ -10880,6 +5413,15 @@ func RegisterOpenStorageMigrateHandlerClient(ctx context.Context, mux *runtime.S mux.Handle("POST", pattern_OpenStorageMigrate_Start_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10900,6 +5442,15 @@ func RegisterOpenStorageMigrateHandlerClient(ctx context.Context, mux *runtime.S mux.Handle("POST", pattern_OpenStorageMigrate_Cancel_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10920,6 +5471,15 @@ func RegisterOpenStorageMigrateHandlerClient(ctx context.Context, mux *runtime.S mux.Handle("GET", pattern_OpenStorageMigrate_Status_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -10941,11 +5501,11 @@ func RegisterOpenStorageMigrateHandlerClient(ctx context.Context, mux *runtime.S } var ( - pattern_OpenStorageMigrate_Start_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "volumemigrate"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageMigrate_Start_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "volumemigrate"}, "")) - pattern_OpenStorageMigrate_Cancel_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "volumemigrate", "cancel"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageMigrate_Cancel_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "volumemigrate", "cancel"}, "")) - pattern_OpenStorageMigrate_Status_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "volumemigrate"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageMigrate_Status_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "volumemigrate"}, "")) ) var ( @@ -10966,14 +5526,14 @@ func RegisterOpenStorageObjectstoreHandlerFromEndpoint(ctx context.Context, mux defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -10987,8 +5547,8 @@ func RegisterOpenStorageObjectstoreHandler(ctx context.Context, mux *runtime.Ser return RegisterOpenStorageObjectstoreHandlerClient(ctx, mux, NewOpenStorageObjectstoreClient(conn)) } -// RegisterOpenStorageObjectstoreHandlerClient registers the http handlers for service OpenStorageObjectstore -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageObjectstoreClient". +// RegisterOpenStorageObjectstoreHandler registers the http handlers for service OpenStorageObjectstore to "mux". +// The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageObjectstoreClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStorageObjectstoreClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "OpenStorageObjectstoreClient" to call the correct interceptors. @@ -10997,6 +5557,15 @@ func RegisterOpenStorageObjectstoreHandlerClient(ctx context.Context, mux *runti mux.Handle("GET", pattern_OpenStorageObjectstore_Inspect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11017,6 +5586,15 @@ func RegisterOpenStorageObjectstoreHandlerClient(ctx context.Context, mux *runti mux.Handle("POST", pattern_OpenStorageObjectstore_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11037,6 +5615,15 @@ func RegisterOpenStorageObjectstoreHandlerClient(ctx context.Context, mux *runti mux.Handle("DELETE", pattern_OpenStorageObjectstore_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11057,6 +5644,15 @@ func RegisterOpenStorageObjectstoreHandlerClient(ctx context.Context, mux *runti mux.Handle("PUT", pattern_OpenStorageObjectstore_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11078,13 +5674,13 @@ func RegisterOpenStorageObjectstoreHandlerClient(ctx context.Context, mux *runti } var ( - pattern_OpenStorageObjectstore_Inspect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "objectstores", "inspect", "objectstore_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageObjectstore_Inspect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "objectstores", "inspect", "objectstore_id"}, "")) - pattern_OpenStorageObjectstore_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "objectstores"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageObjectstore_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "objectstores"}, "")) - pattern_OpenStorageObjectstore_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "objectstores", "objectstore_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageObjectstore_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "objectstores", "objectstore_id"}, "")) - pattern_OpenStorageObjectstore_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "objectstores", "objectstore_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageObjectstore_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "objectstores", "objectstore_id"}, "")) ) var ( @@ -11107,14 +5703,14 @@ func RegisterOpenStorageCredentialsHandlerFromEndpoint(ctx context.Context, mux defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -11128,8 +5724,8 @@ func RegisterOpenStorageCredentialsHandler(ctx context.Context, mux *runtime.Ser return RegisterOpenStorageCredentialsHandlerClient(ctx, mux, NewOpenStorageCredentialsClient(conn)) } -// RegisterOpenStorageCredentialsHandlerClient registers the http handlers for service OpenStorageCredentials -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageCredentialsClient". +// RegisterOpenStorageCredentialsHandler registers the http handlers for service OpenStorageCredentials to "mux". +// The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageCredentialsClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStorageCredentialsClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "OpenStorageCredentialsClient" to call the correct interceptors. @@ -11138,6 +5734,15 @@ func RegisterOpenStorageCredentialsHandlerClient(ctx context.Context, mux *runti mux.Handle("POST", pattern_OpenStorageCredentials_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11158,6 +5763,15 @@ func RegisterOpenStorageCredentialsHandlerClient(ctx context.Context, mux *runti mux.Handle("PUT", pattern_OpenStorageCredentials_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11178,6 +5792,15 @@ func RegisterOpenStorageCredentialsHandlerClient(ctx context.Context, mux *runti mux.Handle("GET", pattern_OpenStorageCredentials_Enumerate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11198,6 +5821,15 @@ func RegisterOpenStorageCredentialsHandlerClient(ctx context.Context, mux *runti mux.Handle("GET", pattern_OpenStorageCredentials_Inspect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11218,6 +5850,15 @@ func RegisterOpenStorageCredentialsHandlerClient(ctx context.Context, mux *runti mux.Handle("DELETE", pattern_OpenStorageCredentials_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11238,6 +5879,15 @@ func RegisterOpenStorageCredentialsHandlerClient(ctx context.Context, mux *runti mux.Handle("GET", pattern_OpenStorageCredentials_Validate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11258,6 +5908,15 @@ func RegisterOpenStorageCredentialsHandlerClient(ctx context.Context, mux *runti mux.Handle("DELETE", pattern_OpenStorageCredentials_DeleteReferences_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11279,19 +5938,19 @@ func RegisterOpenStorageCredentialsHandlerClient(ctx context.Context, mux *runti } var ( - pattern_OpenStorageCredentials_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "credentials"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCredentials_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "credentials"}, "")) - pattern_OpenStorageCredentials_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "credentials", "credential_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCredentials_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "credentials", "credential_id"}, "")) - pattern_OpenStorageCredentials_Enumerate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "credentials"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCredentials_Enumerate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "credentials"}, "")) - pattern_OpenStorageCredentials_Inspect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "credentials", "inspect", "credential_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCredentials_Inspect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "credentials", "inspect", "credential_id"}, "")) - pattern_OpenStorageCredentials_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "credentials", "credential_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCredentials_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "credentials", "credential_id"}, "")) - pattern_OpenStorageCredentials_Validate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "credentials", "validate", "credential_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCredentials_Validate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "credentials", "validate", "credential_id"}, "")) - pattern_OpenStorageCredentials_DeleteReferences_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "credentials", "references", "credential_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCredentials_DeleteReferences_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "credentials", "references", "credential_id"}, "")) ) var ( @@ -11320,14 +5979,14 @@ func RegisterOpenStorageSchedulePolicyHandlerFromEndpoint(ctx context.Context, m defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -11341,8 +6000,8 @@ func RegisterOpenStorageSchedulePolicyHandler(ctx context.Context, mux *runtime. return RegisterOpenStorageSchedulePolicyHandlerClient(ctx, mux, NewOpenStorageSchedulePolicyClient(conn)) } -// RegisterOpenStorageSchedulePolicyHandlerClient registers the http handlers for service OpenStorageSchedulePolicy -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageSchedulePolicyClient". +// RegisterOpenStorageSchedulePolicyHandler registers the http handlers for service OpenStorageSchedulePolicy to "mux". +// The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageSchedulePolicyClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStorageSchedulePolicyClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "OpenStorageSchedulePolicyClient" to call the correct interceptors. @@ -11351,6 +6010,15 @@ func RegisterOpenStorageSchedulePolicyHandlerClient(ctx context.Context, mux *ru mux.Handle("POST", pattern_OpenStorageSchedulePolicy_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11371,6 +6039,15 @@ func RegisterOpenStorageSchedulePolicyHandlerClient(ctx context.Context, mux *ru mux.Handle("PUT", pattern_OpenStorageSchedulePolicy_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11391,6 +6068,15 @@ func RegisterOpenStorageSchedulePolicyHandlerClient(ctx context.Context, mux *ru mux.Handle("GET", pattern_OpenStorageSchedulePolicy_Enumerate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11411,6 +6097,15 @@ func RegisterOpenStorageSchedulePolicyHandlerClient(ctx context.Context, mux *ru mux.Handle("GET", pattern_OpenStorageSchedulePolicy_Inspect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11431,6 +6126,15 @@ func RegisterOpenStorageSchedulePolicyHandlerClient(ctx context.Context, mux *ru mux.Handle("DELETE", pattern_OpenStorageSchedulePolicy_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11452,15 +6156,15 @@ func RegisterOpenStorageSchedulePolicyHandlerClient(ctx context.Context, mux *ru } var ( - pattern_OpenStorageSchedulePolicy_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "schedulepolicies"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageSchedulePolicy_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "schedulepolicies"}, "")) - pattern_OpenStorageSchedulePolicy_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "schedulepolicies"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageSchedulePolicy_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "schedulepolicies"}, "")) - pattern_OpenStorageSchedulePolicy_Enumerate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "schedulepolicies"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageSchedulePolicy_Enumerate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "schedulepolicies"}, "")) - pattern_OpenStorageSchedulePolicy_Inspect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "schedulepolicies", "inspect", "name"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageSchedulePolicy_Inspect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "schedulepolicies", "inspect", "name"}, "")) - pattern_OpenStorageSchedulePolicy_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "schedulepolicies", "name"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageSchedulePolicy_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "schedulepolicies", "name"}, "")) ) var ( @@ -11485,14 +6189,14 @@ func RegisterOpenStorageCloudBackupHandlerFromEndpoint(ctx context.Context, mux defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -11506,8 +6210,8 @@ func RegisterOpenStorageCloudBackupHandler(ctx context.Context, mux *runtime.Ser return RegisterOpenStorageCloudBackupHandlerClient(ctx, mux, NewOpenStorageCloudBackupClient(conn)) } -// RegisterOpenStorageCloudBackupHandlerClient registers the http handlers for service OpenStorageCloudBackup -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageCloudBackupClient". +// RegisterOpenStorageCloudBackupHandler registers the http handlers for service OpenStorageCloudBackup to "mux". +// The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageCloudBackupClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStorageCloudBackupClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "OpenStorageCloudBackupClient" to call the correct interceptors. @@ -11516,6 +6220,15 @@ func RegisterOpenStorageCloudBackupHandlerClient(ctx context.Context, mux *runti mux.Handle("POST", pattern_OpenStorageCloudBackup_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11536,6 +6249,15 @@ func RegisterOpenStorageCloudBackupHandlerClient(ctx context.Context, mux *runti mux.Handle("POST", pattern_OpenStorageCloudBackup_GroupCreate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11556,6 +6278,15 @@ func RegisterOpenStorageCloudBackupHandlerClient(ctx context.Context, mux *runti mux.Handle("POST", pattern_OpenStorageCloudBackup_Restore_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11576,6 +6307,15 @@ func RegisterOpenStorageCloudBackupHandlerClient(ctx context.Context, mux *runti mux.Handle("DELETE", pattern_OpenStorageCloudBackup_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11596,6 +6336,15 @@ func RegisterOpenStorageCloudBackupHandlerClient(ctx context.Context, mux *runti mux.Handle("POST", pattern_OpenStorageCloudBackup_DeleteAll_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11616,6 +6365,15 @@ func RegisterOpenStorageCloudBackupHandlerClient(ctx context.Context, mux *runti mux.Handle("POST", pattern_OpenStorageCloudBackup_EnumerateWithFilters_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11636,6 +6394,15 @@ func RegisterOpenStorageCloudBackupHandlerClient(ctx context.Context, mux *runti mux.Handle("POST", pattern_OpenStorageCloudBackup_Status_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11656,6 +6423,15 @@ func RegisterOpenStorageCloudBackupHandlerClient(ctx context.Context, mux *runti mux.Handle("POST", pattern_OpenStorageCloudBackup_Catalog_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11676,6 +6452,15 @@ func RegisterOpenStorageCloudBackupHandlerClient(ctx context.Context, mux *runti mux.Handle("GET", pattern_OpenStorageCloudBackup_History_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11696,6 +6481,15 @@ func RegisterOpenStorageCloudBackupHandlerClient(ctx context.Context, mux *runti mux.Handle("POST", pattern_OpenStorageCloudBackup_StateChange_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11716,6 +6510,15 @@ func RegisterOpenStorageCloudBackupHandlerClient(ctx context.Context, mux *runti mux.Handle("POST", pattern_OpenStorageCloudBackup_SchedCreate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11736,6 +6539,15 @@ func RegisterOpenStorageCloudBackupHandlerClient(ctx context.Context, mux *runti mux.Handle("PUT", pattern_OpenStorageCloudBackup_SchedUpdate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11756,6 +6568,15 @@ func RegisterOpenStorageCloudBackupHandlerClient(ctx context.Context, mux *runti mux.Handle("DELETE", pattern_OpenStorageCloudBackup_SchedDelete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11776,6 +6597,15 @@ func RegisterOpenStorageCloudBackupHandlerClient(ctx context.Context, mux *runti mux.Handle("GET", pattern_OpenStorageCloudBackup_SchedEnumerate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11796,6 +6626,15 @@ func RegisterOpenStorageCloudBackupHandlerClient(ctx context.Context, mux *runti mux.Handle("GET", pattern_OpenStorageCloudBackup_Size_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11817,35 +6656,35 @@ func RegisterOpenStorageCloudBackupHandlerClient(ctx context.Context, mux *runti } var ( - pattern_OpenStorageCloudBackup_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "cloudbackups"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCloudBackup_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "cloudbackups"}, "")) - pattern_OpenStorageCloudBackup_GroupCreate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "cloudbackups", "group"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCloudBackup_GroupCreate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "cloudbackups", "group"}, "")) - pattern_OpenStorageCloudBackup_Restore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "cloudbackups", "restore"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCloudBackup_Restore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "cloudbackups", "restore"}, "")) - pattern_OpenStorageCloudBackup_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "cloudbackups", "backup", "backup_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCloudBackup_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "cloudbackups", "backup", "backup_id"}, "")) - pattern_OpenStorageCloudBackup_DeleteAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "cloudbackups", "deleteall"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCloudBackup_DeleteAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "cloudbackups", "deleteall"}, "")) - pattern_OpenStorageCloudBackup_EnumerateWithFilters_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "cloudbackups", "enumerate", "filters"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCloudBackup_EnumerateWithFilters_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "cloudbackups", "enumerate", "filters"}, "")) - pattern_OpenStorageCloudBackup_Status_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "cloudbackups", "status"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCloudBackup_Status_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "cloudbackups", "status"}, "")) - pattern_OpenStorageCloudBackup_Catalog_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "cloudbackups", "catalog"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCloudBackup_Catalog_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "cloudbackups", "catalog"}, "")) - pattern_OpenStorageCloudBackup_History_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "cloudbackups", "history", "src_volume_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCloudBackup_History_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "cloudbackups", "history", "src_volume_id"}, "")) - pattern_OpenStorageCloudBackup_StateChange_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "cloudbackups", "statechange"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCloudBackup_StateChange_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "cloudbackups", "statechange"}, "")) - pattern_OpenStorageCloudBackup_SchedCreate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "cloudbackups", "schedules"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCloudBackup_SchedCreate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "cloudbackups", "schedules"}, "")) - pattern_OpenStorageCloudBackup_SchedUpdate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "cloudbackups", "schedules"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCloudBackup_SchedUpdate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "cloudbackups", "schedules"}, "")) - pattern_OpenStorageCloudBackup_SchedDelete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "cloudbackups", "schedules", "backup_schedule_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCloudBackup_SchedDelete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "cloudbackups", "schedules", "backup_schedule_id"}, "")) - pattern_OpenStorageCloudBackup_SchedEnumerate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "cloudbackups", "schedules"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCloudBackup_SchedEnumerate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "cloudbackups", "schedules"}, "")) - pattern_OpenStorageCloudBackup_Size_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "cloudbackups", "size"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStorageCloudBackup_Size_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "cloudbackups", "size"}, "")) ) var ( @@ -11890,14 +6729,14 @@ func RegisterOpenStoragePolicyHandlerFromEndpoint(ctx context.Context, mux *runt defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -11911,8 +6750,8 @@ func RegisterOpenStoragePolicyHandler(ctx context.Context, mux *runtime.ServeMux return RegisterOpenStoragePolicyHandlerClient(ctx, mux, NewOpenStoragePolicyClient(conn)) } -// RegisterOpenStoragePolicyHandlerClient registers the http handlers for service OpenStoragePolicy -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStoragePolicyClient". +// RegisterOpenStoragePolicyHandler registers the http handlers for service OpenStoragePolicy to "mux". +// The handlers forward requests to the grpc endpoint over the given implementation of "OpenStoragePolicyClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStoragePolicyClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "OpenStoragePolicyClient" to call the correct interceptors. @@ -11921,6 +6760,15 @@ func RegisterOpenStoragePolicyHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("POST", pattern_OpenStoragePolicy_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11941,6 +6789,15 @@ func RegisterOpenStoragePolicyHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("GET", pattern_OpenStoragePolicy_Enumerate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11961,6 +6818,15 @@ func RegisterOpenStoragePolicyHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("GET", pattern_OpenStoragePolicy_Inspect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -11981,6 +6847,15 @@ func RegisterOpenStoragePolicyHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("PUT", pattern_OpenStoragePolicy_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -12001,6 +6876,15 @@ func RegisterOpenStoragePolicyHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("DELETE", pattern_OpenStoragePolicy_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -12021,6 +6905,15 @@ func RegisterOpenStoragePolicyHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("POST", pattern_OpenStoragePolicy_SetDefault_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -12041,6 +6934,15 @@ func RegisterOpenStoragePolicyHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("GET", pattern_OpenStoragePolicy_DefaultInspect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -12061,6 +6963,15 @@ func RegisterOpenStoragePolicyHandlerClient(ctx context.Context, mux *runtime.Se mux.Handle("POST", pattern_OpenStoragePolicy_Release_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -12082,21 +6993,21 @@ func RegisterOpenStoragePolicyHandlerClient(ctx context.Context, mux *runtime.Se } var ( - pattern_OpenStoragePolicy_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "storagepolicies"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStoragePolicy_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "storagepolicies"}, "")) - pattern_OpenStoragePolicy_Enumerate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "storagepolicies"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStoragePolicy_Enumerate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "storagepolicies"}, "")) - pattern_OpenStoragePolicy_Inspect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "storagepolicies", "inspect", "name"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStoragePolicy_Inspect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "storagepolicies", "inspect", "name"}, "")) - pattern_OpenStoragePolicy_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "storagepolicies"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStoragePolicy_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "storagepolicies"}, "")) - pattern_OpenStoragePolicy_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "storagepolicies", "name"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStoragePolicy_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "storagepolicies", "name"}, "")) - pattern_OpenStoragePolicy_SetDefault_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "storagepolicies", "default", "name"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStoragePolicy_SetDefault_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "storagepolicies", "default", "name"}, "")) - pattern_OpenStoragePolicy_DefaultInspect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "storagepolicies", "default"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStoragePolicy_DefaultInspect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "storagepolicies", "default"}, "")) - pattern_OpenStoragePolicy_Release_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "storagepolicies", "release"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_OpenStoragePolicy_Release_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "storagepolicies", "release"}, "")) ) var ( @@ -12116,120 +7027,3 @@ var ( forward_OpenStoragePolicy_Release_0 = runtime.ForwardResponseMessage ) - -// RegisterOpenStorageVerifyChecksumHandlerFromEndpoint is same as RegisterOpenStorageVerifyChecksumHandler but -// automatically dials to "endpoint" and closes the connection when "ctx" gets done. -func RegisterOpenStorageVerifyChecksumHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.Dial(endpoint, opts...) - if err != nil { - return err - } - defer func() { - if err != nil { - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - return - } - go func() { - <-ctx.Done() - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - }() - }() - - return RegisterOpenStorageVerifyChecksumHandler(ctx, mux, conn) -} - -// RegisterOpenStorageVerifyChecksumHandler registers the http handlers for service OpenStorageVerifyChecksum to "mux". -// The handlers forward requests to the grpc endpoint over "conn". -func RegisterOpenStorageVerifyChecksumHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { - return RegisterOpenStorageVerifyChecksumHandlerClient(ctx, mux, NewOpenStorageVerifyChecksumClient(conn)) -} - -// RegisterOpenStorageVerifyChecksumHandlerClient registers the http handlers for service OpenStorageVerifyChecksum -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OpenStorageVerifyChecksumClient". -// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OpenStorageVerifyChecksumClient" -// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "OpenStorageVerifyChecksumClient" to call the correct interceptors. -func RegisterOpenStorageVerifyChecksumHandlerClient(ctx context.Context, mux *runtime.ServeMux, client OpenStorageVerifyChecksumClient) error { - - mux.Handle("POST", pattern_OpenStorageVerifyChecksum_Start_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_OpenStorageVerifyChecksum_Start_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageVerifyChecksum_Start_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_OpenStorageVerifyChecksum_Status_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_OpenStorageVerifyChecksum_Status_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageVerifyChecksum_Status_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_OpenStorageVerifyChecksum_Stop_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_OpenStorageVerifyChecksum_Stop_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_OpenStorageVerifyChecksum_Stop_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -var ( - pattern_OpenStorageVerifyChecksum_Start_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "verify-checksum", "start"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_OpenStorageVerifyChecksum_Status_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "verify-checksum", "status"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_OpenStorageVerifyChecksum_Stop_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "verify-checksum", "stop"}, "", runtime.AssumeColonVerbOpt(true))) -) - -var ( - forward_OpenStorageVerifyChecksum_Start_0 = runtime.ForwardResponseMessage - - forward_OpenStorageVerifyChecksum_Status_0 = runtime.ForwardResponseMessage - - forward_OpenStorageVerifyChecksum_Stop_0 = runtime.ForwardResponseMessage -) diff --git a/vendor/github.com/libopenstorage/openstorage/api/api.proto b/vendor/github.com/libopenstorage/openstorage/api/api.proto index 16f8b8d209..63034c4e8e 100644 --- a/vendor/github.com/libopenstorage/openstorage/api/api.proto +++ b/vendor/github.com/libopenstorage/openstorage/api/api.proto @@ -15,7 +15,7 @@ import "google/api/annotations.proto"; package openstorage.api; -option go_package = "./api;api"; +option go_package = "api"; option java_multiple_files = true; option java_package = "com.openstorage.api"; @@ -348,13 +348,13 @@ message Xattr { enum ExportProtocol { // Invalid uninitialized value INVALID = 0; - // PXD the volume is exported over Portworx block interface. + // PXD the volume is exported over Portworx block interace. PXD = 1; // ISCSI the volume is exported over ISCSI. ISCSI = 2; // NFS the volume is exported over NFS. NFS = 3; - // Custom the volume is exported over custom interface. + // Custom the volume is exported over custom interace. CUSTOM = 4; } @@ -407,12 +407,14 @@ message PXDProxySpec { message PureBlockSpec { string serial_num = 1; string full_vol_name = 2; + string pod_name = 3; } // PureFileSpec is the spec for proxying a volume on pure_file backends message PureFileSpec { string export_rules = 1; string full_vol_name = 2; + string nfs_endpoint = 3; } // ProxySpec defines how this volume will reflect an external data source. @@ -442,8 +444,6 @@ message Sharedv4ServiceSpec { string name = 1; // Indicates what kind of service would be created for this volume. ServiceType type = 2; - // Indicates whether the service needs to be accessed outside of the cluster - bool external_access = 3; // Type of sharedv4 service. Values are governed by the different types // of services supported by container orchestrators such as Kubernetes. @@ -560,8 +560,6 @@ message FastpathConfig { string coord_uuid = 6; // fastpath force failover, disable auto promote to fastpath bool force_failover = 7; - // Verbose contains detailed info on fastpath status - string verbose = 8; } // ScanPolicy defines when a filesystem check is triggered and what action to take @@ -700,24 +698,14 @@ message VolumeSpec { bool auto_fstrim = 44; // IoThrottle specifies maximum io(iops/bandwidth) this volume is restricted to IoThrottle io_throttle = 45; - // NumberOfChunks indicates how many chunks must be created, 0 and 1 both mean 1 - uint32 number_of_chunks = 46; - // Enable readahead for the volume - bool readahead = 47; // TopologyRequirement topology requirement for this volume TopologyRequirement topology_requirement = 48; - // winshare is true if this volume can be accessed from windows pods. - bool winshare = 49; // Filesystem create options to be honored. string fa_create_options = 50; // NearSync specifies the volume has a near-sync replica bool near_sync = 51; // NearSyncReplicationStrategy is replication strategy for near sync volumes NearSyncReplicationStrategy near_sync_replication_strategy = 52; - // clone created to trigger checksum verification - string checksum_clone_id = 53; - // Checksummed indicates if volumed data is checksummed to provide data integrity - bool checksummed = 54; } // VolumeSpecUpdate provides a method to set any of the VolumeSpec of an existing volume @@ -787,16 +775,13 @@ message VolumeSpecUpdate { oneof auto_fstrim_opt { bool auto_fstrim = 39; } // io_throttle_opt defines the io throttle limits for the volume oneof io_throttle_opt { IoThrottle io_throttle = 40;} - // Enable readahead for the volume - oneof readahead_opt { bool readahead = 41; } - // winshare is true if this volume can be accessed from windows pods. - oneof winshare_opt { bool winshare = 42; } // NearSyncReplicationStrategy is replication strategy for near sync volumes - oneof near_sync_replication_strategy_opt { NearSyncReplicationStrategy near_sync_replication_strategy = 43;} - // Checksummed indicates if volumed data is checksummed to provide data integrity - oneof checksummed_opt { bool checksummed = 44; } + oneof near_sync_replication_strategy_opt { NearSyncReplicationStrategy near_sync_replication_strategy = 41;} + // PureNfsEnpoint specifies NFS endpoint for PureFile Direct Access volumes + oneof pure_nfs_endpoint_opt { string pure_nfs_endpoint = 42; } } + // VolumeSpecPolicy provides a method to set volume storage policy message VolumeSpecPolicy { // This defines an operator for the policy comparisons @@ -884,10 +869,6 @@ message VolumeSpecPolicy { oneof auto_fstrim_opt { bool auto_fstrim = 65; } // io_throttle_opt defines the io throttle limits for the volume oneof io_throttle_opt { IoThrottle io_throttle = 66;} - // Enable readahead for the volume - oneof readahead_opt { bool readahead = 67; } - // winshare is true if this volume can be accessed from windows. - oneof winshare_opt { bool winshare = 68; } } // ReplicaSet set of machine IDs (nodes) to which part of this volume is erasure @@ -896,8 +877,6 @@ message ReplicaSet { repeated string nodes = 1; // Unique IDs of the storage pools for this replica set repeated string pool_uuids = 2; - // ID is the unique ID of this replica set - uint32 id = 3; } // RuntimeStateMap is a list of name value mapping of driver specific runtime @@ -1058,19 +1037,13 @@ message Stats { uint64 bytes_used = 9; // Interval in ms during which stats were collected uint64 interval_ms = 10; - // Discards completed successfully - uint64 discards = 11; - // Time spent in discards in ms - uint64 discard_ms = 12; - // Number of bytes discarded - uint64 discard_bytes = 13; // Unique Blocks uint64 unique_blocks = 14; } // Provides details on exclusive and shared storage used by // snapshot/volume specifically for copy-on-write(COW) snapshots. Deletion -// of snapshots and overwrite of volume will affect the exclusive storage +// of snapshots and overwirte of volume will affect the exclusive storage // used by the other dependent snaps and parent volume. message CapacityUsageInfo { // Storage consumed exclusively by this single snapshot. Deletion of this @@ -1174,11 +1147,11 @@ message Alert { int64 alert_type = 3; // Message describing the Alert string message = 4; - //Timestamp when Alert occurred + //Timestamp when Alert occured google.protobuf.Timestamp timestamp = 5; - // ResourceId where Alert occurred + // ResourceId where Alert occured string resource_id = 6; - // Resource where Alert occurred + // Resource where Alert occured ResourceType resource = 7; // Cleared Flag bool cleared = 8; @@ -1194,9 +1167,9 @@ message Alert { // SdkAlertsTimeSpan to store time window information. message SdkAlertsTimeSpan { - //Start timestamp when Alert occurred + //Start timestamp when Alert occured google.protobuf.Timestamp start_time = 1; - //End timestamp when Alert occurred + //End timestamp when Alert occured google.protobuf.Timestamp end_time = 2; } @@ -1304,7 +1277,7 @@ service OpenStorageAlerts { // // #### Input // SdkAlertsEnumerateRequest takes a list of such queries and the returned - // output is a collective output from each of these queries. In that sense, + // output is a collective ouput from each of these queries. In that sense, // the filtering of these queries has a behavior of OR operation. // Each query also has a list of optional options. These options allow // narrowing down the scope of alerts search. These options have a @@ -1587,7 +1560,7 @@ message StorageNode { SECURED = 2; // Node is secured, but in the process of removing security. This state allows // other unsecured nodes to join the cluster since the cluster is in the process - // of removing security authentication and authorization. + // of removing secuirty authenticaiton and authorization. SECURED_ALLOW_SECURITY_REMOVAL = 3; } @@ -1762,16 +1735,16 @@ service OpenStorageFilesystemTrim { // Usage of a filesystem Trim background operation on all locally mounted // volume - rpc AutoFSTrimUsage(SdkAutoFSTrimUsageRequest) - returns (SdkAutoFSTrimUsageResponse) { - option (google.api.http) = { - get : "/v1/filesystem-trim/auto-fstrim-usage" - }; - } + rpc AutoFSTrimUsage(SdkAutoFSTrimUsageRequest) + returns (SdkAutoFSTrimUsageResponse){ + option(google.api.http) = { + get: "/v1/filesystem-trim/auto-fstrim-usage" + }; + } - // Stop a filesystem Trim background operation on a mounted volume, if any - rpc Stop(SdkFilesystemTrimStopRequest) - returns (SdkFilesystemTrimStopResponse) { + // Stop a filesystem Trim background operation on a mounted volume, if any + rpc Stop(SdkFilesystemTrimStopRequest) + returns (SdkFilesystemTrimStopResponse){ option(google.api.http) = { post: "/v1/filesystem-trim/stop" body: "*" @@ -1797,58 +1770,46 @@ service OpenStorageFilesystemTrim { } } - // ## OpenStorageFilesystemCheckService - // This service provides methods to manage filesystem check operation on a - // volume. - // - // This operation is run in the background on an **unmounted volume**. - // If the volume is mounted, then these APIs return error. - // - // Once the filesystem check operation is started, in one of the available - // modes(check_health, fix_safe, fix_all), - // the clients have to poll for the status of the background operation - // using the `OpenStorageFilesystemcheck.Status()` rpc request. - // - // **Note: - // 1. Different modes of filesystem check can execute in parallel for - // the same volume. - // 2. Filesystem Check and volume Mount are mutually exclusive, meaning both - // cannot be run on a volume at the same time. - // - // A typical workflow involving filesystem check would be as follows - // 1. Attach the volume - // `OpenStorageMountAttachClient.Attach()` - // 2. Check the health of the filesystem by issuing a grpc call to - // `OpenStorageFilesystemCheckClient.Start(Mode='check_health')` - // 3. Status of the Filesystem Check operation in check_health mode, can be - // retrieved by polling for the status using - // `OpenStorageFilesystemCheck.Status()` - // 4. If the Filesystem Check Operation status reports filesystem is in - // unhealthy - // state, then to fix all the problems issue a grpc call to - // `OpenStorageFilesystemCheckClient.Start(Mode='fix_all')` - // 5. Status of the Filesystem Check operation in fix_all mode, can be - // retrieved - // by polling for the status using - // `OpenStorageFilesystemCheck.Status()` - // 6. Filesystem Check operation runs in the background, to stop the - // operation, - // issue a call to - // `OpenStorageFilesystemCheckClient.Stop()` - // 7. To Check and Fix errors in the filesystem that are safe to fix, issue a - // grpc call to - // `OpenStorageFilesystemCheckClient.Start(Mode='fix_safe')` - // Status of this operation can be polled in the way mentioned in step 3 - // This operation can be stopped a Stop request as mentioned in step 6 - // 8. To list all snapshots in the filesystem that are created by fsck, issue a - // grpc call to - // `OpenStorageFilesystemCheckClient.ListSnapshots()` - // 9. To delete all snapshots in the filesystem that are created by fsck, issue a - // grpc call to - // `OpenStorageFilesystemCheckClient.DeleteSnapshots()` - // 10. To list all volumes in the filesystem that need fsck check/fix, issue a - // grpc call to - // `OpenStorageFilesystemCheckClient.ListVolumes()` +// ## OpenStorageFilesystemCheckService +// This service provides methods to manage filesystem check operation on a +// volume. +// +// This operation is run in the background on an **unmounted volume**. +// If the volume is mounted, then these APIs return error. +// +// Once the filesystem check operation is started, in one of the available +// modes(check_health, fix_safe, fix_all), +// the clients have to poll for the status of the background operation +// using the `OpenStorageFilesystemcheck.Status()` rpc request. +// +// **Note: +// 1. Different modes of filesystem check can execute in parallel for +// the same volume. +// 2. Filesystem Check and volume Mount are mutually exclusive, meaning both +// cannot be run on a volume at the same time. +// +// A typical workflow involving filesystem check would be as follows +// 1. Attach the volume +// `OpenStorageMountAttachClient.Attach()` +// 2. Check the health of the filesystem by issuing a grpc call to +// `OpenStorageFilesystemCheckClient.Start(Mode='check_health')` +// 3. Status of the Filesystem Check operation in check_health mode, can be +// retrieved by polling for the status using +// `OpenStorageFilesystemCheck.Status()` +// 4. If the Filesystem Check Operation status reports filesystem is in unhealthy +// state, then to fix all the problems issue a grpc call to +// `OpenStorageFilesystemCheckClient.Start(Mode='fix_all')` +// 5. Status of the Filesystem Check operation in fix_all mode, can be retrieved +// by polling for the status using +// `OpenStorageFilesystemCheck.Status()` +// 6. Filesystem Check operation runs in the background, to stop the operation, +// issue a call to +// `OpenStorageFilesystemCheckClient.Stop()` +// 7. To Check and Fix errors in the filesystem that are safe to fix, issue a +// grpc call to +// `OpenStorageFilesystemCheckClient.Start(Mode='fix_safe')` +// Status of this operation can be polled in the way mentioned in step 3 +// This operation can be stopped a Stop request as mentioned in step 6 service OpenStorageFilesystemCheck { @@ -1878,32 +1839,7 @@ service OpenStorageFilesystemCheck { body: "*" }; } - - // List all fsck created snapshots on volume - rpc ListSnapshots(SdkFilesystemCheckListSnapshotsRequest) - returns (SdkFilesystemCheckListSnapshotsResponse){ - option(google.api.http) = { - get: "/v1/filesystem-check/list-snapshots" - }; - } - - // Delete all fsck created snapshots on volume - rpc DeleteSnapshots(SdkFilesystemCheckDeleteSnapshotsRequest) - returns (SdkFilesystemCheckDeleteSnapshotsResponse){ - option(google.api.http) = { - post: "/v1/filesystem-check/delete-snapshots" - body: "*" - }; - } - - // List of all volumes which require fsck check/fix to be run - rpc ListVolumes(SdkFilesystemCheckListVolumesRequest) - returns (SdkFilesystemCheckListVolumesResponse){ - option(google.api.http) = { - get: "/v1/filesystem-check/list-volumes" - }; - } -} + } // OpenStorageIdentity service provides methods to obtain information // about the cluster @@ -2095,27 +2031,6 @@ service OpenStoragePool { get: "/v1/storagepools/rebalance/job" }; } - - // CreateRebalanceSchedule creates a scheudle for the input rebalance requests - rpc CreateRebalanceSchedule (SdkCreateRebalanceScheduleRequest) returns (SdkCreateRebalanceScheduleResponse) { - option (google.api.http) = { - post: "/v1/storagepools/rebalance/schedule" - }; - } - - // GetRebalanceSchedule returns the information of rebalance schedule - rpc GetRebalanceSchedule (SdkGetRebalanceScheduleRequest) returns (SdkGetRebalanceScheduleResponse) { - option (google.api.http) = { - get: "/v1/storagepools/rebalance/schedule" - }; - } - - // DeleteRebalanceSchedule deletes the rebalance schedule - rpc DeleteRebalanceSchedule (SdkDeleteRebalanceScheduleRequest) returns (SdkDeleteRebalanceScheduleResponse) { - option (google.api.http) = { - delete: "/v1/storagepools/rebalance/schedule" - }; - } } // OpenStorageDiags service provides methods to manage diagnostic bundles @@ -2209,13 +2124,6 @@ service OpenStorageNode { get: "/v1/nodes/usage/{node_id}" }; } - // Triggers RelaxedReclaim purge for a give node - rpc RelaxedReclaimPurge(SdkNodeRelaxedReclaimPurgeRequest) - returns (SdkNodeRelaxedReclaimPurgeResponse) { - option(google.api.http) = { - get: "/v1/nodes/usage/{node_id}" - }; - } // DrainAttachments creates a task to drain volume attachments // from the provided node in the cluster. @@ -2250,12 +2158,21 @@ service OpenStorageNode { // Returns bytes used of multiple volumes for a give node rpc VolumeBytesUsedByNode(SdkVolumeBytesUsedRequest) - returns (SdkVolumeBytesUsedResponse) { + returns (SdkVolumeBytesUsedResponse) { option(google.api.http) = { post: "/v1/nodes/bytesused" body: "*" }; } + + // Returns a subset of nodes which do not share replicas of any volume in the cluster. + rpc FilterNonOverlappingNodes(SdkFilterNonOverlappingNodesRequest) + returns (SdkFilterNonOverlappingNodesResponse) { + option(google.api.http) = { + post: "/v1/nodes/filter-nonoverlapping" + body: "*" + }; + } } // BucketService to manage the bucket driver @@ -2553,7 +2470,7 @@ service OpenStorageVolume { // SnapshotEnumerate returns a list of snapshots. // To filter all the snapshots for a specific volume which may no longer exist, - // specify a volume id. + // specifiy a volume id. // Labels can also be used to filter the snapshot list. // If neither are provided all snapshots will be returned. rpc SnapshotEnumerateWithFilters(SdkVolumeSnapshotEnumerateWithFiltersRequest) @@ -3739,7 +3656,7 @@ message SdkVolumeUpdateRequest { message SdkVolumeUpdateResponse { } -// Defines a request to retrieve volume statistics +// Defines a request to retreive volume statistics message SdkVolumeStatsRequest { // Id of the volume to get statistics string volume_id = 1; @@ -3909,19 +3826,6 @@ message SdkNodeVolumeUsageByNodeResponse { VolumeUsageByNode volume_usage_info = 1; } -// Defines request to trigger RelaxedReclaim purge -// for a given node -message SdkNodeRelaxedReclaimPurgeRequest { - // Id of the node to trigger the purge - string node_id = 1; -} - -// Defines response containing status of the trigger -message SdkNodeRelaxedReclaimPurgeResponse { - // status returns true on successful purge - RelaxedReclaimPurge status = 1; -} - // Empty request message SdkClusterDomainsEnumerateRequest { } @@ -3999,8 +3903,6 @@ message Job { CLOUD_DRIVE_TRANSFER = 3; // Job for collecting diags from the cluster nodes COLLECT_DIAGS = 4; - // Job for storage defragmentation on cluster nodes - DEFRAG = 5; } // State is an enum for state of a node drain operation enum State { @@ -4036,8 +3938,7 @@ message Job { CloudDriveTransferJob clouddrive_transfer = 401; // CollectDiagsJob if selected describes the task to collect diagnostics for the cluster CollectDiagsJob collect_diags = 402; - // DefragJob if selected describes the task to run storage defragmentation on cluster nodes - DefragJob defrag = 403; + } // CreateTime is the time the job was created google.protobuf.Timestamp create_time = 5; @@ -4111,61 +4012,6 @@ message CollectDiagsJob { repeated DiagsCollectionStatus statuses = 2; } -// DefragJob describes a job to run defragmentation on cluster nodes -message DefragJob { - // MaxDurationHours defines the time limit in hours - double max_duration_hours = 1; - // MaxNodesInParallel defines the maximum number of nodes running the defrag job in parallel - uint32 max_nodes_in_parallel = 2; - // IncludeNodes is a list of node UUID: if provided, will only run the job on these nodes; - // if not provided, will run on all nodes - // cannot coexist with ExcludeNodes and NodeSelector - repeated string include_nodes = 3; - // ExcludeNodes is a list of node UUID: if provided, the job will skip these nodes; - // if not provided, will run on all nodes - // cannot coexist with IncludeNodes - repeated string exclude_nodes = 4; - // NodeSelector is a list of node label `key=value` pairs separated by comma, - // which selects the nodes to be run on for the job - // can coexist with ExcludeNodes but cannot coexist with IncludeNodes - repeated string node_selector = 5; - // CurrentRunningNodes stores the nodes on which the job is currently running - repeated string current_running_nodes = 6; - // ScheduleId is the ID of the schedule which started this job - string schedule_id = 7; -} - -// DefragNodeStatus describes the defragmentation status of a node -message DefragNodeStatus { - // PoolStatus is a map of pairs - map pool_status = 1; - // RunningSchedule is the defrag schedule being run on the node - string running_schedule = 2; -} - -// DefragNodeStatus describes the defragmentation status of a pool -message DefragPoolStatus { - // NumIterations counts the number of times the pool gets defraged - uint32 num_iterations = 1; - // Running indicates whether the pool is being defraged - bool running = 2; - // LastSuccess indicates whether the last run of defrag on this pool was successful - bool last_success = 3; - // LastStartTime is the start time of the latest run (current or last run) on this pool - google.protobuf.Timestamp last_start_time = 4; - // LastCompleteTime is the completion time of the last run on this pool - google.protobuf.Timestamp last_complete_time = 5; - // LastVolumeId is the volume on which defrag has started but not yet finished - // if provided, volume is currently being defraged or was interrupted in the last run of defrag - string last_volume_id = 6; - // LastOffset is the offset of the last defrag command executed on the pending volume - // -1 means no volume is in a pending state (either not started or fully finished) - int64 last_offset = 7; - // ProgressPercentage describes the progress of the lastest defrag job (current or last run) on this pool - // percentage = bytes completed / sum of file sizes - int32 progress_percentage = 8; -} - message DiagsCollectionStatus { // Node is the node that's collecting the diags string node = 1; @@ -4207,8 +4053,6 @@ message SdkDiagsCollectRequest { int64 timeout_mins = 5; // Live is an optional flag if true will collect live cores from running processes of the driver bool live = 6; - // Filename is an optional flag only to be used for testing purposes. - string filename = 7; } // SdkDiagsCollectResponse defines a response for an SDK request to collect diags @@ -4361,6 +4205,8 @@ message SdkStoragePoolResizeRequest { SdkStoragePool.ResizeOperationType operation_type = 3; // SkipWaitForCleanVolumes would skip the wait for all volumes on the pool to be clean before doing a resize bool skip_wait_for_clean_volumes = 4; + // ForceAddDrive would force pool expand with add drive for the storage pool + bool force_add_drive = 5; } message StorageRebalanceTriggerThreshold { @@ -4382,7 +4228,7 @@ message StorageRebalanceTriggerThreshold { // AbsolutePercent indicates absolute percent comparison. // Example, 75 % used of capacity, or 50 % provisioned of capacity. ABSOLUTE_PERCENT = 0; - // DeltaMeanPercent indicates mean percent comparison threshold. + // DeltaMeanPercent indicates mean percent comparision threshold. // Example, 10 % more than mean for cluster. DELTA_MEAN_PERCENT = 1; } @@ -4562,34 +4408,6 @@ message SdkEnumerateRebalanceJobsResponse { repeated StorageRebalanceJob jobs = 1; } -message RebalanceScheduleInfo { - string schedule = 1; - repeated SdkStorageRebalanceRequest rebalance_requests = 2; - google.protobuf.Timestamp create_time = 3; -} - -message SdkCreateRebalanceScheduleRequest { - string schedule = 1; - repeated SdkStorageRebalanceRequest rebalance_requests = 2; -} - -message SdkCreateRebalanceScheduleResponse { - RebalanceScheduleInfo scheduleInfo = 1; -} - -message SdkGetRebalanceScheduleRequest { -} - -message SdkGetRebalanceScheduleResponse { - RebalanceScheduleInfo scheduleInfo = 1; -} - -message SdkDeleteRebalanceScheduleRequest { -} - -message SdkDeleteRebalanceScheduleResponse { -} - message SdkStoragePool { // OperationStatus captures the various statuses of a storage pool operation enum OperationStatus { @@ -4661,6 +4479,21 @@ message SdkNodeEnumerateWithFiltersResponse { repeated StorageNode nodes = 1; } +// Defines a request to filter nodes from the input list, such that the filtered nodes can +// don't have overlapping volume replicas. This can be used to upgrade nodes in parallel. +message SdkFilterNonOverlappingNodesRequest { + // List of nodes IDs from which we need to filter the non-overlapping nodes. + repeated string input_nodes = 1; + // List of IDs of nodes that are down or the caller deems to be down. + repeated string down_nodes = 2; +} + +// Defines a response with a list of non overlapping nodes from the given input list of nodes. +message SdkFilterNonOverlappingNodesResponse { + // Filtered list of all the non overlapping nodes from the given input list. + repeated string node_ids = 1; +} + // Defines a request to get information about an object store endpoint message SdkObjectstoreInspectRequest { // Id of the object store @@ -4722,7 +4555,7 @@ message SdkCloudBackupCreateRequest { // Labels are list of key value pairs to tag the cloud backup. These labels // are stored in the metadata associated with the backup. map labels = 5; - // FullBackupFrequency indicates number of incremental backup after which + // FullBackupFrequency indicates number of incremental backup after whcih // a fullbackup must be created. This is to override the default value for // manual/user triggerred backups and not applicable for scheduled backups // Value of 0 retains the default behavior. @@ -4885,21 +4718,23 @@ message SdkCloudBackupInfo { map metadata = 5; // Status indicates the status of the backup SdkCloudBackupStatusType status = 6; - // cluster indicates if the cloudbackup belongs to current cluster, + // indicates if the cloudbackup belongs to current cluster, // with older cluster this value may be unknown - SdkCloudBackupClusterType cluster_type = 7; + SdkCloudBackupClusterType.Value cluster_type = 7; // k8s namespace to which this backup belongs to string namespace = 8; } -// CloudBackup operations types -enum SdkCloudBackupClusterType { - // Unknown - SdkCloudBackupClusterUnknown = 0; - // Beongs to this cluster - SdkCloudBackupClusterCurrent = 1; - // not this. other cluster - SdkCloudBackupClusterOther = 2; +// CloudBackup owner cluster +message SdkCloudBackupClusterType { + enum Value { + // Unknown + UNKNOWN = 0; + // Belongs to this cluster + CURRENT_CLUSTER = 1; + // belongs to other cluster + OTHER_CLUSTER = 2; + } } // Defines a response which lists all the backups stored by a cloud provider @@ -4928,7 +4763,7 @@ enum SdkCloudBackupOpType { // CloudBackup status types enum SdkCloudBackupStatusType { - // Unknown + // Unkonwn SdkCloudBackupStatusTypeUnknown = 0; // Not started SdkCloudBackupStatusTypeNotStarted = 1; @@ -4997,7 +4832,7 @@ message SdkCloudBackupStatus { string group_id = 13; } -// Defines a request to retrieve the status of a backup or restore for a +// Defines a request to retreive the status of a backup or restore for a // specified volume message SdkCloudBackupStatusRequest { // (optional) VolumeId is a value which is used to get information on the @@ -5046,7 +4881,7 @@ message SdkCloudBackupHistoryItem { SdkCloudBackupStatusType status = 3; } -// Defines a request to retrieve the history of the backups for +// Defines a request to retreive the history of the backups for // a specific volume to a cloud provider message SdkCloudBackupHistoryRequest { // This optional value defines which history of backups is being @@ -5395,21 +5230,6 @@ message SdkFilesystemTrimStopRequest { string mount_path = 2; } -// SdkVolumeBytesUsedResponse defines a response to fetch multiple volume util from a given node -message SdkVolumeBytesUsedResponse { - // Provides vol util of multiple requested volumes from a given node - VolumeBytesUsedByNode vol_util_info = 1; -} - -// SdkVolumeBytesUsedRequest defines a request for fetching per volume utilization -// from multiple volume in a given node -message SdkVolumeBytesUsedRequest { - // machine uuid of targeted node - string node_id = 1; - // volume ids to be found in usage response, can be empty - repeated uint64 ids = 2; -} - // Empty response message SdkFilesystemTrimStopResponse{ } @@ -5442,8 +5262,23 @@ message SdkAutoFSTrimPopResponse { string message = 1; } +// SdkVolumeBytesUsedResponse defines a response to fetch multiple volume util from a given node +message SdkVolumeBytesUsedResponse { + // Provides vol util of multiple requested volumes from a given node + VolumeBytesUsedByNode vol_util_info = 1; +} + +// SdkVolumeBytesUsedRequest defines a request for fetching per volume utilization +// from multiple volume in a given node +message SdkVolumeBytesUsedRequest { + // machine uuid of targeted node + string node_id = 1; + // volume ids to be found in usage response, can be empty + repeated uint64 ids = 2; +} + message FilesystemCheck { - // FilesystemCheckStatus represents the status codes returned from + // FilesystemChecktatus represents the status codes returned from // OpenStorageFilesystemCheck service APIs() enum FilesystemCheckStatus { // Filesystem Check operation is an unknown state @@ -5461,26 +5296,8 @@ message FilesystemCheck { // FilesystemCheck operation failed due to internal error FS_CHECK_FAILED = 6; } -} - -// FilesystemCheckSnapInfo contains the volume snapshot info for -// filesystem check list snapshots operation -message FilesystemCheckSnapInfo { - // Name of the snapshot - string volume_snapshot_name = 1; -} -// FilesystemCheckVolInfo contains the volume info for -// filesystem check list volumes operation -message FilesystemCheckVolInfo { - // Name of the volume - string volume_name = 1; - // Health status of volume - FilesystemHealthStatus health_status = 2; - // FS status detailed message - string fs_status_msg = 3; } - // SdkFilesystemCheckStartRequest defines a request to start a background // filesystem consistency check operation message SdkFilesystemCheckStartRequest { @@ -5531,57 +5348,13 @@ message SdkFilesystemCheckStopRequest { message SdkFilesystemCheckStopResponse{ } -// SdkFilesystemCheckListSnapshotsRequest defines a request to list -// snapshots created by fsck for a volume -message SdkFilesystemCheckListSnapshotsRequest{ - // Id of the volume - string volume_id = 1; - // Node Id of the volume - string node_id = 2; -} - -// SdkFilesystemCheckListSnapshotsResponse defines a response to list -// snapshots created by fsck for a volume -message SdkFilesystemCheckListSnapshotsResponse{ - // Map of volume snapshot ids and snapshot info - map snapshots = 1; -} - -// SdkFilesystemCheckDeleteSnapshotsRequest defines a request to delete -// snapshots created by fsck for a volume -message SdkFilesystemCheckDeleteSnapshotsRequest{ - // Id of the volume - string volume_id = 1; - // Node Id filter - string node_id = 2; -} - -// SdkFilesystemCheckDeleteSnapshotsResponse defines a respone to delete -// snapshots created by fsck for a volume -message SdkFilesystemCheckDeleteSnapshotsResponse{ -} - -// SdkFilesystemCheckListVolumesRequest defines a request to list -// all volumes needing fsck check/fix -message SdkFilesystemCheckListVolumesRequest{ - // Node Id filter - string node_id = 1; -} - -// SdkFilesystemCheckListVolumesResponse defines a response to list -// all volumes needing fsck check/fix -message SdkFilesystemCheckListVolumesResponse{ - // Map of volume ids and volume info - map volumes = 1; -} - // Empty request message SdkIdentityCapabilitiesRequest { } -// Defines a response containing the capabilities of the cluster +// Defines a response containing the capabilites of the cluster message SdkIdentityCapabilitiesResponse { - // Provides all the capabilities supported by the cluster + // Provides all the capabilites supported by the cluster repeated SdkServiceCapability capabilities = 1; } @@ -5661,9 +5434,9 @@ message SdkVersion { // SDK version major value of this specification Major = 0; // SDK version minor value of this specification - Minor = 176; + Minor = 101; // SDK version patch value of this specification - Patch = 0; + Patch = 50; } // The following cannot be set to use the enum Version because the REST @@ -5999,7 +5772,7 @@ message SdkClusterPairInspectRequest{ string id = 1; } -// Response to get a cluster pair +// Reponse to get a cluster pair message ClusterPairGetResponse { // Info about the cluster pair ClusterPairInfo pair_info = 1; @@ -6250,8 +6023,6 @@ message RestoreVolumeSpec { RestoreParamBoolType auto_fstrim = 29; // IoThrottle specifies maximum io(iops/bandwidth) this volume is restricted to IoThrottle io_throttle = 30; - // Enable readahead for the volume - RestoreParamBoolType readahead = 31; } // Request message to get the volume catalog @@ -6269,111 +6040,3 @@ message SdkVolumeCatalogResponse { // Catalog CatalogResponse catalog = 1; } - -// ## OpenStorageVerifyChecksum -// This service provides methods to manage verify checksum operations on a -// volume. -// -// This operation is run in the background on a clone of the volume. -// -// A typical workflow involving checksum validation would be as follows -// 1. To trigger checksum validation on a volume issue a grpc call to -// `OpenStorageVerifyChecksum.Start()` -// 2. Status of the checksum validation can be retrieved by polling for the status using -// `OpenStorageVerifyChecksum.Status()` -// 3. Checksum validation runs in the background, to stop the -// operation issue a call to -// `OpenStorageVerifyChecksum.Stop()` - -service OpenStorageVerifyChecksum { - - // Start a verify checksum background operation on a volume. - rpc Start(SdkVerifyChecksumStartRequest) - returns (SdkVerifyChecksumStartResponse){ - option(google.api.http) = { - post: "/v1/verify-checksum/start" - body: "*" - }; - } - - // Get Status of a verify checksum background operation on a volume - rpc Status(SdkVerifyChecksumStatusRequest) - returns (SdkVerifyChecksumStatusResponse){ - option(google.api.http) = { - get: "/v1/verify-checksum/status" - }; - } - - // Stop a verify checksum background operation on a volume - rpc Stop(SdkVerifyChecksumStopRequest) - returns (SdkVerifyChecksumStopResponse){ - option(google.api.http) = { - post : "/v1/verify-checksum/stop" - body: "*" - }; - } - } - -message VerifyChecksum { - // VerifyChecksumStatus represents the status codes returned from - // OpenStorageVerifyChecksum service APIs() - enum VerifyChecksumStatus { - // VerifyChecksum operation is an unknown state - VERIFY_CHECKSUM_UNKNOWN = 0; - // VerifyChecksum operation is not running for the specified volume - VERIFY_CHECKSUM_NOT_RUNNING = 1; - // VerifyChecksum operation started for the specified volume - VERIFY_CHECKSUM_STARTED = 2; - // VerifyChecksum operation was stopped by the user for the specified volume - VERIFY_CHECKSUM_STOPPED = 3; - // VerifyChecksum operation completed successfully for the specified volume - VERIFY_CHECKSUM_COMPLETED = 4; - // VerifyChecksum operation failed - VERIFY_CHECKSUM_FAILED = 5; - } -} - -// SdkVerifyChecksumStartRequest defines a request to start a background verify checksum operation -message SdkVerifyChecksumStartRequest { - // Id of the volume - string volume_id = 1; -} - -// SdkVerifyChecksumStartResponse defines the response for a -// SdkVerifyChecksumStartRequest. -message SdkVerifyChecksumStartResponse { - // Status code representing the state of the verify checksum operation - VerifyChecksum.VerifyChecksumStatus status = 1; - // Text blob containing ASCII text providing details of the operation - string message = 2; -} - -// SdkVerifyChecksumStatusRequest defines a request to get status of a -// background VerifyChecksum operation -message SdkVerifyChecksumStatusRequest { - // Id of the volume - string volume_id = 1; -} - -// SdkVerifyChecksumStatusResponse defines the response for a -// SdkVerifyChecksumStatusRequest. -message SdkVerifyChecksumStatusResponse { - // Status code representing the state of the verify checksum operation - VerifyChecksum.VerifyChecksumStatus status = 1; - // Text blob containing ASCII text providing details of the operation - string message = 2; -} - -// SdkVerifyChecksumStopRequest defines a request to stop a background -// filesystem check operation -message SdkVerifyChecksumStopRequest { - // Id of the volume - string volume_id = 1; -} - -// SdkVerifyChecksumStopResponse defines the response for a -// SdkVerifyChecksumStopRequest. -message SdkVerifyChecksumStopResponse { - // Text blob containing ASCII text providing details of the operation - string message = 1; -} diff --git a/vendor/github.com/libopenstorage/openstorage/api/ownership.go b/vendor/github.com/libopenstorage/openstorage/api/ownership.go index 7a14c9d69e..5935378d1f 100644 --- a/vendor/github.com/libopenstorage/openstorage/api/ownership.go +++ b/vendor/github.com/libopenstorage/openstorage/api/ownership.go @@ -255,14 +255,14 @@ func (o *Ownership) IsMatch(check *Ownership) bool { } // Check groups - for group, _ := range check.GetAcls().GetGroups() { + for group := range check.GetAcls().GetGroups() { if _, ok := o.GetAcls().GetGroups()[group]; ok { return true } } // Check collaborators - for collaborator, _ := range check.GetAcls().GetCollaborators() { + for collaborator := range check.GetAcls().GetCollaborators() { if _, ok := o.GetAcls().GetCollaborators()[collaborator]; ok { return true } diff --git a/vendor/github.com/libopenstorage/openstorage/pkg/auth/oidc.go b/vendor/github.com/libopenstorage/openstorage/pkg/auth/oidc.go index 34d1200590..2ca77579b9 100644 --- a/vendor/github.com/libopenstorage/openstorage/pkg/auth/oidc.go +++ b/vendor/github.com/libopenstorage/openstorage/pkg/auth/oidc.go @@ -21,6 +21,7 @@ import ( "fmt" oidc "github.com/coreos/go-oidc" + "github.com/libopenstorage/openstorage/pkg/grpcutil" ) // OIDCAuthConfig configures an OIDC connection @@ -55,9 +56,8 @@ type OIDCAuthenticator struct { // NewOIDC returns a new OIDC authenticator func NewOIDC(config *OIDCAuthConfig) (*OIDCAuthenticator, error) { - // Reverting the defaultTimeout base context as some of the coreos oidc api - // takes this context for subsequent call and end up using expired context. - ctx := context.Background() + ctx, cancel := grpcutil.WithDefaultTimeout(context.Background()) + defer cancel() p, err := oidc.NewProvider(ctx, config.Issuer) if err != nil { diff --git a/vendor/github.com/libopenstorage/openstorage/pkg/auth/selfsigned.go b/vendor/github.com/libopenstorage/openstorage/pkg/auth/selfsigned.go index 7b4f52fb20..fb1f18c01e 100644 --- a/vendor/github.com/libopenstorage/openstorage/pkg/auth/selfsigned.go +++ b/vendor/github.com/libopenstorage/openstorage/pkg/auth/selfsigned.go @@ -21,7 +21,7 @@ import ( "fmt" "strings" - jwt "github.com/golang-jwt/jwt/v4" + jwt "github.com/dgrijalva/jwt-go" ) // JwtAuthConfig provides JwtAuthenticator the keys to validate the token diff --git a/vendor/github.com/libopenstorage/openstorage/pkg/auth/signature.go b/vendor/github.com/libopenstorage/openstorage/pkg/auth/signature.go index 445b103aac..d57dff4320 100644 --- a/vendor/github.com/libopenstorage/openstorage/pkg/auth/signature.go +++ b/vendor/github.com/libopenstorage/openstorage/pkg/auth/signature.go @@ -19,7 +19,7 @@ import ( "fmt" "io/ioutil" - jwt "github.com/golang-jwt/jwt/v4" + jwt "github.com/dgrijalva/jwt-go" ) // Signature describes the signature type using definitions from diff --git a/vendor/github.com/libopenstorage/openstorage/pkg/auth/token.go b/vendor/github.com/libopenstorage/openstorage/pkg/auth/token.go index 9d7b6ff38b..75f006f5d8 100644 --- a/vendor/github.com/libopenstorage/openstorage/pkg/auth/token.go +++ b/vendor/github.com/libopenstorage/openstorage/pkg/auth/token.go @@ -22,7 +22,7 @@ import ( "strings" "time" - jwt "github.com/golang-jwt/jwt/v4" + jwt "github.com/dgrijalva/jwt-go" "github.com/grpc-ecosystem/go-grpc-middleware/util/metautils" ) diff --git a/vendor/github.com/libopenstorage/openstorage/pkg/defaultcontext/default.go b/vendor/github.com/libopenstorage/openstorage/pkg/defaultcontext/default.go new file mode 100644 index 0000000000..91c1ba1ec6 --- /dev/null +++ b/vendor/github.com/libopenstorage/openstorage/pkg/defaultcontext/default.go @@ -0,0 +1,91 @@ +/* +Package defaultcontext manage the default context and timeouts +Copyright 2021 Portworx + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package defaultcontext + +import ( + "sync" + "time" + + grpcgw "github.com/grpc-ecosystem/grpc-gateway/runtime" +) + +var ( + inst *defaultContextManager + instLock sync.Mutex + + defaultDuration = 5 * time.Minute + + // Inst returns the singleton to the default context manager + Inst = func() *defaultContextManager { + return defaultContextManagerGetInst() + } +) + +func defaultContextManagerGetInst() *defaultContextManager { + instLock.Lock() + defer instLock.Unlock() + + if inst == nil { + inst = newDefaultContextManager() + } + + return inst +} + +type defaultContextManager struct { + lock sync.RWMutex + timeout time.Duration +} + +func newDefaultContextManager() *defaultContextManager { + d := &defaultContextManager{ + timeout: defaultDuration, + } + d.apply() + + return d +} + +// SetDefaultTimeout sets the default timeout duration used by contexts without a timeout +func (d *defaultContextManager) SetDefaultTimeout(t time.Duration) error { + d.lock.Lock() + defer d.lock.Unlock() + + d.timeout = t + d.apply() + + return nil +} + +// GetDefaultTimeout returns the default timeout duration used by contexts without a timeout. +// +// It is recommended to use grpcutils.WithDefaultTimeout(ctx) which calls this function, +// instead of calling this function directly. +func (d *defaultContextManager) GetDefaultTimeout() time.Duration { + d.lock.RLock() + defer d.lock.RUnlock() + + return d.timeout +} + +// Add here any external default timeouts that need to be set +func (d *defaultContextManager) apply() { + + // Set SDK Gateway default context + grpcgw.DefaultContextTimeout = d.timeout + +} diff --git a/vendor/github.com/libopenstorage/openstorage/pkg/grpcserver/creds_injector.go b/vendor/github.com/libopenstorage/openstorage/pkg/grpcserver/creds_injector.go index 7bddfb215e..edd0c3cd0d 100644 --- a/vendor/github.com/libopenstorage/openstorage/pkg/grpcserver/creds_injector.go +++ b/vendor/github.com/libopenstorage/openstorage/pkg/grpcserver/creds_injector.go @@ -22,7 +22,7 @@ import ( "sync" "time" - "github.com/golang-jwt/jwt/v4" + "github.com/dgrijalva/jwt-go" ) var minsBeforeExpiration = time.Minute * 5 diff --git a/vendor/github.com/libopenstorage/openstorage/pkg/grpcutil/context.go b/vendor/github.com/libopenstorage/openstorage/pkg/grpcutil/context.go new file mode 100644 index 0000000000..fa5258ea8f --- /dev/null +++ b/vendor/github.com/libopenstorage/openstorage/pkg/grpcutil/context.go @@ -0,0 +1,27 @@ +/* +Package grpcutil is a package for gRPC utilities +Copyright 2021 Portworx + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package grpcutil + +import ( + "context" + + "github.com/libopenstorage/openstorage/pkg/defaultcontext" +) + +func WithDefaultTimeout(ctx context.Context) (context.Context, context.CancelFunc) { + return context.WithTimeout(ctx, defaultcontext.Inst().GetDefaultTimeout()) +} diff --git a/vendor/github.com/spf13/cobra/.gitignore b/vendor/github.com/spf13/cobra/.gitignore new file mode 100644 index 0000000000..c7b459e4dd --- /dev/null +++ b/vendor/github.com/spf13/cobra/.gitignore @@ -0,0 +1,39 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +# Vim files https://github.com/github/gitignore/blob/master/Global/Vim.gitignore +# swap +[._]*.s[a-w][a-z] +[._]s[a-w][a-z] +# session +Session.vim +# temporary +.netrwhist +*~ +# auto-generated tag files +tags + +*.exe +cobra.test +bin + +.idea/ +*.iml diff --git a/vendor/github.com/spf13/cobra/.golangci.yml b/vendor/github.com/spf13/cobra/.golangci.yml new file mode 100644 index 0000000000..2578d94b5e --- /dev/null +++ b/vendor/github.com/spf13/cobra/.golangci.yml @@ -0,0 +1,62 @@ +# Copyright 2013-2023 The Cobra Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +run: + deadline: 5m + +linters: + disable-all: true + enable: + #- bodyclose + - deadcode + #- depguard + #- dogsled + #- dupl + - errcheck + #- exhaustive + #- funlen + - gas + #- gochecknoinits + - goconst + #- gocritic + #- gocyclo + #- gofmt + - goimports + - golint + #- gomnd + #- goprintffuncname + #- gosec + #- gosimple + - govet + - ineffassign + - interfacer + #- lll + - maligned + - megacheck + #- misspell + #- nakedret + #- noctx + #- nolintlint + #- rowserrcheck + #- scopelint + #- staticcheck + - structcheck + #- stylecheck + #- typecheck + - unconvert + #- unparam + #- unused + - varcheck + #- whitespace + fast: false diff --git a/vendor/github.com/spf13/cobra/.mailmap b/vendor/github.com/spf13/cobra/.mailmap new file mode 100644 index 0000000000..94ec53068a --- /dev/null +++ b/vendor/github.com/spf13/cobra/.mailmap @@ -0,0 +1,3 @@ +Steve Francia +Bjørn Erik Pedersen +Fabiano Franz diff --git a/vendor/github.com/spf13/cobra/CONDUCT.md b/vendor/github.com/spf13/cobra/CONDUCT.md new file mode 100644 index 0000000000..9d16f88fd1 --- /dev/null +++ b/vendor/github.com/spf13/cobra/CONDUCT.md @@ -0,0 +1,37 @@ +## Cobra User Contract + +### Versioning +Cobra will follow a steady release cadence. Non breaking changes will be released as minor versions quarterly. Patch bug releases are at the discretion of the maintainers. Users can expect security patch fixes to be released within relatively short order of a CVE becoming known. For more information on security patch fixes see the CVE section below. Releases will follow [Semantic Versioning](https://semver.org/). Users tracking the Master branch should expect unpredictable breaking changes as the project continues to move forward. For stability, it is highly recommended to use a release. + +### Backward Compatibility +We will maintain two major releases in a moving window. The N-1 release will only receive bug fixes and security updates and will be dropped once N+1 is released. + +### Deprecation +Deprecation of Go versions or dependent packages will only occur in major releases. To reduce the change of this taking users by surprise, any large deprecation will be preceded by an announcement in the [#cobra slack channel](https://gophers.slack.com/archives/CD3LP1199) and an Issue on Github. + +### CVE +Maintainers will make every effort to release security patches in the case of a medium to high severity CVE directly impacting the library. The speed in which these patches reach a release is up to the discretion of the maintainers. A low severity CVE may be a lower priority than a high severity one. + +### Communication +Cobra maintainers will use GitHub issues and the [#cobra slack channel](https://gophers.slack.com/archives/CD3LP1199) as the primary means of communication with the community. This is to foster open communication with all users and contributors. + +### Breaking Changes +Breaking changes are generally allowed in the master branch, as this is the branch used to develop the next release of Cobra. + +There may be times, however, when master is closed for breaking changes. This is likely to happen as we near the release of a new version. + +Breaking changes are not allowed in release branches, as these represent minor versions that have already been released. These version have consumers who expect the APIs, behaviors, etc, to remain stable during the lifetime of the patch stream for the minor release. + +Examples of breaking changes include: +- Removing or renaming exported constant, variable, type, or function. +- Updating the version of critical libraries such as `spf13/pflag`, `spf13/viper` etc... + - Some version updates may be acceptable for picking up bug fixes, but maintainers must exercise caution when reviewing. + +There may, at times, need to be exceptions where breaking changes are allowed in release branches. These are at the discretion of the project's maintainers, and must be carefully considered before merging. + +### CI Testing +Maintainers will ensure the Cobra test suite utilizes the current supported versions of Golang. + +### Disclaimer +Changes to this document and the contents therein are at the discretion of the maintainers. +None of the contents of this document are legally binding in any way to the maintainers or the users. diff --git a/vendor/github.com/spf13/cobra/CONTRIBUTING.md b/vendor/github.com/spf13/cobra/CONTRIBUTING.md new file mode 100644 index 0000000000..6f356e6a82 --- /dev/null +++ b/vendor/github.com/spf13/cobra/CONTRIBUTING.md @@ -0,0 +1,50 @@ +# Contributing to Cobra + +Thank you so much for contributing to Cobra. We appreciate your time and help. +Here are some guidelines to help you get started. + +## Code of Conduct + +Be kind and respectful to the members of the community. Take time to educate +others who are seeking help. Harassment of any kind will not be tolerated. + +## Questions + +If you have questions regarding Cobra, feel free to ask it in the community +[#cobra Slack channel][cobra-slack] + +## Filing a bug or feature + +1. Before filing an issue, please check the existing issues to see if a + similar one was already opened. If there is one already opened, feel free + to comment on it. +1. If you believe you've found a bug, please provide detailed steps of + reproduction, the version of Cobra and anything else you believe will be + useful to help troubleshoot it (e.g. OS environment, environment variables, + etc...). Also state the current behavior vs. the expected behavior. +1. If you'd like to see a feature or an enhancement please open an issue with + a clear title and description of what the feature is and why it would be + beneficial to the project and its users. + +## Submitting changes + +1. CLA: Upon submitting a Pull Request (PR), contributors will be prompted to + sign a CLA. Please sign the CLA :slightly_smiling_face: +1. Tests: If you are submitting code, please ensure you have adequate tests + for the feature. Tests can be run via `go test ./...` or `make test`. +1. Since this is golang project, ensure the new code is properly formatted to + ensure code consistency. Run `make all`. + +### Quick steps to contribute + +1. Fork the project. +1. Download your fork to your PC (`git clone https://github.com/your_username/cobra && cd cobra`) +1. Create your feature branch (`git checkout -b my-new-feature`) +1. Make changes and run tests (`make test`) +1. Add them to staging (`git add .`) +1. Commit your changes (`git commit -m 'Add some feature'`) +1. Push to the branch (`git push origin my-new-feature`) +1. Create new pull request + + +[cobra-slack]: https://gophers.slack.com/archives/CD3LP1199 diff --git a/vendor/github.com/spf13/cobra/LICENSE.txt b/vendor/github.com/spf13/cobra/LICENSE.txt new file mode 100644 index 0000000000..298f0e2665 --- /dev/null +++ b/vendor/github.com/spf13/cobra/LICENSE.txt @@ -0,0 +1,174 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. diff --git a/vendor/github.com/spf13/cobra/MAINTAINERS b/vendor/github.com/spf13/cobra/MAINTAINERS new file mode 100644 index 0000000000..4c5ac3dd99 --- /dev/null +++ b/vendor/github.com/spf13/cobra/MAINTAINERS @@ -0,0 +1,13 @@ +maintainers: +- spf13 +- johnSchnake +- jpmcb +- marckhouzam +inactive: +- anthonyfok +- bep +- bogem +- broady +- eparis +- jharshman +- wfernandes diff --git a/vendor/github.com/spf13/cobra/Makefile b/vendor/github.com/spf13/cobra/Makefile new file mode 100644 index 0000000000..0da8d7aa08 --- /dev/null +++ b/vendor/github.com/spf13/cobra/Makefile @@ -0,0 +1,35 @@ +BIN="./bin" +SRC=$(shell find . -name "*.go") + +ifeq (, $(shell which golangci-lint)) +$(warning "could not find golangci-lint in $(PATH), run: curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh") +endif + +.PHONY: fmt lint test install_deps clean + +default: all + +all: fmt test + +fmt: + $(info ******************** checking formatting ********************) + @test -z $(shell gofmt -l $(SRC)) || (gofmt -d $(SRC); exit 1) + +lint: + $(info ******************** running lint tools ********************) + golangci-lint run -v + +test: install_deps + $(info ******************** running tests ********************) + go test -v ./... + +richtest: install_deps + $(info ******************** running tests with kyoh86/richgo ********************) + richgo test -v ./... + +install_deps: + $(info ******************** downloading dependencies ********************) + go get -v ./... + +clean: + rm -rf $(BIN) diff --git a/vendor/github.com/spf13/cobra/README.md b/vendor/github.com/spf13/cobra/README.md new file mode 100644 index 0000000000..592c0b8ab0 --- /dev/null +++ b/vendor/github.com/spf13/cobra/README.md @@ -0,0 +1,112 @@ +![cobra logo](assets/CobraMain.png) + +Cobra is a library for creating powerful modern CLI applications. + +Cobra is used in many Go projects such as [Kubernetes](https://kubernetes.io/), +[Hugo](https://gohugo.io), and [GitHub CLI](https://github.com/cli/cli) to +name a few. [This list](./projects_using_cobra.md) contains a more extensive list of projects using Cobra. + +[![](https://img.shields.io/github/actions/workflow/status/spf13/cobra/test.yml?branch=main&longCache=true&label=Test&logo=github%20actions&logoColor=fff)](https://github.com/spf13/cobra/actions?query=workflow%3ATest) +[![Go Reference](https://pkg.go.dev/badge/github.com/spf13/cobra.svg)](https://pkg.go.dev/github.com/spf13/cobra) +[![Go Report Card](https://goreportcard.com/badge/github.com/spf13/cobra)](https://goreportcard.com/report/github.com/spf13/cobra) +[![Slack](https://img.shields.io/badge/Slack-cobra-brightgreen)](https://gophers.slack.com/archives/CD3LP1199) + +# Overview + +Cobra is a library providing a simple interface to create powerful modern CLI +interfaces similar to git & go tools. + +Cobra provides: +* Easy subcommand-based CLIs: `app server`, `app fetch`, etc. +* Fully POSIX-compliant flags (including short & long versions) +* Nested subcommands +* Global, local and cascading flags +* Intelligent suggestions (`app srver`... did you mean `app server`?) +* Automatic help generation for commands and flags +* Grouping help for subcommands +* Automatic help flag recognition of `-h`, `--help`, etc. +* Automatically generated shell autocomplete for your application (bash, zsh, fish, powershell) +* Automatically generated man pages for your application +* Command aliases so you can change things without breaking them +* The flexibility to define your own help, usage, etc. +* Optional seamless integration with [viper](https://github.com/spf13/viper) for 12-factor apps + +# Concepts + +Cobra is built on a structure of commands, arguments & flags. + +**Commands** represent actions, **Args** are things and **Flags** are modifiers for those actions. + +The best applications read like sentences when used, and as a result, users +intuitively know how to interact with them. + +The pattern to follow is +`APPNAME VERB NOUN --ADJECTIVE` + or +`APPNAME COMMAND ARG --FLAG`. + +A few good real world examples may better illustrate this point. + +In the following example, 'server' is a command, and 'port' is a flag: + + hugo server --port=1313 + +In this command we are telling Git to clone the url bare. + + git clone URL --bare + +## Commands + +Command is the central point of the application. Each interaction that +the application supports will be contained in a Command. A command can +have children commands and optionally run an action. + +In the example above, 'server' is the command. + +[More about cobra.Command](https://pkg.go.dev/github.com/spf13/cobra#Command) + +## Flags + +A flag is a way to modify the behavior of a command. Cobra supports +fully POSIX-compliant flags as well as the Go [flag package](https://golang.org/pkg/flag/). +A Cobra command can define flags that persist through to children commands +and flags that are only available to that command. + +In the example above, 'port' is the flag. + +Flag functionality is provided by the [pflag +library](https://github.com/spf13/pflag), a fork of the flag standard library +which maintains the same interface while adding POSIX compliance. + +# Installing +Using Cobra is easy. First, use `go get` to install the latest version +of the library. + +``` +go get -u github.com/spf13/cobra@latest +``` + +Next, include Cobra in your application: + +```go +import "github.com/spf13/cobra" +``` + +# Usage +`cobra-cli` is a command line program to generate cobra applications and command files. +It will bootstrap your application scaffolding to rapidly +develop a Cobra-based application. It is the easiest way to incorporate Cobra into your application. + +It can be installed by running: + +``` +go install github.com/spf13/cobra-cli@latest +``` + +For complete details on using the Cobra-CLI generator, please read [The Cobra Generator README](https://github.com/spf13/cobra-cli/blob/main/README.md) + +For complete details on using the Cobra library, please read the [The Cobra User Guide](user_guide.md). + +# License + +Cobra is released under the Apache 2.0 license. See [LICENSE.txt](https://github.com/spf13/cobra/blob/master/LICENSE.txt) diff --git a/vendor/github.com/spf13/cobra/active_help.go b/vendor/github.com/spf13/cobra/active_help.go new file mode 100644 index 0000000000..2d0239437a --- /dev/null +++ b/vendor/github.com/spf13/cobra/active_help.go @@ -0,0 +1,63 @@ +// Copyright 2013-2023 The Cobra Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cobra + +import ( + "fmt" + "os" + "strings" +) + +const ( + activeHelpMarker = "_activeHelp_ " + // The below values should not be changed: programs will be using them explicitly + // in their user documentation, and users will be using them explicitly. + activeHelpEnvVarSuffix = "_ACTIVE_HELP" + activeHelpGlobalEnvVar = "COBRA_ACTIVE_HELP" + activeHelpGlobalDisable = "0" +) + +// AppendActiveHelp adds the specified string to the specified array to be used as ActiveHelp. +// Such strings will be processed by the completion script and will be shown as ActiveHelp +// to the user. +// The array parameter should be the array that will contain the completions. +// This function can be called multiple times before and/or after completions are added to +// the array. Each time this function is called with the same array, the new +// ActiveHelp line will be shown below the previous ones when completion is triggered. +func AppendActiveHelp(compArray []string, activeHelpStr string) []string { + return append(compArray, fmt.Sprintf("%s%s", activeHelpMarker, activeHelpStr)) +} + +// GetActiveHelpConfig returns the value of the ActiveHelp environment variable +// _ACTIVE_HELP where is the name of the root command in upper +// case, with all - replaced by _. +// It will always return "0" if the global environment variable COBRA_ACTIVE_HELP +// is set to "0". +func GetActiveHelpConfig(cmd *Command) string { + activeHelpCfg := os.Getenv(activeHelpGlobalEnvVar) + if activeHelpCfg != activeHelpGlobalDisable { + activeHelpCfg = os.Getenv(activeHelpEnvVar(cmd.Root().Name())) + } + return activeHelpCfg +} + +// activeHelpEnvVar returns the name of the program-specific ActiveHelp environment +// variable. It has the format _ACTIVE_HELP where is the name of the +// root command in upper case, with all - replaced by _. +func activeHelpEnvVar(name string) string { + // This format should not be changed: users will be using it explicitly. + activeHelpEnvVar := strings.ToUpper(fmt.Sprintf("%s%s", name, activeHelpEnvVarSuffix)) + return strings.ReplaceAll(activeHelpEnvVar, "-", "_") +} diff --git a/vendor/github.com/spf13/cobra/active_help.md b/vendor/github.com/spf13/cobra/active_help.md new file mode 100644 index 0000000000..5e7f59af38 --- /dev/null +++ b/vendor/github.com/spf13/cobra/active_help.md @@ -0,0 +1,157 @@ +# Active Help + +Active Help is a framework provided by Cobra which allows a program to define messages (hints, warnings, etc) that will be printed during program usage. It aims to make it easier for your users to learn how to use your program. If configured by the program, Active Help is printed when the user triggers shell completion. + +For example, +``` +bash-5.1$ helm repo add [tab] +You must choose a name for the repo you are adding. + +bash-5.1$ bin/helm package [tab] +Please specify the path to the chart to package + +bash-5.1$ bin/helm package [tab][tab] +bin/ internal/ scripts/ pkg/ testdata/ +``` + +**Hint**: A good place to use Active Help messages is when the normal completion system does not provide any suggestions. In such cases, Active Help nicely supplements the normal shell completions to guide the user in knowing what is expected by the program. +## Supported shells + +Active Help is currently only supported for the following shells: +- Bash (using [bash completion V2](shell_completions.md#bash-completion-v2) only). Note that bash 4.4 or higher is required for the prompt to appear when an Active Help message is printed. +- Zsh + +## Adding Active Help messages + +As Active Help uses the shell completion system, the implementation of Active Help messages is done by enhancing custom dynamic completions. If you are not familiar with dynamic completions, please refer to [Shell Completions](shell_completions.md). + +Adding Active Help is done through the use of the `cobra.AppendActiveHelp(...)` function, where the program repeatedly adds Active Help messages to the list of completions. Keep reading for details. + +### Active Help for nouns + +Adding Active Help when completing a noun is done within the `ValidArgsFunction(...)` of a command. Please notice the use of `cobra.AppendActiveHelp(...)` in the following example: + +```go +cmd := &cobra.Command{ + Use: "add [NAME] [URL]", + Short: "add a chart repository", + Args: require.ExactArgs(2), + RunE: func(cmd *cobra.Command, args []string) error { + return addRepo(args) + }, + ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + var comps []string + if len(args) == 0 { + comps = cobra.AppendActiveHelp(comps, "You must choose a name for the repo you are adding") + } else if len(args) == 1 { + comps = cobra.AppendActiveHelp(comps, "You must specify the URL for the repo you are adding") + } else { + comps = cobra.AppendActiveHelp(comps, "This command does not take any more arguments") + } + return comps, cobra.ShellCompDirectiveNoFileComp + }, +} +``` +The example above defines the completions (none, in this specific example) as well as the Active Help messages for the `helm repo add` command. It yields the following behavior: +``` +bash-5.1$ helm repo add [tab] +You must choose a name for the repo you are adding + +bash-5.1$ helm repo add grafana [tab] +You must specify the URL for the repo you are adding + +bash-5.1$ helm repo add grafana https://grafana.github.io/helm-charts [tab] +This command does not take any more arguments +``` +**Hint**: As can be seen in the above example, a good place to use Active Help messages is when the normal completion system does not provide any suggestions. In such cases, Active Help nicely supplements the normal shell completions. + +### Active Help for flags + +Providing Active Help for flags is done in the same fashion as for nouns, but using the completion function registered for the flag. For example: +```go +_ = cmd.RegisterFlagCompletionFunc("version", func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + if len(args) != 2 { + return cobra.AppendActiveHelp(nil, "You must first specify the chart to install before the --version flag can be completed"), cobra.ShellCompDirectiveNoFileComp + } + return compVersionFlag(args[1], toComplete) + }) +``` +The example above prints an Active Help message when not enough information was given by the user to complete the `--version` flag. +``` +bash-5.1$ bin/helm install myrelease --version 2.0.[tab] +You must first specify the chart to install before the --version flag can be completed + +bash-5.1$ bin/helm install myrelease bitnami/solr --version 2.0.[tab][tab] +2.0.1 2.0.2 2.0.3 +``` + +## User control of Active Help + +You may want to allow your users to disable Active Help or choose between different levels of Active Help. It is entirely up to the program to define the type of configurability of Active Help that it wants to offer, if any. +Allowing to configure Active Help is entirely optional; you can use Active Help in your program without doing anything about Active Help configuration. + +The way to configure Active Help is to use the program's Active Help environment +variable. That variable is named `_ACTIVE_HELP` where `` is the name of your +program in uppercase with any `-` replaced by an `_`. The variable should be set by the user to whatever +Active Help configuration values are supported by the program. + +For example, say `helm` has chosen to support three levels for Active Help: `on`, `off`, `local`. Then a user +would set the desired behavior to `local` by doing `export HELM_ACTIVE_HELP=local` in their shell. + +For simplicity, when in `cmd.ValidArgsFunction(...)` or a flag's completion function, the program should read the +Active Help configuration using the `cobra.GetActiveHelpConfig(cmd)` function and select what Active Help messages +should or should not be added (instead of reading the environment variable directly). + +For example: +```go +ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + activeHelpLevel := cobra.GetActiveHelpConfig(cmd) + + var comps []string + if len(args) == 0 { + if activeHelpLevel != "off" { + comps = cobra.AppendActiveHelp(comps, "You must choose a name for the repo you are adding") + } + } else if len(args) == 1 { + if activeHelpLevel != "off" { + comps = cobra.AppendActiveHelp(comps, "You must specify the URL for the repo you are adding") + } + } else { + if activeHelpLevel == "local" { + comps = cobra.AppendActiveHelp(comps, "This command does not take any more arguments") + } + } + return comps, cobra.ShellCompDirectiveNoFileComp +}, +``` +**Note 1**: If the `_ACTIVE_HELP` environment variable is set to the string "0", Cobra will automatically disable all Active Help output (even if some output was specified by the program using the `cobra.AppendActiveHelp(...)` function). Using "0" can simplify your code in situations where you want to blindly disable Active Help without having to call `cobra.GetActiveHelpConfig(cmd)` explicitly. + +**Note 2**: If a user wants to disable Active Help for every single program based on Cobra, she can set the environment variable `COBRA_ACTIVE_HELP` to "0". In this case `cobra.GetActiveHelpConfig(cmd)` will return "0" no matter what the variable `_ACTIVE_HELP` is set to. + +**Note 3**: If the user does not set `_ACTIVE_HELP` or `COBRA_ACTIVE_HELP` (which will be a common case), the default value for the Active Help configuration returned by `cobra.GetActiveHelpConfig(cmd)` will be the empty string. +## Active Help with Cobra's default completion command + +Cobra provides a default `completion` command for programs that wish to use it. +When using the default `completion` command, Active Help is configurable in the same +fashion as described above using environment variables. You may wish to document this in more +details for your users. + +## Debugging Active Help + +Debugging your Active Help code is done in the same way as debugging your dynamic completion code, which is with Cobra's hidden `__complete` command. Please refer to [debugging shell completion](shell_completions.md#debugging) for details. + +When debugging with the `__complete` command, if you want to specify different Active Help configurations, you should use the active help environment variable. That variable is named `_ACTIVE_HELP` where any `-` is replaced by an `_`. For example, we can test deactivating some Active Help as shown below: +``` +$ HELM_ACTIVE_HELP=1 bin/helm __complete install wordpress bitnami/h +bitnami/haproxy +bitnami/harbor +_activeHelp_ WARNING: cannot re-use a name that is still in use +:0 +Completion ended with directive: ShellCompDirectiveDefault + +$ HELM_ACTIVE_HELP=0 bin/helm __complete install wordpress bitnami/h +bitnami/haproxy +bitnami/harbor +:0 +Completion ended with directive: ShellCompDirectiveDefault +``` diff --git a/vendor/github.com/spf13/cobra/args.go b/vendor/github.com/spf13/cobra/args.go new file mode 100644 index 0000000000..e79ec33a81 --- /dev/null +++ b/vendor/github.com/spf13/cobra/args.go @@ -0,0 +1,131 @@ +// Copyright 2013-2023 The Cobra Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cobra + +import ( + "fmt" + "strings" +) + +type PositionalArgs func(cmd *Command, args []string) error + +// legacyArgs validation has the following behaviour: +// - root commands with no subcommands can take arbitrary arguments +// - root commands with subcommands will do subcommand validity checking +// - subcommands will always accept arbitrary arguments +func legacyArgs(cmd *Command, args []string) error { + // no subcommand, always take args + if !cmd.HasSubCommands() { + return nil + } + + // root command with subcommands, do subcommand checking. + if !cmd.HasParent() && len(args) > 0 { + return fmt.Errorf("unknown command %q for %q%s", args[0], cmd.CommandPath(), cmd.findSuggestions(args[0])) + } + return nil +} + +// NoArgs returns an error if any args are included. +func NoArgs(cmd *Command, args []string) error { + if len(args) > 0 { + return fmt.Errorf("unknown command %q for %q", args[0], cmd.CommandPath()) + } + return nil +} + +// OnlyValidArgs returns an error if there are any positional args that are not in +// the `ValidArgs` field of `Command` +func OnlyValidArgs(cmd *Command, args []string) error { + if len(cmd.ValidArgs) > 0 { + // Remove any description that may be included in ValidArgs. + // A description is following a tab character. + var validArgs []string + for _, v := range cmd.ValidArgs { + validArgs = append(validArgs, strings.Split(v, "\t")[0]) + } + for _, v := range args { + if !stringInSlice(v, validArgs) { + return fmt.Errorf("invalid argument %q for %q%s", v, cmd.CommandPath(), cmd.findSuggestions(args[0])) + } + } + } + return nil +} + +// ArbitraryArgs never returns an error. +func ArbitraryArgs(cmd *Command, args []string) error { + return nil +} + +// MinimumNArgs returns an error if there is not at least N args. +func MinimumNArgs(n int) PositionalArgs { + return func(cmd *Command, args []string) error { + if len(args) < n { + return fmt.Errorf("requires at least %d arg(s), only received %d", n, len(args)) + } + return nil + } +} + +// MaximumNArgs returns an error if there are more than N args. +func MaximumNArgs(n int) PositionalArgs { + return func(cmd *Command, args []string) error { + if len(args) > n { + return fmt.Errorf("accepts at most %d arg(s), received %d", n, len(args)) + } + return nil + } +} + +// ExactArgs returns an error if there are not exactly n args. +func ExactArgs(n int) PositionalArgs { + return func(cmd *Command, args []string) error { + if len(args) != n { + return fmt.Errorf("accepts %d arg(s), received %d", n, len(args)) + } + return nil + } +} + +// RangeArgs returns an error if the number of args is not within the expected range. +func RangeArgs(min int, max int) PositionalArgs { + return func(cmd *Command, args []string) error { + if len(args) < min || len(args) > max { + return fmt.Errorf("accepts between %d and %d arg(s), received %d", min, max, len(args)) + } + return nil + } +} + +// MatchAll allows combining several PositionalArgs to work in concert. +func MatchAll(pargs ...PositionalArgs) PositionalArgs { + return func(cmd *Command, args []string) error { + for _, parg := range pargs { + if err := parg(cmd, args); err != nil { + return err + } + } + return nil + } +} + +// ExactValidArgs returns an error if there are not exactly N positional args OR +// there are any positional args that are not in the `ValidArgs` field of `Command` +// +// Deprecated: use MatchAll(ExactArgs(n), OnlyValidArgs) instead +func ExactValidArgs(n int) PositionalArgs { + return MatchAll(ExactArgs(n), OnlyValidArgs) +} diff --git a/vendor/github.com/spf13/cobra/bash_completions.go b/vendor/github.com/spf13/cobra/bash_completions.go new file mode 100644 index 0000000000..10c78847de --- /dev/null +++ b/vendor/github.com/spf13/cobra/bash_completions.go @@ -0,0 +1,712 @@ +// Copyright 2013-2023 The Cobra Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cobra + +import ( + "bytes" + "fmt" + "io" + "os" + "sort" + "strings" + + "github.com/spf13/pflag" +) + +// Annotations for Bash completion. +const ( + BashCompFilenameExt = "cobra_annotation_bash_completion_filename_extensions" + BashCompCustom = "cobra_annotation_bash_completion_custom" + BashCompOneRequiredFlag = "cobra_annotation_bash_completion_one_required_flag" + BashCompSubdirsInDir = "cobra_annotation_bash_completion_subdirs_in_dir" +) + +func writePreamble(buf io.StringWriter, name string) { + WriteStringAndCheck(buf, fmt.Sprintf("# bash completion for %-36s -*- shell-script -*-\n", name)) + WriteStringAndCheck(buf, fmt.Sprintf(` +__%[1]s_debug() +{ + if [[ -n ${BASH_COMP_DEBUG_FILE:-} ]]; then + echo "$*" >> "${BASH_COMP_DEBUG_FILE}" + fi +} + +# Homebrew on Macs have version 1.3 of bash-completion which doesn't include +# _init_completion. This is a very minimal version of that function. +__%[1]s_init_completion() +{ + COMPREPLY=() + _get_comp_words_by_ref "$@" cur prev words cword +} + +__%[1]s_index_of_word() +{ + local w word=$1 + shift + index=0 + for w in "$@"; do + [[ $w = "$word" ]] && return + index=$((index+1)) + done + index=-1 +} + +__%[1]s_contains_word() +{ + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done + return 1 +} + +__%[1]s_handle_go_custom_completion() +{ + __%[1]s_debug "${FUNCNAME[0]}: cur is ${cur}, words[*] is ${words[*]}, #words[@] is ${#words[@]}" + + local shellCompDirectiveError=%[3]d + local shellCompDirectiveNoSpace=%[4]d + local shellCompDirectiveNoFileComp=%[5]d + local shellCompDirectiveFilterFileExt=%[6]d + local shellCompDirectiveFilterDirs=%[7]d + + local out requestComp lastParam lastChar comp directive args + + # Prepare the command to request completions for the program. + # Calling ${words[0]} instead of directly %[1]s allows to handle aliases + args=("${words[@]:1}") + # Disable ActiveHelp which is not supported for bash completion v1 + requestComp="%[8]s=0 ${words[0]} %[2]s ${args[*]}" + + lastParam=${words[$((${#words[@]}-1))]} + lastChar=${lastParam:$((${#lastParam}-1)):1} + __%[1]s_debug "${FUNCNAME[0]}: lastParam ${lastParam}, lastChar ${lastChar}" + + if [ -z "${cur}" ] && [ "${lastChar}" != "=" ]; then + # If the last parameter is complete (there is a space following it) + # We add an extra empty parameter so we can indicate this to the go method. + __%[1]s_debug "${FUNCNAME[0]}: Adding extra empty parameter" + requestComp="${requestComp} \"\"" + fi + + __%[1]s_debug "${FUNCNAME[0]}: calling ${requestComp}" + # Use eval to handle any environment variables and such + out=$(eval "${requestComp}" 2>/dev/null) + + # Extract the directive integer at the very end of the output following a colon (:) + directive=${out##*:} + # Remove the directive + out=${out%%:*} + if [ "${directive}" = "${out}" ]; then + # There is not directive specified + directive=0 + fi + __%[1]s_debug "${FUNCNAME[0]}: the completion directive is: ${directive}" + __%[1]s_debug "${FUNCNAME[0]}: the completions are: ${out}" + + if [ $((directive & shellCompDirectiveError)) -ne 0 ]; then + # Error code. No completion. + __%[1]s_debug "${FUNCNAME[0]}: received error from custom completion go code" + return + else + if [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ]; then + if [[ $(type -t compopt) = "builtin" ]]; then + __%[1]s_debug "${FUNCNAME[0]}: activating no space" + compopt -o nospace + fi + fi + if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then + if [[ $(type -t compopt) = "builtin" ]]; then + __%[1]s_debug "${FUNCNAME[0]}: activating no file completion" + compopt +o default + fi + fi + fi + + if [ $((directive & shellCompDirectiveFilterFileExt)) -ne 0 ]; then + # File extension filtering + local fullFilter filter filteringCmd + # Do not use quotes around the $out variable or else newline + # characters will be kept. + for filter in ${out}; do + fullFilter+="$filter|" + done + + filteringCmd="_filedir $fullFilter" + __%[1]s_debug "File filtering command: $filteringCmd" + $filteringCmd + elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then + # File completion for directories only + local subdir + # Use printf to strip any trailing newline + subdir=$(printf "%%s" "${out}") + if [ -n "$subdir" ]; then + __%[1]s_debug "Listing directories in $subdir" + __%[1]s_handle_subdirs_in_dir_flag "$subdir" + else + __%[1]s_debug "Listing directories in ." + _filedir -d + fi + else + while IFS='' read -r comp; do + COMPREPLY+=("$comp") + done < <(compgen -W "${out}" -- "$cur") + fi +} + +__%[1]s_handle_reply() +{ + __%[1]s_debug "${FUNCNAME[0]}" + local comp + case $cur in + -*) + if [[ $(type -t compopt) = "builtin" ]]; then + compopt -o nospace + fi + local allflags + if [ ${#must_have_one_flag[@]} -ne 0 ]; then + allflags=("${must_have_one_flag[@]}") + else + allflags=("${flags[*]} ${two_word_flags[*]}") + fi + while IFS='' read -r comp; do + COMPREPLY+=("$comp") + done < <(compgen -W "${allflags[*]}" -- "$cur") + if [[ $(type -t compopt) = "builtin" ]]; then + [[ "${COMPREPLY[0]}" == *= ]] || compopt +o nospace + fi + + # complete after --flag=abc + if [[ $cur == *=* ]]; then + if [[ $(type -t compopt) = "builtin" ]]; then + compopt +o nospace + fi + + local index flag + flag="${cur%%=*}" + __%[1]s_index_of_word "${flag}" "${flags_with_completion[@]}" + COMPREPLY=() + if [[ ${index} -ge 0 ]]; then + PREFIX="" + cur="${cur#*=}" + ${flags_completion[${index}]} + if [ -n "${ZSH_VERSION:-}" ]; then + # zsh completion needs --flag= prefix + eval "COMPREPLY=( \"\${COMPREPLY[@]/#/${flag}=}\" )" + fi + fi + fi + + if [[ -z "${flag_parsing_disabled}" ]]; then + # If flag parsing is enabled, we have completed the flags and can return. + # If flag parsing is disabled, we may not know all (or any) of the flags, so we fallthrough + # to possibly call handle_go_custom_completion. + return 0; + fi + ;; + esac + + # check if we are handling a flag with special work handling + local index + __%[1]s_index_of_word "${prev}" "${flags_with_completion[@]}" + if [[ ${index} -ge 0 ]]; then + ${flags_completion[${index}]} + return + fi + + # we are parsing a flag and don't have a special handler, no completion + if [[ ${cur} != "${words[cword]}" ]]; then + return + fi + + local completions + completions=("${commands[@]}") + if [[ ${#must_have_one_noun[@]} -ne 0 ]]; then + completions+=("${must_have_one_noun[@]}") + elif [[ -n "${has_completion_function}" ]]; then + # if a go completion function is provided, defer to that function + __%[1]s_handle_go_custom_completion + fi + if [[ ${#must_have_one_flag[@]} -ne 0 ]]; then + completions+=("${must_have_one_flag[@]}") + fi + while IFS='' read -r comp; do + COMPREPLY+=("$comp") + done < <(compgen -W "${completions[*]}" -- "$cur") + + if [[ ${#COMPREPLY[@]} -eq 0 && ${#noun_aliases[@]} -gt 0 && ${#must_have_one_noun[@]} -ne 0 ]]; then + while IFS='' read -r comp; do + COMPREPLY+=("$comp") + done < <(compgen -W "${noun_aliases[*]}" -- "$cur") + fi + + if [[ ${#COMPREPLY[@]} -eq 0 ]]; then + if declare -F __%[1]s_custom_func >/dev/null; then + # try command name qualified custom func + __%[1]s_custom_func + else + # otherwise fall back to unqualified for compatibility + declare -F __custom_func >/dev/null && __custom_func + fi + fi + + # available in bash-completion >= 2, not always present on macOS + if declare -F __ltrim_colon_completions >/dev/null; then + __ltrim_colon_completions "$cur" + fi + + # If there is only 1 completion and it is a flag with an = it will be completed + # but we don't want a space after the = + if [[ "${#COMPREPLY[@]}" -eq "1" ]] && [[ $(type -t compopt) = "builtin" ]] && [[ "${COMPREPLY[0]}" == --*= ]]; then + compopt -o nospace + fi +} + +# The arguments should be in the form "ext1|ext2|extn" +__%[1]s_handle_filename_extension_flag() +{ + local ext="$1" + _filedir "@(${ext})" +} + +__%[1]s_handle_subdirs_in_dir_flag() +{ + local dir="$1" + pushd "${dir}" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1 || return +} + +__%[1]s_handle_flag() +{ + __%[1]s_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" + + # if a command required a flag, and we found it, unset must_have_one_flag() + local flagname=${words[c]} + local flagvalue="" + # if the word contained an = + if [[ ${words[c]} == *"="* ]]; then + flagvalue=${flagname#*=} # take in as flagvalue after the = + flagname=${flagname%%=*} # strip everything after the = + flagname="${flagname}=" # but put the = back + fi + __%[1]s_debug "${FUNCNAME[0]}: looking for ${flagname}" + if __%[1]s_contains_word "${flagname}" "${must_have_one_flag[@]}"; then + must_have_one_flag=() + fi + + # if you set a flag which only applies to this command, don't show subcommands + if __%[1]s_contains_word "${flagname}" "${local_nonpersistent_flags[@]}"; then + commands=() + fi + + # keep flag value with flagname as flaghash + # flaghash variable is an associative array which is only supported in bash > 3. + if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then + if [ -n "${flagvalue}" ] ; then + flaghash[${flagname}]=${flagvalue} + elif [ -n "${words[ $((c+1)) ]}" ] ; then + flaghash[${flagname}]=${words[ $((c+1)) ]} + else + flaghash[${flagname}]="true" # pad "true" for bool flag + fi + fi + + # skip the argument to a two word flag + if [[ ${words[c]} != *"="* ]] && __%[1]s_contains_word "${words[c]}" "${two_word_flags[@]}"; then + __%[1]s_debug "${FUNCNAME[0]}: found a flag ${words[c]}, skip the next argument" + c=$((c+1)) + # if we are looking for a flags value, don't show commands + if [[ $c -eq $cword ]]; then + commands=() + fi + fi + + c=$((c+1)) + +} + +__%[1]s_handle_noun() +{ + __%[1]s_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" + + if __%[1]s_contains_word "${words[c]}" "${must_have_one_noun[@]}"; then + must_have_one_noun=() + elif __%[1]s_contains_word "${words[c]}" "${noun_aliases[@]}"; then + must_have_one_noun=() + fi + + nouns+=("${words[c]}") + c=$((c+1)) +} + +__%[1]s_handle_command() +{ + __%[1]s_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" + + local next_command + if [[ -n ${last_command} ]]; then + next_command="_${last_command}_${words[c]//:/__}" + else + if [[ $c -eq 0 ]]; then + next_command="_%[1]s_root_command" + else + next_command="_${words[c]//:/__}" + fi + fi + c=$((c+1)) + __%[1]s_debug "${FUNCNAME[0]}: looking for ${next_command}" + declare -F "$next_command" >/dev/null && $next_command +} + +__%[1]s_handle_word() +{ + if [[ $c -ge $cword ]]; then + __%[1]s_handle_reply + return + fi + __%[1]s_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" + if [[ "${words[c]}" == -* ]]; then + __%[1]s_handle_flag + elif __%[1]s_contains_word "${words[c]}" "${commands[@]}"; then + __%[1]s_handle_command + elif [[ $c -eq 0 ]]; then + __%[1]s_handle_command + elif __%[1]s_contains_word "${words[c]}" "${command_aliases[@]}"; then + # aliashash variable is an associative array which is only supported in bash > 3. + if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then + words[c]=${aliashash[${words[c]}]} + __%[1]s_handle_command + else + __%[1]s_handle_noun + fi + else + __%[1]s_handle_noun + fi + __%[1]s_handle_word +} + +`, name, ShellCompNoDescRequestCmd, + ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp, + ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs, activeHelpEnvVar(name))) +} + +func writePostscript(buf io.StringWriter, name string) { + name = strings.ReplaceAll(name, ":", "__") + WriteStringAndCheck(buf, fmt.Sprintf("__start_%s()\n", name)) + WriteStringAndCheck(buf, fmt.Sprintf(`{ + local cur prev words cword split + declare -A flaghash 2>/dev/null || : + declare -A aliashash 2>/dev/null || : + if declare -F _init_completion >/dev/null 2>&1; then + _init_completion -s || return + else + __%[1]s_init_completion -n "=" || return + fi + + local c=0 + local flag_parsing_disabled= + local flags=() + local two_word_flags=() + local local_nonpersistent_flags=() + local flags_with_completion=() + local flags_completion=() + local commands=("%[1]s") + local command_aliases=() + local must_have_one_flag=() + local must_have_one_noun=() + local has_completion_function="" + local last_command="" + local nouns=() + local noun_aliases=() + + __%[1]s_handle_word +} + +`, name)) + WriteStringAndCheck(buf, fmt.Sprintf(`if [[ $(type -t compopt) = "builtin" ]]; then + complete -o default -F __start_%s %s +else + complete -o default -o nospace -F __start_%s %s +fi + +`, name, name, name, name)) + WriteStringAndCheck(buf, "# ex: ts=4 sw=4 et filetype=sh\n") +} + +func writeCommands(buf io.StringWriter, cmd *Command) { + WriteStringAndCheck(buf, " commands=()\n") + for _, c := range cmd.Commands() { + if !c.IsAvailableCommand() && c != cmd.helpCommand { + continue + } + WriteStringAndCheck(buf, fmt.Sprintf(" commands+=(%q)\n", c.Name())) + writeCmdAliases(buf, c) + } + WriteStringAndCheck(buf, "\n") +} + +func writeFlagHandler(buf io.StringWriter, name string, annotations map[string][]string, cmd *Command) { + for key, value := range annotations { + switch key { + case BashCompFilenameExt: + WriteStringAndCheck(buf, fmt.Sprintf(" flags_with_completion+=(%q)\n", name)) + + var ext string + if len(value) > 0 { + ext = fmt.Sprintf("__%s_handle_filename_extension_flag ", cmd.Root().Name()) + strings.Join(value, "|") + } else { + ext = "_filedir" + } + WriteStringAndCheck(buf, fmt.Sprintf(" flags_completion+=(%q)\n", ext)) + case BashCompCustom: + WriteStringAndCheck(buf, fmt.Sprintf(" flags_with_completion+=(%q)\n", name)) + + if len(value) > 0 { + handlers := strings.Join(value, "; ") + WriteStringAndCheck(buf, fmt.Sprintf(" flags_completion+=(%q)\n", handlers)) + } else { + WriteStringAndCheck(buf, " flags_completion+=(:)\n") + } + case BashCompSubdirsInDir: + WriteStringAndCheck(buf, fmt.Sprintf(" flags_with_completion+=(%q)\n", name)) + + var ext string + if len(value) == 1 { + ext = fmt.Sprintf("__%s_handle_subdirs_in_dir_flag ", cmd.Root().Name()) + value[0] + } else { + ext = "_filedir -d" + } + WriteStringAndCheck(buf, fmt.Sprintf(" flags_completion+=(%q)\n", ext)) + } + } +} + +const cbn = "\")\n" + +func writeShortFlag(buf io.StringWriter, flag *pflag.Flag, cmd *Command) { + name := flag.Shorthand + format := " " + if len(flag.NoOptDefVal) == 0 { + format += "two_word_" + } + format += "flags+=(\"-%s" + cbn + WriteStringAndCheck(buf, fmt.Sprintf(format, name)) + writeFlagHandler(buf, "-"+name, flag.Annotations, cmd) +} + +func writeFlag(buf io.StringWriter, flag *pflag.Flag, cmd *Command) { + name := flag.Name + format := " flags+=(\"--%s" + if len(flag.NoOptDefVal) == 0 { + format += "=" + } + format += cbn + WriteStringAndCheck(buf, fmt.Sprintf(format, name)) + if len(flag.NoOptDefVal) == 0 { + format = " two_word_flags+=(\"--%s" + cbn + WriteStringAndCheck(buf, fmt.Sprintf(format, name)) + } + writeFlagHandler(buf, "--"+name, flag.Annotations, cmd) +} + +func writeLocalNonPersistentFlag(buf io.StringWriter, flag *pflag.Flag) { + name := flag.Name + format := " local_nonpersistent_flags+=(\"--%[1]s" + cbn + if len(flag.NoOptDefVal) == 0 { + format += " local_nonpersistent_flags+=(\"--%[1]s=" + cbn + } + WriteStringAndCheck(buf, fmt.Sprintf(format, name)) + if len(flag.Shorthand) > 0 { + WriteStringAndCheck(buf, fmt.Sprintf(" local_nonpersistent_flags+=(\"-%s\")\n", flag.Shorthand)) + } +} + +// prepareCustomAnnotationsForFlags setup annotations for go completions for registered flags +func prepareCustomAnnotationsForFlags(cmd *Command) { + flagCompletionMutex.RLock() + defer flagCompletionMutex.RUnlock() + for flag := range flagCompletionFunctions { + // Make sure the completion script calls the __*_go_custom_completion function for + // every registered flag. We need to do this here (and not when the flag was registered + // for completion) so that we can know the root command name for the prefix + // of ___go_custom_completion + if flag.Annotations == nil { + flag.Annotations = map[string][]string{} + } + flag.Annotations[BashCompCustom] = []string{fmt.Sprintf("__%[1]s_handle_go_custom_completion", cmd.Root().Name())} + } +} + +func writeFlags(buf io.StringWriter, cmd *Command) { + prepareCustomAnnotationsForFlags(cmd) + WriteStringAndCheck(buf, ` flags=() + two_word_flags=() + local_nonpersistent_flags=() + flags_with_completion=() + flags_completion=() + +`) + + if cmd.DisableFlagParsing { + WriteStringAndCheck(buf, " flag_parsing_disabled=1\n") + } + + localNonPersistentFlags := cmd.LocalNonPersistentFlags() + cmd.NonInheritedFlags().VisitAll(func(flag *pflag.Flag) { + if nonCompletableFlag(flag) { + return + } + writeFlag(buf, flag, cmd) + if len(flag.Shorthand) > 0 { + writeShortFlag(buf, flag, cmd) + } + // localNonPersistentFlags are used to stop the completion of subcommands when one is set + // if TraverseChildren is true we should allow to complete subcommands + if localNonPersistentFlags.Lookup(flag.Name) != nil && !cmd.Root().TraverseChildren { + writeLocalNonPersistentFlag(buf, flag) + } + }) + cmd.InheritedFlags().VisitAll(func(flag *pflag.Flag) { + if nonCompletableFlag(flag) { + return + } + writeFlag(buf, flag, cmd) + if len(flag.Shorthand) > 0 { + writeShortFlag(buf, flag, cmd) + } + }) + + WriteStringAndCheck(buf, "\n") +} + +func writeRequiredFlag(buf io.StringWriter, cmd *Command) { + WriteStringAndCheck(buf, " must_have_one_flag=()\n") + flags := cmd.NonInheritedFlags() + flags.VisitAll(func(flag *pflag.Flag) { + if nonCompletableFlag(flag) { + return + } + for key := range flag.Annotations { + switch key { + case BashCompOneRequiredFlag: + format := " must_have_one_flag+=(\"--%s" + if flag.Value.Type() != "bool" { + format += "=" + } + format += cbn + WriteStringAndCheck(buf, fmt.Sprintf(format, flag.Name)) + + if len(flag.Shorthand) > 0 { + WriteStringAndCheck(buf, fmt.Sprintf(" must_have_one_flag+=(\"-%s"+cbn, flag.Shorthand)) + } + } + } + }) +} + +func writeRequiredNouns(buf io.StringWriter, cmd *Command) { + WriteStringAndCheck(buf, " must_have_one_noun=()\n") + sort.Strings(cmd.ValidArgs) + for _, value := range cmd.ValidArgs { + // Remove any description that may be included following a tab character. + // Descriptions are not supported by bash completion. + value = strings.Split(value, "\t")[0] + WriteStringAndCheck(buf, fmt.Sprintf(" must_have_one_noun+=(%q)\n", value)) + } + if cmd.ValidArgsFunction != nil { + WriteStringAndCheck(buf, " has_completion_function=1\n") + } +} + +func writeCmdAliases(buf io.StringWriter, cmd *Command) { + if len(cmd.Aliases) == 0 { + return + } + + sort.Strings(cmd.Aliases) + + WriteStringAndCheck(buf, fmt.Sprint(` if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then`, "\n")) + for _, value := range cmd.Aliases { + WriteStringAndCheck(buf, fmt.Sprintf(" command_aliases+=(%q)\n", value)) + WriteStringAndCheck(buf, fmt.Sprintf(" aliashash[%q]=%q\n", value, cmd.Name())) + } + WriteStringAndCheck(buf, ` fi`) + WriteStringAndCheck(buf, "\n") +} +func writeArgAliases(buf io.StringWriter, cmd *Command) { + WriteStringAndCheck(buf, " noun_aliases=()\n") + sort.Strings(cmd.ArgAliases) + for _, value := range cmd.ArgAliases { + WriteStringAndCheck(buf, fmt.Sprintf(" noun_aliases+=(%q)\n", value)) + } +} + +func gen(buf io.StringWriter, cmd *Command) { + for _, c := range cmd.Commands() { + if !c.IsAvailableCommand() && c != cmd.helpCommand { + continue + } + gen(buf, c) + } + commandName := cmd.CommandPath() + commandName = strings.ReplaceAll(commandName, " ", "_") + commandName = strings.ReplaceAll(commandName, ":", "__") + + if cmd.Root() == cmd { + WriteStringAndCheck(buf, fmt.Sprintf("_%s_root_command()\n{\n", commandName)) + } else { + WriteStringAndCheck(buf, fmt.Sprintf("_%s()\n{\n", commandName)) + } + + WriteStringAndCheck(buf, fmt.Sprintf(" last_command=%q\n", commandName)) + WriteStringAndCheck(buf, "\n") + WriteStringAndCheck(buf, " command_aliases=()\n") + WriteStringAndCheck(buf, "\n") + + writeCommands(buf, cmd) + writeFlags(buf, cmd) + writeRequiredFlag(buf, cmd) + writeRequiredNouns(buf, cmd) + writeArgAliases(buf, cmd) + WriteStringAndCheck(buf, "}\n\n") +} + +// GenBashCompletion generates bash completion file and writes to the passed writer. +func (c *Command) GenBashCompletion(w io.Writer) error { + buf := new(bytes.Buffer) + writePreamble(buf, c.Name()) + if len(c.BashCompletionFunction) > 0 { + buf.WriteString(c.BashCompletionFunction + "\n") + } + gen(buf, c) + writePostscript(buf, c.Name()) + + _, err := buf.WriteTo(w) + return err +} + +func nonCompletableFlag(flag *pflag.Flag) bool { + return flag.Hidden || len(flag.Deprecated) > 0 +} + +// GenBashCompletionFile generates bash completion file. +func (c *Command) GenBashCompletionFile(filename string) error { + outFile, err := os.Create(filename) + if err != nil { + return err + } + defer outFile.Close() + + return c.GenBashCompletion(outFile) +} diff --git a/vendor/github.com/spf13/cobra/bash_completions.md b/vendor/github.com/spf13/cobra/bash_completions.md new file mode 100644 index 0000000000..52919b2fa6 --- /dev/null +++ b/vendor/github.com/spf13/cobra/bash_completions.md @@ -0,0 +1,93 @@ +# Generating Bash Completions For Your cobra.Command + +Please refer to [Shell Completions](shell_completions.md) for details. + +## Bash legacy dynamic completions + +For backward compatibility, Cobra still supports its legacy dynamic completion solution (described below). Unlike the `ValidArgsFunction` solution, the legacy solution will only work for Bash shell-completion and not for other shells. This legacy solution can be used along-side `ValidArgsFunction` and `RegisterFlagCompletionFunc()`, as long as both solutions are not used for the same command. This provides a path to gradually migrate from the legacy solution to the new solution. + +**Note**: Cobra's default `completion` command uses bash completion V2. If you are currently using Cobra's legacy dynamic completion solution, you should not use the default `completion` command but continue using your own. + +The legacy solution allows you to inject bash functions into the bash completion script. Those bash functions are responsible for providing the completion choices for your own completions. + +Some code that works in kubernetes: + +```bash +const ( + bash_completion_func = `__kubectl_parse_get() +{ + local kubectl_output out + if kubectl_output=$(kubectl get --no-headers "$1" 2>/dev/null); then + out=($(echo "${kubectl_output}" | awk '{print $1}')) + COMPREPLY=( $( compgen -W "${out[*]}" -- "$cur" ) ) + fi +} + +__kubectl_get_resource() +{ + if [[ ${#nouns[@]} -eq 0 ]]; then + return 1 + fi + __kubectl_parse_get ${nouns[${#nouns[@]} -1]} + if [[ $? -eq 0 ]]; then + return 0 + fi +} + +__kubectl_custom_func() { + case ${last_command} in + kubectl_get | kubectl_describe | kubectl_delete | kubectl_stop) + __kubectl_get_resource + return + ;; + *) + ;; + esac +} +`) +``` + +And then I set that in my command definition: + +```go +cmds := &cobra.Command{ + Use: "kubectl", + Short: "kubectl controls the Kubernetes cluster manager", + Long: `kubectl controls the Kubernetes cluster manager. + +Find more information at https://github.com/GoogleCloudPlatform/kubernetes.`, + Run: runHelp, + BashCompletionFunction: bash_completion_func, +} +``` + +The `BashCompletionFunction` option is really only valid/useful on the root command. Doing the above will cause `__kubectl_custom_func()` (`___custom_func()`) to be called when the built in processor was unable to find a solution. In the case of kubernetes a valid command might look something like `kubectl get pod [mypod]`. If you type `kubectl get pod [tab][tab]` the `__kubectl_customc_func()` will run because the cobra.Command only understood "kubectl" and "get." `__kubectl_custom_func()` will see that the cobra.Command is "kubectl_get" and will thus call another helper `__kubectl_get_resource()`. `__kubectl_get_resource` will look at the 'nouns' collected. In our example the only noun will be `pod`. So it will call `__kubectl_parse_get pod`. `__kubectl_parse_get` will actually call out to kubernetes and get any pods. It will then set `COMPREPLY` to valid pods! + +Similarly, for flags: + +```go + annotation := make(map[string][]string) + annotation[cobra.BashCompCustom] = []string{"__kubectl_get_namespaces"} + + flag := &pflag.Flag{ + Name: "namespace", + Usage: usage, + Annotations: annotation, + } + cmd.Flags().AddFlag(flag) +``` + +In addition add the `__kubectl_get_namespaces` implementation in the `BashCompletionFunction` +value, e.g.: + +```bash +__kubectl_get_namespaces() +{ + local template + template="{{ range .items }}{{ .metadata.name }} {{ end }}" + local kubectl_out + if kubectl_out=$(kubectl get -o template --template="${template}" namespace 2>/dev/null); then + COMPREPLY=( $( compgen -W "${kubectl_out}[*]" -- "$cur" ) ) + fi +} +``` diff --git a/vendor/github.com/spf13/cobra/bash_completionsV2.go b/vendor/github.com/spf13/cobra/bash_completionsV2.go new file mode 100644 index 0000000000..19b09560c1 --- /dev/null +++ b/vendor/github.com/spf13/cobra/bash_completionsV2.go @@ -0,0 +1,396 @@ +// Copyright 2013-2023 The Cobra Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cobra + +import ( + "bytes" + "fmt" + "io" + "os" +) + +func (c *Command) genBashCompletion(w io.Writer, includeDesc bool) error { + buf := new(bytes.Buffer) + genBashComp(buf, c.Name(), includeDesc) + _, err := buf.WriteTo(w) + return err +} + +func genBashComp(buf io.StringWriter, name string, includeDesc bool) { + compCmd := ShellCompRequestCmd + if !includeDesc { + compCmd = ShellCompNoDescRequestCmd + } + + WriteStringAndCheck(buf, fmt.Sprintf(`# bash completion V2 for %-36[1]s -*- shell-script -*- + +__%[1]s_debug() +{ + if [[ -n ${BASH_COMP_DEBUG_FILE-} ]]; then + echo "$*" >> "${BASH_COMP_DEBUG_FILE}" + fi +} + +# Macs have bash3 for which the bash-completion package doesn't include +# _init_completion. This is a minimal version of that function. +__%[1]s_init_completion() +{ + COMPREPLY=() + _get_comp_words_by_ref "$@" cur prev words cword +} + +# This function calls the %[1]s program to obtain the completion +# results and the directive. It fills the 'out' and 'directive' vars. +__%[1]s_get_completion_results() { + local requestComp lastParam lastChar args + + # Prepare the command to request completions for the program. + # Calling ${words[0]} instead of directly %[1]s allows to handle aliases + args=("${words[@]:1}") + requestComp="${words[0]} %[2]s ${args[*]}" + + lastParam=${words[$((${#words[@]}-1))]} + lastChar=${lastParam:$((${#lastParam}-1)):1} + __%[1]s_debug "lastParam ${lastParam}, lastChar ${lastChar}" + + if [[ -z ${cur} && ${lastChar} != = ]]; then + # If the last parameter is complete (there is a space following it) + # We add an extra empty parameter so we can indicate this to the go method. + __%[1]s_debug "Adding extra empty parameter" + requestComp="${requestComp} ''" + fi + + # When completing a flag with an = (e.g., %[1]s -n=) + # bash focuses on the part after the =, so we need to remove + # the flag part from $cur + if [[ ${cur} == -*=* ]]; then + cur="${cur#*=}" + fi + + __%[1]s_debug "Calling ${requestComp}" + # Use eval to handle any environment variables and such + out=$(eval "${requestComp}" 2>/dev/null) + + # Extract the directive integer at the very end of the output following a colon (:) + directive=${out##*:} + # Remove the directive + out=${out%%:*} + if [[ ${directive} == "${out}" ]]; then + # There is not directive specified + directive=0 + fi + __%[1]s_debug "The completion directive is: ${directive}" + __%[1]s_debug "The completions are: ${out}" +} + +__%[1]s_process_completion_results() { + local shellCompDirectiveError=%[3]d + local shellCompDirectiveNoSpace=%[4]d + local shellCompDirectiveNoFileComp=%[5]d + local shellCompDirectiveFilterFileExt=%[6]d + local shellCompDirectiveFilterDirs=%[7]d + local shellCompDirectiveKeepOrder=%[8]d + + if (((directive & shellCompDirectiveError) != 0)); then + # Error code. No completion. + __%[1]s_debug "Received error from custom completion go code" + return + else + if (((directive & shellCompDirectiveNoSpace) != 0)); then + if [[ $(type -t compopt) == builtin ]]; then + __%[1]s_debug "Activating no space" + compopt -o nospace + else + __%[1]s_debug "No space directive not supported in this version of bash" + fi + fi + if (((directive & shellCompDirectiveKeepOrder) != 0)); then + if [[ $(type -t compopt) == builtin ]]; then + # no sort isn't supported for bash less than < 4.4 + if [[ ${BASH_VERSINFO[0]} -lt 4 || ( ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 4 ) ]]; then + __%[1]s_debug "No sort directive not supported in this version of bash" + else + __%[1]s_debug "Activating keep order" + compopt -o nosort + fi + else + __%[1]s_debug "No sort directive not supported in this version of bash" + fi + fi + if (((directive & shellCompDirectiveNoFileComp) != 0)); then + if [[ $(type -t compopt) == builtin ]]; then + __%[1]s_debug "Activating no file completion" + compopt +o default + else + __%[1]s_debug "No file completion directive not supported in this version of bash" + fi + fi + fi + + # Separate activeHelp from normal completions + local completions=() + local activeHelp=() + __%[1]s_extract_activeHelp + + if (((directive & shellCompDirectiveFilterFileExt) != 0)); then + # File extension filtering + local fullFilter filter filteringCmd + + # Do not use quotes around the $completions variable or else newline + # characters will be kept. + for filter in ${completions[*]}; do + fullFilter+="$filter|" + done + + filteringCmd="_filedir $fullFilter" + __%[1]s_debug "File filtering command: $filteringCmd" + $filteringCmd + elif (((directive & shellCompDirectiveFilterDirs) != 0)); then + # File completion for directories only + + local subdir + subdir=${completions[0]} + if [[ -n $subdir ]]; then + __%[1]s_debug "Listing directories in $subdir" + pushd "$subdir" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1 || return + else + __%[1]s_debug "Listing directories in ." + _filedir -d + fi + else + __%[1]s_handle_completion_types + fi + + __%[1]s_handle_special_char "$cur" : + __%[1]s_handle_special_char "$cur" = + + # Print the activeHelp statements before we finish + if ((${#activeHelp[*]} != 0)); then + printf "\n"; + printf "%%s\n" "${activeHelp[@]}" + printf "\n" + + # The prompt format is only available from bash 4.4. + # We test if it is available before using it. + if (x=${PS1@P}) 2> /dev/null; then + printf "%%s" "${PS1@P}${COMP_LINE[@]}" + else + # Can't print the prompt. Just print the + # text the user had typed, it is workable enough. + printf "%%s" "${COMP_LINE[@]}" + fi + fi +} + +# Separate activeHelp lines from real completions. +# Fills the $activeHelp and $completions arrays. +__%[1]s_extract_activeHelp() { + local activeHelpMarker="%[9]s" + local endIndex=${#activeHelpMarker} + + while IFS='' read -r comp; do + if [[ ${comp:0:endIndex} == $activeHelpMarker ]]; then + comp=${comp:endIndex} + __%[1]s_debug "ActiveHelp found: $comp" + if [[ -n $comp ]]; then + activeHelp+=("$comp") + fi + else + # Not an activeHelp line but a normal completion + completions+=("$comp") + fi + done <<<"${out}" +} + +__%[1]s_handle_completion_types() { + __%[1]s_debug "__%[1]s_handle_completion_types: COMP_TYPE is $COMP_TYPE" + + case $COMP_TYPE in + 37|42) + # Type: menu-complete/menu-complete-backward and insert-completions + # If the user requested inserting one completion at a time, or all + # completions at once on the command-line we must remove the descriptions. + # https://github.com/spf13/cobra/issues/1508 + local tab=$'\t' comp + while IFS='' read -r comp; do + [[ -z $comp ]] && continue + # Strip any description + comp=${comp%%%%$tab*} + # Only consider the completions that match + if [[ $comp == "$cur"* ]]; then + COMPREPLY+=("$comp") + fi + done < <(printf "%%s\n" "${completions[@]}") + ;; + + *) + # Type: complete (normal completion) + __%[1]s_handle_standard_completion_case + ;; + esac +} + +__%[1]s_handle_standard_completion_case() { + local tab=$'\t' comp + + # Short circuit to optimize if we don't have descriptions + if [[ "${completions[*]}" != *$tab* ]]; then + IFS=$'\n' read -ra COMPREPLY -d '' < <(compgen -W "${completions[*]}" -- "$cur") + return 0 + fi + + local longest=0 + local compline + # Look for the longest completion so that we can format things nicely + while IFS='' read -r compline; do + [[ -z $compline ]] && continue + # Strip any description before checking the length + comp=${compline%%%%$tab*} + # Only consider the completions that match + [[ $comp == "$cur"* ]] || continue + COMPREPLY+=("$compline") + if ((${#comp}>longest)); then + longest=${#comp} + fi + done < <(printf "%%s\n" "${completions[@]}") + + # If there is a single completion left, remove the description text + if ((${#COMPREPLY[*]} == 1)); then + __%[1]s_debug "COMPREPLY[0]: ${COMPREPLY[0]}" + comp="${COMPREPLY[0]%%%%$tab*}" + __%[1]s_debug "Removed description from single completion, which is now: ${comp}" + COMPREPLY[0]=$comp + else # Format the descriptions + __%[1]s_format_comp_descriptions $longest + fi +} + +__%[1]s_handle_special_char() +{ + local comp="$1" + local char=$2 + if [[ "$comp" == *${char}* && "$COMP_WORDBREAKS" == *${char}* ]]; then + local word=${comp%%"${comp##*${char}}"} + local idx=${#COMPREPLY[*]} + while ((--idx >= 0)); do + COMPREPLY[idx]=${COMPREPLY[idx]#"$word"} + done + fi +} + +__%[1]s_format_comp_descriptions() +{ + local tab=$'\t' + local comp desc maxdesclength + local longest=$1 + + local i ci + for ci in ${!COMPREPLY[*]}; do + comp=${COMPREPLY[ci]} + # Properly format the description string which follows a tab character if there is one + if [[ "$comp" == *$tab* ]]; then + __%[1]s_debug "Original comp: $comp" + desc=${comp#*$tab} + comp=${comp%%%%$tab*} + + # $COLUMNS stores the current shell width. + # Remove an extra 4 because we add 2 spaces and 2 parentheses. + maxdesclength=$(( COLUMNS - longest - 4 )) + + # Make sure we can fit a description of at least 8 characters + # if we are to align the descriptions. + if ((maxdesclength > 8)); then + # Add the proper number of spaces to align the descriptions + for ((i = ${#comp} ; i < longest ; i++)); do + comp+=" " + done + else + # Don't pad the descriptions so we can fit more text after the completion + maxdesclength=$(( COLUMNS - ${#comp} - 4 )) + fi + + # If there is enough space for any description text, + # truncate the descriptions that are too long for the shell width + if ((maxdesclength > 0)); then + if ((${#desc} > maxdesclength)); then + desc=${desc:0:$(( maxdesclength - 1 ))} + desc+="…" + fi + comp+=" ($desc)" + fi + COMPREPLY[ci]=$comp + __%[1]s_debug "Final comp: $comp" + fi + done +} + +__start_%[1]s() +{ + local cur prev words cword split + + COMPREPLY=() + + # Call _init_completion from the bash-completion package + # to prepare the arguments properly + if declare -F _init_completion >/dev/null 2>&1; then + _init_completion -n =: || return + else + __%[1]s_init_completion -n =: || return + fi + + __%[1]s_debug + __%[1]s_debug "========= starting completion logic ==========" + __%[1]s_debug "cur is ${cur}, words[*] is ${words[*]}, #words[@] is ${#words[@]}, cword is $cword" + + # The user could have moved the cursor backwards on the command-line. + # We need to trigger completion from the $cword location, so we need + # to truncate the command-line ($words) up to the $cword location. + words=("${words[@]:0:$cword+1}") + __%[1]s_debug "Truncated words[*]: ${words[*]}," + + local out directive + __%[1]s_get_completion_results + __%[1]s_process_completion_results +} + +if [[ $(type -t compopt) = "builtin" ]]; then + complete -o default -F __start_%[1]s %[1]s +else + complete -o default -o nospace -F __start_%[1]s %[1]s +fi + +# ex: ts=4 sw=4 et filetype=sh +`, name, compCmd, + ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp, + ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs, ShellCompDirectiveKeepOrder, + activeHelpMarker)) +} + +// GenBashCompletionFileV2 generates Bash completion version 2. +func (c *Command) GenBashCompletionFileV2(filename string, includeDesc bool) error { + outFile, err := os.Create(filename) + if err != nil { + return err + } + defer outFile.Close() + + return c.GenBashCompletionV2(outFile, includeDesc) +} + +// GenBashCompletionV2 generates Bash completion file version 2 +// and writes it to the passed writer. +func (c *Command) GenBashCompletionV2(w io.Writer, includeDesc bool) error { + return c.genBashCompletion(w, includeDesc) +} diff --git a/vendor/github.com/spf13/cobra/cobra.go b/vendor/github.com/spf13/cobra/cobra.go new file mode 100644 index 0000000000..b07b44a0ce --- /dev/null +++ b/vendor/github.com/spf13/cobra/cobra.go @@ -0,0 +1,239 @@ +// Copyright 2013-2023 The Cobra Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Commands similar to git, go tools and other modern CLI tools +// inspired by go, go-Commander, gh and subcommand + +package cobra + +import ( + "fmt" + "io" + "os" + "reflect" + "strconv" + "strings" + "text/template" + "time" + "unicode" +) + +var templateFuncs = template.FuncMap{ + "trim": strings.TrimSpace, + "trimRightSpace": trimRightSpace, + "trimTrailingWhitespaces": trimRightSpace, + "appendIfNotPresent": appendIfNotPresent, + "rpad": rpad, + "gt": Gt, + "eq": Eq, +} + +var initializers []func() +var finalizers []func() + +const ( + defaultPrefixMatching = false + defaultCommandSorting = true + defaultCaseInsensitive = false +) + +// EnablePrefixMatching allows to set automatic prefix matching. Automatic prefix matching can be a dangerous thing +// to automatically enable in CLI tools. +// Set this to true to enable it. +var EnablePrefixMatching = defaultPrefixMatching + +// EnableCommandSorting controls sorting of the slice of commands, which is turned on by default. +// To disable sorting, set it to false. +var EnableCommandSorting = defaultCommandSorting + +// EnableCaseInsensitive allows case-insensitive commands names. (case sensitive by default) +var EnableCaseInsensitive = defaultCaseInsensitive + +// MousetrapHelpText enables an information splash screen on Windows +// if the CLI is started from explorer.exe. +// To disable the mousetrap, just set this variable to blank string (""). +// Works only on Microsoft Windows. +var MousetrapHelpText = `This is a command line tool. + +You need to open cmd.exe and run it from there. +` + +// MousetrapDisplayDuration controls how long the MousetrapHelpText message is displayed on Windows +// if the CLI is started from explorer.exe. Set to 0 to wait for the return key to be pressed. +// To disable the mousetrap, just set MousetrapHelpText to blank string (""). +// Works only on Microsoft Windows. +var MousetrapDisplayDuration = 5 * time.Second + +// AddTemplateFunc adds a template function that's available to Usage and Help +// template generation. +func AddTemplateFunc(name string, tmplFunc interface{}) { + templateFuncs[name] = tmplFunc +} + +// AddTemplateFuncs adds multiple template functions that are available to Usage and +// Help template generation. +func AddTemplateFuncs(tmplFuncs template.FuncMap) { + for k, v := range tmplFuncs { + templateFuncs[k] = v + } +} + +// OnInitialize sets the passed functions to be run when each command's +// Execute method is called. +func OnInitialize(y ...func()) { + initializers = append(initializers, y...) +} + +// OnFinalize sets the passed functions to be run when each command's +// Execute method is terminated. +func OnFinalize(y ...func()) { + finalizers = append(finalizers, y...) +} + +// FIXME Gt is unused by cobra and should be removed in a version 2. It exists only for compatibility with users of cobra. + +// Gt takes two types and checks whether the first type is greater than the second. In case of types Arrays, Chans, +// Maps and Slices, Gt will compare their lengths. Ints are compared directly while strings are first parsed as +// ints and then compared. +func Gt(a interface{}, b interface{}) bool { + var left, right int64 + av := reflect.ValueOf(a) + + switch av.Kind() { + case reflect.Array, reflect.Chan, reflect.Map, reflect.Slice: + left = int64(av.Len()) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + left = av.Int() + case reflect.String: + left, _ = strconv.ParseInt(av.String(), 10, 64) + } + + bv := reflect.ValueOf(b) + + switch bv.Kind() { + case reflect.Array, reflect.Chan, reflect.Map, reflect.Slice: + right = int64(bv.Len()) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + right = bv.Int() + case reflect.String: + right, _ = strconv.ParseInt(bv.String(), 10, 64) + } + + return left > right +} + +// FIXME Eq is unused by cobra and should be removed in a version 2. It exists only for compatibility with users of cobra. + +// Eq takes two types and checks whether they are equal. Supported types are int and string. Unsupported types will panic. +func Eq(a interface{}, b interface{}) bool { + av := reflect.ValueOf(a) + bv := reflect.ValueOf(b) + + switch av.Kind() { + case reflect.Array, reflect.Chan, reflect.Map, reflect.Slice: + panic("Eq called on unsupported type") + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return av.Int() == bv.Int() + case reflect.String: + return av.String() == bv.String() + } + return false +} + +func trimRightSpace(s string) string { + return strings.TrimRightFunc(s, unicode.IsSpace) +} + +// FIXME appendIfNotPresent is unused by cobra and should be removed in a version 2. It exists only for compatibility with users of cobra. + +// appendIfNotPresent will append stringToAppend to the end of s, but only if it's not yet present in s. +func appendIfNotPresent(s, stringToAppend string) string { + if strings.Contains(s, stringToAppend) { + return s + } + return s + " " + stringToAppend +} + +// rpad adds padding to the right of a string. +func rpad(s string, padding int) string { + formattedString := fmt.Sprintf("%%-%ds", padding) + return fmt.Sprintf(formattedString, s) +} + +// tmpl executes the given template text on data, writing the result to w. +func tmpl(w io.Writer, text string, data interface{}) error { + t := template.New("top") + t.Funcs(templateFuncs) + template.Must(t.Parse(text)) + return t.Execute(w, data) +} + +// ld compares two strings and returns the levenshtein distance between them. +func ld(s, t string, ignoreCase bool) int { + if ignoreCase { + s = strings.ToLower(s) + t = strings.ToLower(t) + } + d := make([][]int, len(s)+1) + for i := range d { + d[i] = make([]int, len(t)+1) + } + for i := range d { + d[i][0] = i + } + for j := range d[0] { + d[0][j] = j + } + for j := 1; j <= len(t); j++ { + for i := 1; i <= len(s); i++ { + if s[i-1] == t[j-1] { + d[i][j] = d[i-1][j-1] + } else { + min := d[i-1][j] + if d[i][j-1] < min { + min = d[i][j-1] + } + if d[i-1][j-1] < min { + min = d[i-1][j-1] + } + d[i][j] = min + 1 + } + } + + } + return d[len(s)][len(t)] +} + +func stringInSlice(a string, list []string) bool { + for _, b := range list { + if b == a { + return true + } + } + return false +} + +// CheckErr prints the msg with the prefix 'Error:' and exits with error code 1. If the msg is nil, it does nothing. +func CheckErr(msg interface{}) { + if msg != nil { + fmt.Fprintln(os.Stderr, "Error:", msg) + os.Exit(1) + } +} + +// WriteStringAndCheck writes a string into a buffer, and checks if the error is not nil. +func WriteStringAndCheck(b io.StringWriter, s string) { + _, err := b.WriteString(s) + CheckErr(err) +} diff --git a/vendor/github.com/spf13/cobra/command.go b/vendor/github.com/spf13/cobra/command.go new file mode 100644 index 0000000000..01f7c6f1c5 --- /dev/null +++ b/vendor/github.com/spf13/cobra/command.go @@ -0,0 +1,1834 @@ +// Copyright 2013-2023 The Cobra Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package cobra is a commander providing a simple interface to create powerful modern CLI interfaces. +// In addition to providing an interface, Cobra simultaneously provides a controller to organize your application code. +package cobra + +import ( + "bytes" + "context" + "errors" + "fmt" + "io" + "os" + "path/filepath" + "sort" + "strings" + + flag "github.com/spf13/pflag" +) + +const FlagSetByCobraAnnotation = "cobra_annotation_flag_set_by_cobra" + +// FParseErrWhitelist configures Flag parse errors to be ignored +type FParseErrWhitelist flag.ParseErrorsWhitelist + +// Group Structure to manage groups for commands +type Group struct { + ID string + Title string +} + +// Command is just that, a command for your application. +// E.g. 'go run ...' - 'run' is the command. Cobra requires +// you to define the usage and description as part of your command +// definition to ensure usability. +type Command struct { + // Use is the one-line usage message. + // Recommended syntax is as follows: + // [ ] identifies an optional argument. Arguments that are not enclosed in brackets are required. + // ... indicates that you can specify multiple values for the previous argument. + // | indicates mutually exclusive information. You can use the argument to the left of the separator or the + // argument to the right of the separator. You cannot use both arguments in a single use of the command. + // { } delimits a set of mutually exclusive arguments when one of the arguments is required. If the arguments are + // optional, they are enclosed in brackets ([ ]). + // Example: add [-F file | -D dir]... [-f format] profile + Use string + + // Aliases is an array of aliases that can be used instead of the first word in Use. + Aliases []string + + // SuggestFor is an array of command names for which this command will be suggested - + // similar to aliases but only suggests. + SuggestFor []string + + // Short is the short description shown in the 'help' output. + Short string + + // The group id under which this subcommand is grouped in the 'help' output of its parent. + GroupID string + + // Long is the long message shown in the 'help ' output. + Long string + + // Example is examples of how to use the command. + Example string + + // ValidArgs is list of all valid non-flag arguments that are accepted in shell completions + ValidArgs []string + // ValidArgsFunction is an optional function that provides valid non-flag arguments for shell completion. + // It is a dynamic version of using ValidArgs. + // Only one of ValidArgs and ValidArgsFunction can be used for a command. + ValidArgsFunction func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) + + // Expected arguments + Args PositionalArgs + + // ArgAliases is List of aliases for ValidArgs. + // These are not suggested to the user in the shell completion, + // but accepted if entered manually. + ArgAliases []string + + // BashCompletionFunction is custom bash functions used by the legacy bash autocompletion generator. + // For portability with other shells, it is recommended to instead use ValidArgsFunction + BashCompletionFunction string + + // Deprecated defines, if this command is deprecated and should print this string when used. + Deprecated string + + // Annotations are key/value pairs that can be used by applications to identify or + // group commands. + Annotations map[string]string + + // Version defines the version for this command. If this value is non-empty and the command does not + // define a "version" flag, a "version" boolean flag will be added to the command and, if specified, + // will print content of the "Version" variable. A shorthand "v" flag will also be added if the + // command does not define one. + Version string + + // The *Run functions are executed in the following order: + // * PersistentPreRun() + // * PreRun() + // * Run() + // * PostRun() + // * PersistentPostRun() + // All functions get the same args, the arguments after the command name. + // + // PersistentPreRun: children of this command will inherit and execute. + PersistentPreRun func(cmd *Command, args []string) + // PersistentPreRunE: PersistentPreRun but returns an error. + PersistentPreRunE func(cmd *Command, args []string) error + // PreRun: children of this command will not inherit. + PreRun func(cmd *Command, args []string) + // PreRunE: PreRun but returns an error. + PreRunE func(cmd *Command, args []string) error + // Run: Typically the actual work function. Most commands will only implement this. + Run func(cmd *Command, args []string) + // RunE: Run but returns an error. + RunE func(cmd *Command, args []string) error + // PostRun: run after the Run command. + PostRun func(cmd *Command, args []string) + // PostRunE: PostRun but returns an error. + PostRunE func(cmd *Command, args []string) error + // PersistentPostRun: children of this command will inherit and execute after PostRun. + PersistentPostRun func(cmd *Command, args []string) + // PersistentPostRunE: PersistentPostRun but returns an error. + PersistentPostRunE func(cmd *Command, args []string) error + + // groups for subcommands + commandgroups []*Group + + // args is actual args parsed from flags. + args []string + // flagErrorBuf contains all error messages from pflag. + flagErrorBuf *bytes.Buffer + // flags is full set of flags. + flags *flag.FlagSet + // pflags contains persistent flags. + pflags *flag.FlagSet + // lflags contains local flags. + lflags *flag.FlagSet + // iflags contains inherited flags. + iflags *flag.FlagSet + // parentsPflags is all persistent flags of cmd's parents. + parentsPflags *flag.FlagSet + // globNormFunc is the global normalization function + // that we can use on every pflag set and children commands + globNormFunc func(f *flag.FlagSet, name string) flag.NormalizedName + + // usageFunc is usage func defined by user. + usageFunc func(*Command) error + // usageTemplate is usage template defined by user. + usageTemplate string + // flagErrorFunc is func defined by user and it's called when the parsing of + // flags returns an error. + flagErrorFunc func(*Command, error) error + // helpTemplate is help template defined by user. + helpTemplate string + // helpFunc is help func defined by user. + helpFunc func(*Command, []string) + // helpCommand is command with usage 'help'. If it's not defined by user, + // cobra uses default help command. + helpCommand *Command + // helpCommandGroupID is the group id for the helpCommand + helpCommandGroupID string + + // completionCommandGroupID is the group id for the completion command + completionCommandGroupID string + + // versionTemplate is the version template defined by user. + versionTemplate string + + // inReader is a reader defined by the user that replaces stdin + inReader io.Reader + // outWriter is a writer defined by the user that replaces stdout + outWriter io.Writer + // errWriter is a writer defined by the user that replaces stderr + errWriter io.Writer + + // FParseErrWhitelist flag parse errors to be ignored + FParseErrWhitelist FParseErrWhitelist + + // CompletionOptions is a set of options to control the handling of shell completion + CompletionOptions CompletionOptions + + // commandsAreSorted defines, if command slice are sorted or not. + commandsAreSorted bool + // commandCalledAs is the name or alias value used to call this command. + commandCalledAs struct { + name string + called bool + } + + ctx context.Context + + // commands is the list of commands supported by this program. + commands []*Command + // parent is a parent command for this command. + parent *Command + // Max lengths of commands' string lengths for use in padding. + commandsMaxUseLen int + commandsMaxCommandPathLen int + commandsMaxNameLen int + + // TraverseChildren parses flags on all parents before executing child command. + TraverseChildren bool + + // Hidden defines, if this command is hidden and should NOT show up in the list of available commands. + Hidden bool + + // SilenceErrors is an option to quiet errors down stream. + SilenceErrors bool + + // SilenceUsage is an option to silence usage when an error occurs. + SilenceUsage bool + + // DisableFlagParsing disables the flag parsing. + // If this is true all flags will be passed to the command as arguments. + DisableFlagParsing bool + + // DisableAutoGenTag defines, if gen tag ("Auto generated by spf13/cobra...") + // will be printed by generating docs for this command. + DisableAutoGenTag bool + + // DisableFlagsInUseLine will disable the addition of [flags] to the usage + // line of a command when printing help or generating docs + DisableFlagsInUseLine bool + + // DisableSuggestions disables the suggestions based on Levenshtein distance + // that go along with 'unknown command' messages. + DisableSuggestions bool + + // SuggestionsMinimumDistance defines minimum levenshtein distance to display suggestions. + // Must be > 0. + SuggestionsMinimumDistance int +} + +// Context returns underlying command context. If command was executed +// with ExecuteContext or the context was set with SetContext, the +// previously set context will be returned. Otherwise, nil is returned. +// +// Notice that a call to Execute and ExecuteC will replace a nil context of +// a command with a context.Background, so a background context will be +// returned by Context after one of these functions has been called. +func (c *Command) Context() context.Context { + return c.ctx +} + +// SetContext sets context for the command. This context will be overwritten by +// Command.ExecuteContext or Command.ExecuteContextC. +func (c *Command) SetContext(ctx context.Context) { + c.ctx = ctx +} + +// SetArgs sets arguments for the command. It is set to os.Args[1:] by default, if desired, can be overridden +// particularly useful when testing. +func (c *Command) SetArgs(a []string) { + c.args = a +} + +// SetOutput sets the destination for usage and error messages. +// If output is nil, os.Stderr is used. +// Deprecated: Use SetOut and/or SetErr instead +func (c *Command) SetOutput(output io.Writer) { + c.outWriter = output + c.errWriter = output +} + +// SetOut sets the destination for usage messages. +// If newOut is nil, os.Stdout is used. +func (c *Command) SetOut(newOut io.Writer) { + c.outWriter = newOut +} + +// SetErr sets the destination for error messages. +// If newErr is nil, os.Stderr is used. +func (c *Command) SetErr(newErr io.Writer) { + c.errWriter = newErr +} + +// SetIn sets the source for input data +// If newIn is nil, os.Stdin is used. +func (c *Command) SetIn(newIn io.Reader) { + c.inReader = newIn +} + +// SetUsageFunc sets usage function. Usage can be defined by application. +func (c *Command) SetUsageFunc(f func(*Command) error) { + c.usageFunc = f +} + +// SetUsageTemplate sets usage template. Can be defined by Application. +func (c *Command) SetUsageTemplate(s string) { + c.usageTemplate = s +} + +// SetFlagErrorFunc sets a function to generate an error when flag parsing +// fails. +func (c *Command) SetFlagErrorFunc(f func(*Command, error) error) { + c.flagErrorFunc = f +} + +// SetHelpFunc sets help function. Can be defined by Application. +func (c *Command) SetHelpFunc(f func(*Command, []string)) { + c.helpFunc = f +} + +// SetHelpCommand sets help command. +func (c *Command) SetHelpCommand(cmd *Command) { + c.helpCommand = cmd +} + +// SetHelpCommandGroupID sets the group id of the help command. +func (c *Command) SetHelpCommandGroupID(groupID string) { + if c.helpCommand != nil { + c.helpCommand.GroupID = groupID + } + // helpCommandGroupID is used if no helpCommand is defined by the user + c.helpCommandGroupID = groupID +} + +// SetCompletionCommandGroupID sets the group id of the completion command. +func (c *Command) SetCompletionCommandGroupID(groupID string) { + // completionCommandGroupID is used if no completion command is defined by the user + c.Root().completionCommandGroupID = groupID +} + +// SetHelpTemplate sets help template to be used. Application can use it to set custom template. +func (c *Command) SetHelpTemplate(s string) { + c.helpTemplate = s +} + +// SetVersionTemplate sets version template to be used. Application can use it to set custom template. +func (c *Command) SetVersionTemplate(s string) { + c.versionTemplate = s +} + +// SetGlobalNormalizationFunc sets a normalization function to all flag sets and also to child commands. +// The user should not have a cyclic dependency on commands. +func (c *Command) SetGlobalNormalizationFunc(n func(f *flag.FlagSet, name string) flag.NormalizedName) { + c.Flags().SetNormalizeFunc(n) + c.PersistentFlags().SetNormalizeFunc(n) + c.globNormFunc = n + + for _, command := range c.commands { + command.SetGlobalNormalizationFunc(n) + } +} + +// OutOrStdout returns output to stdout. +func (c *Command) OutOrStdout() io.Writer { + return c.getOut(os.Stdout) +} + +// OutOrStderr returns output to stderr +func (c *Command) OutOrStderr() io.Writer { + return c.getOut(os.Stderr) +} + +// ErrOrStderr returns output to stderr +func (c *Command) ErrOrStderr() io.Writer { + return c.getErr(os.Stderr) +} + +// InOrStdin returns input to stdin +func (c *Command) InOrStdin() io.Reader { + return c.getIn(os.Stdin) +} + +func (c *Command) getOut(def io.Writer) io.Writer { + if c.outWriter != nil { + return c.outWriter + } + if c.HasParent() { + return c.parent.getOut(def) + } + return def +} + +func (c *Command) getErr(def io.Writer) io.Writer { + if c.errWriter != nil { + return c.errWriter + } + if c.HasParent() { + return c.parent.getErr(def) + } + return def +} + +func (c *Command) getIn(def io.Reader) io.Reader { + if c.inReader != nil { + return c.inReader + } + if c.HasParent() { + return c.parent.getIn(def) + } + return def +} + +// UsageFunc returns either the function set by SetUsageFunc for this command +// or a parent, or it returns a default usage function. +func (c *Command) UsageFunc() (f func(*Command) error) { + if c.usageFunc != nil { + return c.usageFunc + } + if c.HasParent() { + return c.Parent().UsageFunc() + } + return func(c *Command) error { + c.mergePersistentFlags() + err := tmpl(c.OutOrStderr(), c.UsageTemplate(), c) + if err != nil { + c.PrintErrln(err) + } + return err + } +} + +// Usage puts out the usage for the command. +// Used when a user provides invalid input. +// Can be defined by user by overriding UsageFunc. +func (c *Command) Usage() error { + return c.UsageFunc()(c) +} + +// HelpFunc returns either the function set by SetHelpFunc for this command +// or a parent, or it returns a function with default help behavior. +func (c *Command) HelpFunc() func(*Command, []string) { + if c.helpFunc != nil { + return c.helpFunc + } + if c.HasParent() { + return c.Parent().HelpFunc() + } + return func(c *Command, a []string) { + c.mergePersistentFlags() + // The help should be sent to stdout + // See https://github.com/spf13/cobra/issues/1002 + err := tmpl(c.OutOrStdout(), c.HelpTemplate(), c) + if err != nil { + c.PrintErrln(err) + } + } +} + +// Help puts out the help for the command. +// Used when a user calls help [command]. +// Can be defined by user by overriding HelpFunc. +func (c *Command) Help() error { + c.HelpFunc()(c, []string{}) + return nil +} + +// UsageString returns usage string. +func (c *Command) UsageString() string { + // Storing normal writers + tmpOutput := c.outWriter + tmpErr := c.errWriter + + bb := new(bytes.Buffer) + c.outWriter = bb + c.errWriter = bb + + CheckErr(c.Usage()) + + // Setting things back to normal + c.outWriter = tmpOutput + c.errWriter = tmpErr + + return bb.String() +} + +// FlagErrorFunc returns either the function set by SetFlagErrorFunc for this +// command or a parent, or it returns a function which returns the original +// error. +func (c *Command) FlagErrorFunc() (f func(*Command, error) error) { + if c.flagErrorFunc != nil { + return c.flagErrorFunc + } + + if c.HasParent() { + return c.parent.FlagErrorFunc() + } + return func(c *Command, err error) error { + return err + } +} + +var minUsagePadding = 25 + +// UsagePadding return padding for the usage. +func (c *Command) UsagePadding() int { + if c.parent == nil || minUsagePadding > c.parent.commandsMaxUseLen { + return minUsagePadding + } + return c.parent.commandsMaxUseLen +} + +var minCommandPathPadding = 11 + +// CommandPathPadding return padding for the command path. +func (c *Command) CommandPathPadding() int { + if c.parent == nil || minCommandPathPadding > c.parent.commandsMaxCommandPathLen { + return minCommandPathPadding + } + return c.parent.commandsMaxCommandPathLen +} + +var minNamePadding = 11 + +// NamePadding returns padding for the name. +func (c *Command) NamePadding() int { + if c.parent == nil || minNamePadding > c.parent.commandsMaxNameLen { + return minNamePadding + } + return c.parent.commandsMaxNameLen +} + +// UsageTemplate returns usage template for the command. +func (c *Command) UsageTemplate() string { + if c.usageTemplate != "" { + return c.usageTemplate + } + + if c.HasParent() { + return c.parent.UsageTemplate() + } + return `Usage:{{if .Runnable}} + {{.UseLine}}{{end}}{{if .HasAvailableSubCommands}} + {{.CommandPath}} [command]{{end}}{{if gt (len .Aliases) 0}} + +Aliases: + {{.NameAndAliases}}{{end}}{{if .HasExample}} + +Examples: +{{.Example}}{{end}}{{if .HasAvailableSubCommands}}{{$cmds := .Commands}}{{if eq (len .Groups) 0}} + +Available Commands:{{range $cmds}}{{if (or .IsAvailableCommand (eq .Name "help"))}} + {{rpad .Name .NamePadding }} {{.Short}}{{end}}{{end}}{{else}}{{range $group := .Groups}} + +{{.Title}}{{range $cmds}}{{if (and (eq .GroupID $group.ID) (or .IsAvailableCommand (eq .Name "help")))}} + {{rpad .Name .NamePadding }} {{.Short}}{{end}}{{end}}{{end}}{{if not .AllChildCommandsHaveGroup}} + +Additional Commands:{{range $cmds}}{{if (and (eq .GroupID "") (or .IsAvailableCommand (eq .Name "help")))}} + {{rpad .Name .NamePadding }} {{.Short}}{{end}}{{end}}{{end}}{{end}}{{end}}{{if .HasAvailableLocalFlags}} + +Flags: +{{.LocalFlags.FlagUsages | trimTrailingWhitespaces}}{{end}}{{if .HasAvailableInheritedFlags}} + +Global Flags: +{{.InheritedFlags.FlagUsages | trimTrailingWhitespaces}}{{end}}{{if .HasHelpSubCommands}} + +Additional help topics:{{range .Commands}}{{if .IsAdditionalHelpTopicCommand}} + {{rpad .CommandPath .CommandPathPadding}} {{.Short}}{{end}}{{end}}{{end}}{{if .HasAvailableSubCommands}} + +Use "{{.CommandPath}} [command] --help" for more information about a command.{{end}} +` +} + +// HelpTemplate return help template for the command. +func (c *Command) HelpTemplate() string { + if c.helpTemplate != "" { + return c.helpTemplate + } + + if c.HasParent() { + return c.parent.HelpTemplate() + } + return `{{with (or .Long .Short)}}{{. | trimTrailingWhitespaces}} + +{{end}}{{if or .Runnable .HasSubCommands}}{{.UsageString}}{{end}}` +} + +// VersionTemplate return version template for the command. +func (c *Command) VersionTemplate() string { + if c.versionTemplate != "" { + return c.versionTemplate + } + + if c.HasParent() { + return c.parent.VersionTemplate() + } + return `{{with .Name}}{{printf "%s " .}}{{end}}{{printf "version %s" .Version}} +` +} + +func hasNoOptDefVal(name string, fs *flag.FlagSet) bool { + flag := fs.Lookup(name) + if flag == nil { + return false + } + return flag.NoOptDefVal != "" +} + +func shortHasNoOptDefVal(name string, fs *flag.FlagSet) bool { + if len(name) == 0 { + return false + } + + flag := fs.ShorthandLookup(name[:1]) + if flag == nil { + return false + } + return flag.NoOptDefVal != "" +} + +func stripFlags(args []string, c *Command) []string { + if len(args) == 0 { + return args + } + c.mergePersistentFlags() + + commands := []string{} + flags := c.Flags() + +Loop: + for len(args) > 0 { + s := args[0] + args = args[1:] + switch { + case s == "--": + // "--" terminates the flags + break Loop + case strings.HasPrefix(s, "--") && !strings.Contains(s, "=") && !hasNoOptDefVal(s[2:], flags): + // If '--flag arg' then + // delete arg from args. + fallthrough // (do the same as below) + case strings.HasPrefix(s, "-") && !strings.Contains(s, "=") && len(s) == 2 && !shortHasNoOptDefVal(s[1:], flags): + // If '-f arg' then + // delete 'arg' from args or break the loop if len(args) <= 1. + if len(args) <= 1 { + break Loop + } else { + args = args[1:] + continue + } + case s != "" && !strings.HasPrefix(s, "-"): + commands = append(commands, s) + } + } + + return commands +} + +// argsMinusFirstX removes only the first x from args. Otherwise, commands that look like +// openshift admin policy add-role-to-user admin my-user, lose the admin argument (arg[4]). +// Special care needs to be taken not to remove a flag value. +func (c *Command) argsMinusFirstX(args []string, x string) []string { + if len(args) == 0 { + return args + } + c.mergePersistentFlags() + flags := c.Flags() + +Loop: + for pos := 0; pos < len(args); pos++ { + s := args[pos] + switch { + case s == "--": + // -- means we have reached the end of the parseable args. Break out of the loop now. + break Loop + case strings.HasPrefix(s, "--") && !strings.Contains(s, "=") && !hasNoOptDefVal(s[2:], flags): + fallthrough + case strings.HasPrefix(s, "-") && !strings.Contains(s, "=") && len(s) == 2 && !shortHasNoOptDefVal(s[1:], flags): + // This is a flag without a default value, and an equal sign is not used. Increment pos in order to skip + // over the next arg, because that is the value of this flag. + pos++ + continue + case !strings.HasPrefix(s, "-"): + // This is not a flag or a flag value. Check to see if it matches what we're looking for, and if so, + // return the args, excluding the one at this position. + if s == x { + ret := []string{} + ret = append(ret, args[:pos]...) + ret = append(ret, args[pos+1:]...) + return ret + } + } + } + return args +} + +func isFlagArg(arg string) bool { + return ((len(arg) >= 3 && arg[0:2] == "--") || + (len(arg) >= 2 && arg[0] == '-' && arg[1] != '-')) +} + +// Find the target command given the args and command tree +// Meant to be run on the highest node. Only searches down. +func (c *Command) Find(args []string) (*Command, []string, error) { + var innerfind func(*Command, []string) (*Command, []string) + + innerfind = func(c *Command, innerArgs []string) (*Command, []string) { + argsWOflags := stripFlags(innerArgs, c) + if len(argsWOflags) == 0 { + return c, innerArgs + } + nextSubCmd := argsWOflags[0] + + cmd := c.findNext(nextSubCmd) + if cmd != nil { + return innerfind(cmd, c.argsMinusFirstX(innerArgs, nextSubCmd)) + } + return c, innerArgs + } + + commandFound, a := innerfind(c, args) + if commandFound.Args == nil { + return commandFound, a, legacyArgs(commandFound, stripFlags(a, commandFound)) + } + return commandFound, a, nil +} + +func (c *Command) findSuggestions(arg string) string { + if c.DisableSuggestions { + return "" + } + if c.SuggestionsMinimumDistance <= 0 { + c.SuggestionsMinimumDistance = 2 + } + suggestionsString := "" + if suggestions := c.SuggestionsFor(arg); len(suggestions) > 0 { + suggestionsString += "\n\nDid you mean this?\n" + for _, s := range suggestions { + suggestionsString += fmt.Sprintf("\t%v\n", s) + } + } + return suggestionsString +} + +func (c *Command) findNext(next string) *Command { + matches := make([]*Command, 0) + for _, cmd := range c.commands { + if commandNameMatches(cmd.Name(), next) || cmd.HasAlias(next) { + cmd.commandCalledAs.name = next + return cmd + } + if EnablePrefixMatching && cmd.hasNameOrAliasPrefix(next) { + matches = append(matches, cmd) + } + } + + if len(matches) == 1 { + return matches[0] + } + + return nil +} + +// Traverse the command tree to find the command, and parse args for +// each parent. +func (c *Command) Traverse(args []string) (*Command, []string, error) { + flags := []string{} + inFlag := false + + for i, arg := range args { + switch { + // A long flag with a space separated value + case strings.HasPrefix(arg, "--") && !strings.Contains(arg, "="): + // TODO: this isn't quite right, we should really check ahead for 'true' or 'false' + inFlag = !hasNoOptDefVal(arg[2:], c.Flags()) + flags = append(flags, arg) + continue + // A short flag with a space separated value + case strings.HasPrefix(arg, "-") && !strings.Contains(arg, "=") && len(arg) == 2 && !shortHasNoOptDefVal(arg[1:], c.Flags()): + inFlag = true + flags = append(flags, arg) + continue + // The value for a flag + case inFlag: + inFlag = false + flags = append(flags, arg) + continue + // A flag without a value, or with an `=` separated value + case isFlagArg(arg): + flags = append(flags, arg) + continue + } + + cmd := c.findNext(arg) + if cmd == nil { + return c, args, nil + } + + if err := c.ParseFlags(flags); err != nil { + return nil, args, err + } + return cmd.Traverse(args[i+1:]) + } + return c, args, nil +} + +// SuggestionsFor provides suggestions for the typedName. +func (c *Command) SuggestionsFor(typedName string) []string { + suggestions := []string{} + for _, cmd := range c.commands { + if cmd.IsAvailableCommand() { + levenshteinDistance := ld(typedName, cmd.Name(), true) + suggestByLevenshtein := levenshteinDistance <= c.SuggestionsMinimumDistance + suggestByPrefix := strings.HasPrefix(strings.ToLower(cmd.Name()), strings.ToLower(typedName)) + if suggestByLevenshtein || suggestByPrefix { + suggestions = append(suggestions, cmd.Name()) + } + for _, explicitSuggestion := range cmd.SuggestFor { + if strings.EqualFold(typedName, explicitSuggestion) { + suggestions = append(suggestions, cmd.Name()) + } + } + } + } + return suggestions +} + +// VisitParents visits all parents of the command and invokes fn on each parent. +func (c *Command) VisitParents(fn func(*Command)) { + if c.HasParent() { + fn(c.Parent()) + c.Parent().VisitParents(fn) + } +} + +// Root finds root command. +func (c *Command) Root() *Command { + if c.HasParent() { + return c.Parent().Root() + } + return c +} + +// ArgsLenAtDash will return the length of c.Flags().Args at the moment +// when a -- was found during args parsing. +func (c *Command) ArgsLenAtDash() int { + return c.Flags().ArgsLenAtDash() +} + +func (c *Command) execute(a []string) (err error) { + if c == nil { + return fmt.Errorf("Called Execute() on a nil Command") + } + + if len(c.Deprecated) > 0 { + c.Printf("Command %q is deprecated, %s\n", c.Name(), c.Deprecated) + } + + // initialize help and version flag at the last point possible to allow for user + // overriding + c.InitDefaultHelpFlag() + c.InitDefaultVersionFlag() + + err = c.ParseFlags(a) + if err != nil { + return c.FlagErrorFunc()(c, err) + } + + // If help is called, regardless of other flags, return we want help. + // Also say we need help if the command isn't runnable. + helpVal, err := c.Flags().GetBool("help") + if err != nil { + // should be impossible to get here as we always declare a help + // flag in InitDefaultHelpFlag() + c.Println("\"help\" flag declared as non-bool. Please correct your code") + return err + } + + if helpVal { + return flag.ErrHelp + } + + // for back-compat, only add version flag behavior if version is defined + if c.Version != "" { + versionVal, err := c.Flags().GetBool("version") + if err != nil { + c.Println("\"version\" flag declared as non-bool. Please correct your code") + return err + } + if versionVal { + err := tmpl(c.OutOrStdout(), c.VersionTemplate(), c) + if err != nil { + c.Println(err) + } + return err + } + } + + if !c.Runnable() { + return flag.ErrHelp + } + + c.preRun() + + defer c.postRun() + + argWoFlags := c.Flags().Args() + if c.DisableFlagParsing { + argWoFlags = a + } + + if err := c.ValidateArgs(argWoFlags); err != nil { + return err + } + + for p := c; p != nil; p = p.Parent() { + if p.PersistentPreRunE != nil { + if err := p.PersistentPreRunE(c, argWoFlags); err != nil { + return err + } + break + } else if p.PersistentPreRun != nil { + p.PersistentPreRun(c, argWoFlags) + break + } + } + if c.PreRunE != nil { + if err := c.PreRunE(c, argWoFlags); err != nil { + return err + } + } else if c.PreRun != nil { + c.PreRun(c, argWoFlags) + } + + if err := c.ValidateRequiredFlags(); err != nil { + return err + } + if err := c.ValidateFlagGroups(); err != nil { + return err + } + + if c.RunE != nil { + if err := c.RunE(c, argWoFlags); err != nil { + return err + } + } else { + c.Run(c, argWoFlags) + } + if c.PostRunE != nil { + if err := c.PostRunE(c, argWoFlags); err != nil { + return err + } + } else if c.PostRun != nil { + c.PostRun(c, argWoFlags) + } + for p := c; p != nil; p = p.Parent() { + if p.PersistentPostRunE != nil { + if err := p.PersistentPostRunE(c, argWoFlags); err != nil { + return err + } + break + } else if p.PersistentPostRun != nil { + p.PersistentPostRun(c, argWoFlags) + break + } + } + + return nil +} + +func (c *Command) preRun() { + for _, x := range initializers { + x() + } +} + +func (c *Command) postRun() { + for _, x := range finalizers { + x() + } +} + +// ExecuteContext is the same as Execute(), but sets the ctx on the command. +// Retrieve ctx by calling cmd.Context() inside your *Run lifecycle or ValidArgs +// functions. +func (c *Command) ExecuteContext(ctx context.Context) error { + c.ctx = ctx + return c.Execute() +} + +// Execute uses the args (os.Args[1:] by default) +// and run through the command tree finding appropriate matches +// for commands and then corresponding flags. +func (c *Command) Execute() error { + _, err := c.ExecuteC() + return err +} + +// ExecuteContextC is the same as ExecuteC(), but sets the ctx on the command. +// Retrieve ctx by calling cmd.Context() inside your *Run lifecycle or ValidArgs +// functions. +func (c *Command) ExecuteContextC(ctx context.Context) (*Command, error) { + c.ctx = ctx + return c.ExecuteC() +} + +// ExecuteC executes the command. +func (c *Command) ExecuteC() (cmd *Command, err error) { + if c.ctx == nil { + c.ctx = context.Background() + } + + // Regardless of what command execute is called on, run on Root only + if c.HasParent() { + return c.Root().ExecuteC() + } + + // windows hook + if preExecHookFn != nil { + preExecHookFn(c) + } + + // initialize help at the last point to allow for user overriding + c.InitDefaultHelpCmd() + // initialize completion at the last point to allow for user overriding + c.InitDefaultCompletionCmd() + + // Now that all commands have been created, let's make sure all groups + // are properly created also + c.checkCommandGroups() + + args := c.args + + // Workaround FAIL with "go test -v" or "cobra.test -test.v", see #155 + if c.args == nil && filepath.Base(os.Args[0]) != "cobra.test" { + args = os.Args[1:] + } + + // initialize the hidden command to be used for shell completion + c.initCompleteCmd(args) + + var flags []string + if c.TraverseChildren { + cmd, flags, err = c.Traverse(args) + } else { + cmd, flags, err = c.Find(args) + } + if err != nil { + // If found parse to a subcommand and then failed, talk about the subcommand + if cmd != nil { + c = cmd + } + if !c.SilenceErrors { + c.PrintErrln("Error:", err.Error()) + c.PrintErrf("Run '%v --help' for usage.\n", c.CommandPath()) + } + return c, err + } + + cmd.commandCalledAs.called = true + if cmd.commandCalledAs.name == "" { + cmd.commandCalledAs.name = cmd.Name() + } + + // We have to pass global context to children command + // if context is present on the parent command. + if cmd.ctx == nil { + cmd.ctx = c.ctx + } + + err = cmd.execute(flags) + if err != nil { + // Always show help if requested, even if SilenceErrors is in + // effect + if errors.Is(err, flag.ErrHelp) { + cmd.HelpFunc()(cmd, args) + return cmd, nil + } + + // If root command has SilenceErrors flagged, + // all subcommands should respect it + if !cmd.SilenceErrors && !c.SilenceErrors { + c.PrintErrln("Error:", err.Error()) + } + + // If root command has SilenceUsage flagged, + // all subcommands should respect it + if !cmd.SilenceUsage && !c.SilenceUsage { + c.Println(cmd.UsageString()) + } + } + return cmd, err +} + +func (c *Command) ValidateArgs(args []string) error { + if c.Args == nil { + return ArbitraryArgs(c, args) + } + return c.Args(c, args) +} + +// ValidateRequiredFlags validates all required flags are present and returns an error otherwise +func (c *Command) ValidateRequiredFlags() error { + if c.DisableFlagParsing { + return nil + } + + flags := c.Flags() + missingFlagNames := []string{} + flags.VisitAll(func(pflag *flag.Flag) { + requiredAnnotation, found := pflag.Annotations[BashCompOneRequiredFlag] + if !found { + return + } + if (requiredAnnotation[0] == "true") && !pflag.Changed { + missingFlagNames = append(missingFlagNames, pflag.Name) + } + }) + + if len(missingFlagNames) > 0 { + return fmt.Errorf(`required flag(s) "%s" not set`, strings.Join(missingFlagNames, `", "`)) + } + return nil +} + +// checkCommandGroups checks if a command has been added to a group that does not exists. +// If so, we panic because it indicates a coding error that should be corrected. +func (c *Command) checkCommandGroups() { + for _, sub := range c.commands { + // if Group is not defined let the developer know right away + if sub.GroupID != "" && !c.ContainsGroup(sub.GroupID) { + panic(fmt.Sprintf("group id '%s' is not defined for subcommand '%s'", sub.GroupID, sub.CommandPath())) + } + + sub.checkCommandGroups() + } +} + +// InitDefaultHelpFlag adds default help flag to c. +// It is called automatically by executing the c or by calling help and usage. +// If c already has help flag, it will do nothing. +func (c *Command) InitDefaultHelpFlag() { + c.mergePersistentFlags() + if c.Flags().Lookup("help") == nil { + usage := "help for " + if c.Name() == "" { + usage += "this command" + } else { + usage += c.Name() + } + c.Flags().BoolP("help", "h", false, usage) + _ = c.Flags().SetAnnotation("help", FlagSetByCobraAnnotation, []string{"true"}) + } +} + +// InitDefaultVersionFlag adds default version flag to c. +// It is called automatically by executing the c. +// If c already has a version flag, it will do nothing. +// If c.Version is empty, it will do nothing. +func (c *Command) InitDefaultVersionFlag() { + if c.Version == "" { + return + } + + c.mergePersistentFlags() + if c.Flags().Lookup("version") == nil { + usage := "version for " + if c.Name() == "" { + usage += "this command" + } else { + usage += c.Name() + } + if c.Flags().ShorthandLookup("v") == nil { + c.Flags().BoolP("version", "v", false, usage) + } else { + c.Flags().Bool("version", false, usage) + } + _ = c.Flags().SetAnnotation("version", FlagSetByCobraAnnotation, []string{"true"}) + } +} + +// InitDefaultHelpCmd adds default help command to c. +// It is called automatically by executing the c or by calling help and usage. +// If c already has help command or c has no subcommands, it will do nothing. +func (c *Command) InitDefaultHelpCmd() { + if !c.HasSubCommands() { + return + } + + if c.helpCommand == nil { + c.helpCommand = &Command{ + Use: "help [command]", + Short: "Help about any command", + Long: `Help provides help for any command in the application. +Simply type ` + c.Name() + ` help [path to command] for full details.`, + ValidArgsFunction: func(c *Command, args []string, toComplete string) ([]string, ShellCompDirective) { + var completions []string + cmd, _, e := c.Root().Find(args) + if e != nil { + return nil, ShellCompDirectiveNoFileComp + } + if cmd == nil { + // Root help command. + cmd = c.Root() + } + for _, subCmd := range cmd.Commands() { + if subCmd.IsAvailableCommand() || subCmd == cmd.helpCommand { + if strings.HasPrefix(subCmd.Name(), toComplete) { + completions = append(completions, fmt.Sprintf("%s\t%s", subCmd.Name(), subCmd.Short)) + } + } + } + return completions, ShellCompDirectiveNoFileComp + }, + Run: func(c *Command, args []string) { + cmd, _, e := c.Root().Find(args) + if cmd == nil || e != nil { + c.Printf("Unknown help topic %#q\n", args) + CheckErr(c.Root().Usage()) + } else { + cmd.InitDefaultHelpFlag() // make possible 'help' flag to be shown + cmd.InitDefaultVersionFlag() // make possible 'version' flag to be shown + CheckErr(cmd.Help()) + } + }, + GroupID: c.helpCommandGroupID, + } + } + c.RemoveCommand(c.helpCommand) + c.AddCommand(c.helpCommand) +} + +// ResetCommands delete parent, subcommand and help command from c. +func (c *Command) ResetCommands() { + c.parent = nil + c.commands = nil + c.helpCommand = nil + c.parentsPflags = nil +} + +// Sorts commands by their names. +type commandSorterByName []*Command + +func (c commandSorterByName) Len() int { return len(c) } +func (c commandSorterByName) Swap(i, j int) { c[i], c[j] = c[j], c[i] } +func (c commandSorterByName) Less(i, j int) bool { return c[i].Name() < c[j].Name() } + +// Commands returns a sorted slice of child commands. +func (c *Command) Commands() []*Command { + // do not sort commands if it already sorted or sorting was disabled + if EnableCommandSorting && !c.commandsAreSorted { + sort.Sort(commandSorterByName(c.commands)) + c.commandsAreSorted = true + } + return c.commands +} + +// AddCommand adds one or more commands to this parent command. +func (c *Command) AddCommand(cmds ...*Command) { + for i, x := range cmds { + if cmds[i] == c { + panic("Command can't be a child of itself") + } + cmds[i].parent = c + // update max lengths + usageLen := len(x.Use) + if usageLen > c.commandsMaxUseLen { + c.commandsMaxUseLen = usageLen + } + commandPathLen := len(x.CommandPath()) + if commandPathLen > c.commandsMaxCommandPathLen { + c.commandsMaxCommandPathLen = commandPathLen + } + nameLen := len(x.Name()) + if nameLen > c.commandsMaxNameLen { + c.commandsMaxNameLen = nameLen + } + // If global normalization function exists, update all children + if c.globNormFunc != nil { + x.SetGlobalNormalizationFunc(c.globNormFunc) + } + c.commands = append(c.commands, x) + c.commandsAreSorted = false + } +} + +// Groups returns a slice of child command groups. +func (c *Command) Groups() []*Group { + return c.commandgroups +} + +// AllChildCommandsHaveGroup returns if all subcommands are assigned to a group +func (c *Command) AllChildCommandsHaveGroup() bool { + for _, sub := range c.commands { + if (sub.IsAvailableCommand() || sub == c.helpCommand) && sub.GroupID == "" { + return false + } + } + return true +} + +// ContainsGroup return if groupID exists in the list of command groups. +func (c *Command) ContainsGroup(groupID string) bool { + for _, x := range c.commandgroups { + if x.ID == groupID { + return true + } + } + return false +} + +// AddGroup adds one or more command groups to this parent command. +func (c *Command) AddGroup(groups ...*Group) { + c.commandgroups = append(c.commandgroups, groups...) +} + +// RemoveCommand removes one or more commands from a parent command. +func (c *Command) RemoveCommand(cmds ...*Command) { + commands := []*Command{} +main: + for _, command := range c.commands { + for _, cmd := range cmds { + if command == cmd { + command.parent = nil + continue main + } + } + commands = append(commands, command) + } + c.commands = commands + // recompute all lengths + c.commandsMaxUseLen = 0 + c.commandsMaxCommandPathLen = 0 + c.commandsMaxNameLen = 0 + for _, command := range c.commands { + usageLen := len(command.Use) + if usageLen > c.commandsMaxUseLen { + c.commandsMaxUseLen = usageLen + } + commandPathLen := len(command.CommandPath()) + if commandPathLen > c.commandsMaxCommandPathLen { + c.commandsMaxCommandPathLen = commandPathLen + } + nameLen := len(command.Name()) + if nameLen > c.commandsMaxNameLen { + c.commandsMaxNameLen = nameLen + } + } +} + +// Print is a convenience method to Print to the defined output, fallback to Stderr if not set. +func (c *Command) Print(i ...interface{}) { + fmt.Fprint(c.OutOrStderr(), i...) +} + +// Println is a convenience method to Println to the defined output, fallback to Stderr if not set. +func (c *Command) Println(i ...interface{}) { + c.Print(fmt.Sprintln(i...)) +} + +// Printf is a convenience method to Printf to the defined output, fallback to Stderr if not set. +func (c *Command) Printf(format string, i ...interface{}) { + c.Print(fmt.Sprintf(format, i...)) +} + +// PrintErr is a convenience method to Print to the defined Err output, fallback to Stderr if not set. +func (c *Command) PrintErr(i ...interface{}) { + fmt.Fprint(c.ErrOrStderr(), i...) +} + +// PrintErrln is a convenience method to Println to the defined Err output, fallback to Stderr if not set. +func (c *Command) PrintErrln(i ...interface{}) { + c.PrintErr(fmt.Sprintln(i...)) +} + +// PrintErrf is a convenience method to Printf to the defined Err output, fallback to Stderr if not set. +func (c *Command) PrintErrf(format string, i ...interface{}) { + c.PrintErr(fmt.Sprintf(format, i...)) +} + +// CommandPath returns the full path to this command. +func (c *Command) CommandPath() string { + if c.HasParent() { + return c.Parent().CommandPath() + " " + c.Name() + } + return c.Name() +} + +// UseLine puts out the full usage for a given command (including parents). +func (c *Command) UseLine() string { + var useline string + if c.HasParent() { + useline = c.parent.CommandPath() + " " + c.Use + } else { + useline = c.Use + } + if c.DisableFlagsInUseLine { + return useline + } + if c.HasAvailableFlags() && !strings.Contains(useline, "[flags]") { + useline += " [flags]" + } + return useline +} + +// DebugFlags used to determine which flags have been assigned to which commands +// and which persist. +func (c *Command) DebugFlags() { + c.Println("DebugFlags called on", c.Name()) + var debugflags func(*Command) + + debugflags = func(x *Command) { + if x.HasFlags() || x.HasPersistentFlags() { + c.Println(x.Name()) + } + if x.HasFlags() { + x.flags.VisitAll(func(f *flag.Flag) { + if x.HasPersistentFlags() && x.persistentFlag(f.Name) != nil { + c.Println(" -"+f.Shorthand+",", "--"+f.Name, "["+f.DefValue+"]", "", f.Value, " [LP]") + } else { + c.Println(" -"+f.Shorthand+",", "--"+f.Name, "["+f.DefValue+"]", "", f.Value, " [L]") + } + }) + } + if x.HasPersistentFlags() { + x.pflags.VisitAll(func(f *flag.Flag) { + if x.HasFlags() { + if x.flags.Lookup(f.Name) == nil { + c.Println(" -"+f.Shorthand+",", "--"+f.Name, "["+f.DefValue+"]", "", f.Value, " [P]") + } + } else { + c.Println(" -"+f.Shorthand+",", "--"+f.Name, "["+f.DefValue+"]", "", f.Value, " [P]") + } + }) + } + c.Println(x.flagErrorBuf) + if x.HasSubCommands() { + for _, y := range x.commands { + debugflags(y) + } + } + } + + debugflags(c) +} + +// Name returns the command's name: the first word in the use line. +func (c *Command) Name() string { + name := c.Use + i := strings.Index(name, " ") + if i >= 0 { + name = name[:i] + } + return name +} + +// HasAlias determines if a given string is an alias of the command. +func (c *Command) HasAlias(s string) bool { + for _, a := range c.Aliases { + if commandNameMatches(a, s) { + return true + } + } + return false +} + +// CalledAs returns the command name or alias that was used to invoke +// this command or an empty string if the command has not been called. +func (c *Command) CalledAs() string { + if c.commandCalledAs.called { + return c.commandCalledAs.name + } + return "" +} + +// hasNameOrAliasPrefix returns true if the Name or any of aliases start +// with prefix +func (c *Command) hasNameOrAliasPrefix(prefix string) bool { + if strings.HasPrefix(c.Name(), prefix) { + c.commandCalledAs.name = c.Name() + return true + } + for _, alias := range c.Aliases { + if strings.HasPrefix(alias, prefix) { + c.commandCalledAs.name = alias + return true + } + } + return false +} + +// NameAndAliases returns a list of the command name and all aliases +func (c *Command) NameAndAliases() string { + return strings.Join(append([]string{c.Name()}, c.Aliases...), ", ") +} + +// HasExample determines if the command has example. +func (c *Command) HasExample() bool { + return len(c.Example) > 0 +} + +// Runnable determines if the command is itself runnable. +func (c *Command) Runnable() bool { + return c.Run != nil || c.RunE != nil +} + +// HasSubCommands determines if the command has children commands. +func (c *Command) HasSubCommands() bool { + return len(c.commands) > 0 +} + +// IsAvailableCommand determines if a command is available as a non-help command +// (this includes all non deprecated/hidden commands). +func (c *Command) IsAvailableCommand() bool { + if len(c.Deprecated) != 0 || c.Hidden { + return false + } + + if c.HasParent() && c.Parent().helpCommand == c { + return false + } + + if c.Runnable() || c.HasAvailableSubCommands() { + return true + } + + return false +} + +// IsAdditionalHelpTopicCommand determines if a command is an additional +// help topic command; additional help topic command is determined by the +// fact that it is NOT runnable/hidden/deprecated, and has no sub commands that +// are runnable/hidden/deprecated. +// Concrete example: https://github.com/spf13/cobra/issues/393#issuecomment-282741924. +func (c *Command) IsAdditionalHelpTopicCommand() bool { + // if a command is runnable, deprecated, or hidden it is not a 'help' command + if c.Runnable() || len(c.Deprecated) != 0 || c.Hidden { + return false + } + + // if any non-help sub commands are found, the command is not a 'help' command + for _, sub := range c.commands { + if !sub.IsAdditionalHelpTopicCommand() { + return false + } + } + + // the command either has no sub commands, or no non-help sub commands + return true +} + +// HasHelpSubCommands determines if a command has any available 'help' sub commands +// that need to be shown in the usage/help default template under 'additional help +// topics'. +func (c *Command) HasHelpSubCommands() bool { + // return true on the first found available 'help' sub command + for _, sub := range c.commands { + if sub.IsAdditionalHelpTopicCommand() { + return true + } + } + + // the command either has no sub commands, or no available 'help' sub commands + return false +} + +// HasAvailableSubCommands determines if a command has available sub commands that +// need to be shown in the usage/help default template under 'available commands'. +func (c *Command) HasAvailableSubCommands() bool { + // return true on the first found available (non deprecated/help/hidden) + // sub command + for _, sub := range c.commands { + if sub.IsAvailableCommand() { + return true + } + } + + // the command either has no sub commands, or no available (non deprecated/help/hidden) + // sub commands + return false +} + +// HasParent determines if the command is a child command. +func (c *Command) HasParent() bool { + return c.parent != nil +} + +// GlobalNormalizationFunc returns the global normalization function or nil if it doesn't exist. +func (c *Command) GlobalNormalizationFunc() func(f *flag.FlagSet, name string) flag.NormalizedName { + return c.globNormFunc +} + +// Flags returns the complete FlagSet that applies +// to this command (local and persistent declared here and by all parents). +func (c *Command) Flags() *flag.FlagSet { + if c.flags == nil { + c.flags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) + if c.flagErrorBuf == nil { + c.flagErrorBuf = new(bytes.Buffer) + } + c.flags.SetOutput(c.flagErrorBuf) + } + + return c.flags +} + +// LocalNonPersistentFlags are flags specific to this command which will NOT persist to subcommands. +func (c *Command) LocalNonPersistentFlags() *flag.FlagSet { + persistentFlags := c.PersistentFlags() + + out := flag.NewFlagSet(c.Name(), flag.ContinueOnError) + c.LocalFlags().VisitAll(func(f *flag.Flag) { + if persistentFlags.Lookup(f.Name) == nil { + out.AddFlag(f) + } + }) + return out +} + +// LocalFlags returns the local FlagSet specifically set in the current command. +func (c *Command) LocalFlags() *flag.FlagSet { + c.mergePersistentFlags() + + if c.lflags == nil { + c.lflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) + if c.flagErrorBuf == nil { + c.flagErrorBuf = new(bytes.Buffer) + } + c.lflags.SetOutput(c.flagErrorBuf) + } + c.lflags.SortFlags = c.Flags().SortFlags + if c.globNormFunc != nil { + c.lflags.SetNormalizeFunc(c.globNormFunc) + } + + addToLocal := func(f *flag.Flag) { + // Add the flag if it is not a parent PFlag, or it shadows a parent PFlag + if c.lflags.Lookup(f.Name) == nil && f != c.parentsPflags.Lookup(f.Name) { + c.lflags.AddFlag(f) + } + } + c.Flags().VisitAll(addToLocal) + c.PersistentFlags().VisitAll(addToLocal) + return c.lflags +} + +// InheritedFlags returns all flags which were inherited from parent commands. +func (c *Command) InheritedFlags() *flag.FlagSet { + c.mergePersistentFlags() + + if c.iflags == nil { + c.iflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) + if c.flagErrorBuf == nil { + c.flagErrorBuf = new(bytes.Buffer) + } + c.iflags.SetOutput(c.flagErrorBuf) + } + + local := c.LocalFlags() + if c.globNormFunc != nil { + c.iflags.SetNormalizeFunc(c.globNormFunc) + } + + c.parentsPflags.VisitAll(func(f *flag.Flag) { + if c.iflags.Lookup(f.Name) == nil && local.Lookup(f.Name) == nil { + c.iflags.AddFlag(f) + } + }) + return c.iflags +} + +// NonInheritedFlags returns all flags which were not inherited from parent commands. +func (c *Command) NonInheritedFlags() *flag.FlagSet { + return c.LocalFlags() +} + +// PersistentFlags returns the persistent FlagSet specifically set in the current command. +func (c *Command) PersistentFlags() *flag.FlagSet { + if c.pflags == nil { + c.pflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) + if c.flagErrorBuf == nil { + c.flagErrorBuf = new(bytes.Buffer) + } + c.pflags.SetOutput(c.flagErrorBuf) + } + return c.pflags +} + +// ResetFlags deletes all flags from command. +func (c *Command) ResetFlags() { + c.flagErrorBuf = new(bytes.Buffer) + c.flagErrorBuf.Reset() + c.flags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) + c.flags.SetOutput(c.flagErrorBuf) + c.pflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) + c.pflags.SetOutput(c.flagErrorBuf) + + c.lflags = nil + c.iflags = nil + c.parentsPflags = nil +} + +// HasFlags checks if the command contains any flags (local plus persistent from the entire structure). +func (c *Command) HasFlags() bool { + return c.Flags().HasFlags() +} + +// HasPersistentFlags checks if the command contains persistent flags. +func (c *Command) HasPersistentFlags() bool { + return c.PersistentFlags().HasFlags() +} + +// HasLocalFlags checks if the command has flags specifically declared locally. +func (c *Command) HasLocalFlags() bool { + return c.LocalFlags().HasFlags() +} + +// HasInheritedFlags checks if the command has flags inherited from its parent command. +func (c *Command) HasInheritedFlags() bool { + return c.InheritedFlags().HasFlags() +} + +// HasAvailableFlags checks if the command contains any flags (local plus persistent from the entire +// structure) which are not hidden or deprecated. +func (c *Command) HasAvailableFlags() bool { + return c.Flags().HasAvailableFlags() +} + +// HasAvailablePersistentFlags checks if the command contains persistent flags which are not hidden or deprecated. +func (c *Command) HasAvailablePersistentFlags() bool { + return c.PersistentFlags().HasAvailableFlags() +} + +// HasAvailableLocalFlags checks if the command has flags specifically declared locally which are not hidden +// or deprecated. +func (c *Command) HasAvailableLocalFlags() bool { + return c.LocalFlags().HasAvailableFlags() +} + +// HasAvailableInheritedFlags checks if the command has flags inherited from its parent command which are +// not hidden or deprecated. +func (c *Command) HasAvailableInheritedFlags() bool { + return c.InheritedFlags().HasAvailableFlags() +} + +// Flag climbs up the command tree looking for matching flag. +func (c *Command) Flag(name string) (flag *flag.Flag) { + flag = c.Flags().Lookup(name) + + if flag == nil { + flag = c.persistentFlag(name) + } + + return +} + +// Recursively find matching persistent flag. +func (c *Command) persistentFlag(name string) (flag *flag.Flag) { + if c.HasPersistentFlags() { + flag = c.PersistentFlags().Lookup(name) + } + + if flag == nil { + c.updateParentsPflags() + flag = c.parentsPflags.Lookup(name) + } + return +} + +// ParseFlags parses persistent flag tree and local flags. +func (c *Command) ParseFlags(args []string) error { + if c.DisableFlagParsing { + return nil + } + + if c.flagErrorBuf == nil { + c.flagErrorBuf = new(bytes.Buffer) + } + beforeErrorBufLen := c.flagErrorBuf.Len() + c.mergePersistentFlags() + + // do it here after merging all flags and just before parse + c.Flags().ParseErrorsWhitelist = flag.ParseErrorsWhitelist(c.FParseErrWhitelist) + + err := c.Flags().Parse(args) + // Print warnings if they occurred (e.g. deprecated flag messages). + if c.flagErrorBuf.Len()-beforeErrorBufLen > 0 && err == nil { + c.Print(c.flagErrorBuf.String()) + } + + return err +} + +// Parent returns a commands parent command. +func (c *Command) Parent() *Command { + return c.parent +} + +// mergePersistentFlags merges c.PersistentFlags() to c.Flags() +// and adds missing persistent flags of all parents. +func (c *Command) mergePersistentFlags() { + c.updateParentsPflags() + c.Flags().AddFlagSet(c.PersistentFlags()) + c.Flags().AddFlagSet(c.parentsPflags) +} + +// updateParentsPflags updates c.parentsPflags by adding +// new persistent flags of all parents. +// If c.parentsPflags == nil, it makes new. +func (c *Command) updateParentsPflags() { + if c.parentsPflags == nil { + c.parentsPflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) + c.parentsPflags.SetOutput(c.flagErrorBuf) + c.parentsPflags.SortFlags = false + } + + if c.globNormFunc != nil { + c.parentsPflags.SetNormalizeFunc(c.globNormFunc) + } + + c.Root().PersistentFlags().AddFlagSet(flag.CommandLine) + + c.VisitParents(func(parent *Command) { + c.parentsPflags.AddFlagSet(parent.PersistentFlags()) + }) +} + +// commandNameMatches checks if two command names are equal +// taking into account case sensitivity according to +// EnableCaseInsensitive global configuration. +func commandNameMatches(s string, t string) bool { + if EnableCaseInsensitive { + return strings.EqualFold(s, t) + } + + return s == t +} diff --git a/vendor/github.com/spf13/cobra/command_notwin.go b/vendor/github.com/spf13/cobra/command_notwin.go new file mode 100644 index 0000000000..307f0c127f --- /dev/null +++ b/vendor/github.com/spf13/cobra/command_notwin.go @@ -0,0 +1,20 @@ +// Copyright 2013-2023 The Cobra Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !windows +// +build !windows + +package cobra + +var preExecHookFn func(*Command) diff --git a/vendor/github.com/spf13/cobra/command_win.go b/vendor/github.com/spf13/cobra/command_win.go new file mode 100644 index 0000000000..adbef395c2 --- /dev/null +++ b/vendor/github.com/spf13/cobra/command_win.go @@ -0,0 +1,41 @@ +// Copyright 2013-2023 The Cobra Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build windows +// +build windows + +package cobra + +import ( + "fmt" + "os" + "time" + + "github.com/inconshreveable/mousetrap" +) + +var preExecHookFn = preExecHook + +func preExecHook(c *Command) { + if MousetrapHelpText != "" && mousetrap.StartedByExplorer() { + c.Print(MousetrapHelpText) + if MousetrapDisplayDuration > 0 { + time.Sleep(MousetrapDisplayDuration) + } else { + c.Println("Press return to continue...") + fmt.Scanln() + } + os.Exit(1) + } +} diff --git a/vendor/github.com/spf13/cobra/completions.go b/vendor/github.com/spf13/cobra/completions.go new file mode 100644 index 0000000000..ee38c4d0b8 --- /dev/null +++ b/vendor/github.com/spf13/cobra/completions.go @@ -0,0 +1,878 @@ +// Copyright 2013-2023 The Cobra Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cobra + +import ( + "fmt" + "os" + "strings" + "sync" + + "github.com/spf13/pflag" +) + +const ( + // ShellCompRequestCmd is the name of the hidden command that is used to request + // completion results from the program. It is used by the shell completion scripts. + ShellCompRequestCmd = "__complete" + // ShellCompNoDescRequestCmd is the name of the hidden command that is used to request + // completion results without their description. It is used by the shell completion scripts. + ShellCompNoDescRequestCmd = "__completeNoDesc" +) + +// Global map of flag completion functions. Make sure to use flagCompletionMutex before you try to read and write from it. +var flagCompletionFunctions = map[*pflag.Flag]func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective){} + +// lock for reading and writing from flagCompletionFunctions +var flagCompletionMutex = &sync.RWMutex{} + +// ShellCompDirective is a bit map representing the different behaviors the shell +// can be instructed to have once completions have been provided. +type ShellCompDirective int + +type flagCompError struct { + subCommand string + flagName string +} + +func (e *flagCompError) Error() string { + return "Subcommand '" + e.subCommand + "' does not support flag '" + e.flagName + "'" +} + +const ( + // ShellCompDirectiveError indicates an error occurred and completions should be ignored. + ShellCompDirectiveError ShellCompDirective = 1 << iota + + // ShellCompDirectiveNoSpace indicates that the shell should not add a space + // after the completion even if there is a single completion provided. + ShellCompDirectiveNoSpace + + // ShellCompDirectiveNoFileComp indicates that the shell should not provide + // file completion even when no completion is provided. + ShellCompDirectiveNoFileComp + + // ShellCompDirectiveFilterFileExt indicates that the provided completions + // should be used as file extension filters. + // For flags, using Command.MarkFlagFilename() and Command.MarkPersistentFlagFilename() + // is a shortcut to using this directive explicitly. The BashCompFilenameExt + // annotation can also be used to obtain the same behavior for flags. + ShellCompDirectiveFilterFileExt + + // ShellCompDirectiveFilterDirs indicates that only directory names should + // be provided in file completion. To request directory names within another + // directory, the returned completions should specify the directory within + // which to search. The BashCompSubdirsInDir annotation can be used to + // obtain the same behavior but only for flags. + ShellCompDirectiveFilterDirs + + // ShellCompDirectiveKeepOrder indicates that the shell should preserve the order + // in which the completions are provided + ShellCompDirectiveKeepOrder + + // =========================================================================== + + // All directives using iota should be above this one. + // For internal use. + shellCompDirectiveMaxValue + + // ShellCompDirectiveDefault indicates to let the shell perform its default + // behavior after completions have been provided. + // This one must be last to avoid messing up the iota count. + ShellCompDirectiveDefault ShellCompDirective = 0 +) + +const ( + // Constants for the completion command + compCmdName = "completion" + compCmdNoDescFlagName = "no-descriptions" + compCmdNoDescFlagDesc = "disable completion descriptions" + compCmdNoDescFlagDefault = false +) + +// CompletionOptions are the options to control shell completion +type CompletionOptions struct { + // DisableDefaultCmd prevents Cobra from creating a default 'completion' command + DisableDefaultCmd bool + // DisableNoDescFlag prevents Cobra from creating the '--no-descriptions' flag + // for shells that support completion descriptions + DisableNoDescFlag bool + // DisableDescriptions turns off all completion descriptions for shells + // that support them + DisableDescriptions bool + // HiddenDefaultCmd makes the default 'completion' command hidden + HiddenDefaultCmd bool +} + +// NoFileCompletions can be used to disable file completion for commands that should +// not trigger file completions. +func NoFileCompletions(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) { + return nil, ShellCompDirectiveNoFileComp +} + +// FixedCompletions can be used to create a completion function which always +// returns the same results. +func FixedCompletions(choices []string, directive ShellCompDirective) func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) { + return func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) { + return choices, directive + } +} + +// RegisterFlagCompletionFunc should be called to register a function to provide completion for a flag. +func (c *Command) RegisterFlagCompletionFunc(flagName string, f func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective)) error { + flag := c.Flag(flagName) + if flag == nil { + return fmt.Errorf("RegisterFlagCompletionFunc: flag '%s' does not exist", flagName) + } + flagCompletionMutex.Lock() + defer flagCompletionMutex.Unlock() + + if _, exists := flagCompletionFunctions[flag]; exists { + return fmt.Errorf("RegisterFlagCompletionFunc: flag '%s' already registered", flagName) + } + flagCompletionFunctions[flag] = f + return nil +} + +// Returns a string listing the different directive enabled in the specified parameter +func (d ShellCompDirective) string() string { + var directives []string + if d&ShellCompDirectiveError != 0 { + directives = append(directives, "ShellCompDirectiveError") + } + if d&ShellCompDirectiveNoSpace != 0 { + directives = append(directives, "ShellCompDirectiveNoSpace") + } + if d&ShellCompDirectiveNoFileComp != 0 { + directives = append(directives, "ShellCompDirectiveNoFileComp") + } + if d&ShellCompDirectiveFilterFileExt != 0 { + directives = append(directives, "ShellCompDirectiveFilterFileExt") + } + if d&ShellCompDirectiveFilterDirs != 0 { + directives = append(directives, "ShellCompDirectiveFilterDirs") + } + if d&ShellCompDirectiveKeepOrder != 0 { + directives = append(directives, "ShellCompDirectiveKeepOrder") + } + if len(directives) == 0 { + directives = append(directives, "ShellCompDirectiveDefault") + } + + if d >= shellCompDirectiveMaxValue { + return fmt.Sprintf("ERROR: unexpected ShellCompDirective value: %d", d) + } + return strings.Join(directives, ", ") +} + +// initCompleteCmd adds a special hidden command that can be used to request custom completions. +func (c *Command) initCompleteCmd(args []string) { + completeCmd := &Command{ + Use: fmt.Sprintf("%s [command-line]", ShellCompRequestCmd), + Aliases: []string{ShellCompNoDescRequestCmd}, + DisableFlagsInUseLine: true, + Hidden: true, + DisableFlagParsing: true, + Args: MinimumNArgs(1), + Short: "Request shell completion choices for the specified command-line", + Long: fmt.Sprintf("%[2]s is a special command that is used by the shell completion logic\n%[1]s", + "to request completion choices for the specified command-line.", ShellCompRequestCmd), + Run: func(cmd *Command, args []string) { + finalCmd, completions, directive, err := cmd.getCompletions(args) + if err != nil { + CompErrorln(err.Error()) + // Keep going for multiple reasons: + // 1- There could be some valid completions even though there was an error + // 2- Even without completions, we need to print the directive + } + + noDescriptions := (cmd.CalledAs() == ShellCompNoDescRequestCmd) + for _, comp := range completions { + if GetActiveHelpConfig(finalCmd) == activeHelpGlobalDisable { + // Remove all activeHelp entries in this case + if strings.HasPrefix(comp, activeHelpMarker) { + continue + } + } + if noDescriptions { + // Remove any description that may be included following a tab character. + comp = strings.Split(comp, "\t")[0] + } + + // Make sure we only write the first line to the output. + // This is needed if a description contains a linebreak. + // Otherwise the shell scripts will interpret the other lines as new flags + // and could therefore provide a wrong completion. + comp = strings.Split(comp, "\n")[0] + + // Finally trim the completion. This is especially important to get rid + // of a trailing tab when there are no description following it. + // For example, a sub-command without a description should not be completed + // with a tab at the end (or else zsh will show a -- following it + // although there is no description). + comp = strings.TrimSpace(comp) + + // Print each possible completion to stdout for the completion script to consume. + fmt.Fprintln(finalCmd.OutOrStdout(), comp) + } + + // As the last printout, print the completion directive for the completion script to parse. + // The directive integer must be that last character following a single colon (:). + // The completion script expects : + fmt.Fprintf(finalCmd.OutOrStdout(), ":%d\n", directive) + + // Print some helpful info to stderr for the user to understand. + // Output from stderr must be ignored by the completion script. + fmt.Fprintf(finalCmd.ErrOrStderr(), "Completion ended with directive: %s\n", directive.string()) + }, + } + c.AddCommand(completeCmd) + subCmd, _, err := c.Find(args) + if err != nil || subCmd.Name() != ShellCompRequestCmd { + // Only create this special command if it is actually being called. + // This reduces possible side-effects of creating such a command; + // for example, having this command would cause problems to a + // cobra program that only consists of the root command, since this + // command would cause the root command to suddenly have a subcommand. + c.RemoveCommand(completeCmd) + } +} + +func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDirective, error) { + // The last argument, which is not completely typed by the user, + // should not be part of the list of arguments + toComplete := args[len(args)-1] + trimmedArgs := args[:len(args)-1] + + var finalCmd *Command + var finalArgs []string + var err error + // Find the real command for which completion must be performed + // check if we need to traverse here to parse local flags on parent commands + if c.Root().TraverseChildren { + finalCmd, finalArgs, err = c.Root().Traverse(trimmedArgs) + } else { + // For Root commands that don't specify any value for their Args fields, when we call + // Find(), if those Root commands don't have any sub-commands, they will accept arguments. + // However, because we have added the __complete sub-command in the current code path, the + // call to Find() -> legacyArgs() will return an error if there are any arguments. + // To avoid this, we first remove the __complete command to get back to having no sub-commands. + rootCmd := c.Root() + if len(rootCmd.Commands()) == 1 { + rootCmd.RemoveCommand(c) + } + + finalCmd, finalArgs, err = rootCmd.Find(trimmedArgs) + } + if err != nil { + // Unable to find the real command. E.g., someInvalidCmd + return c, []string{}, ShellCompDirectiveDefault, fmt.Errorf("Unable to find a command for arguments: %v", trimmedArgs) + } + finalCmd.ctx = c.ctx + + // These flags are normally added when `execute()` is called on `finalCmd`, + // however, when doing completion, we don't call `finalCmd.execute()`. + // Let's add the --help and --version flag ourselves. + finalCmd.InitDefaultHelpFlag() + finalCmd.InitDefaultVersionFlag() + + // Check if we are doing flag value completion before parsing the flags. + // This is important because if we are completing a flag value, we need to also + // remove the flag name argument from the list of finalArgs or else the parsing + // could fail due to an invalid value (incomplete) for the flag. + flag, finalArgs, toComplete, flagErr := checkIfFlagCompletion(finalCmd, finalArgs, toComplete) + + // Check if interspersed is false or -- was set on a previous arg. + // This works by counting the arguments. Normally -- is not counted as arg but + // if -- was already set or interspersed is false and there is already one arg then + // the extra added -- is counted as arg. + flagCompletion := true + _ = finalCmd.ParseFlags(append(finalArgs, "--")) + newArgCount := finalCmd.Flags().NArg() + + // Parse the flags early so we can check if required flags are set + if err = finalCmd.ParseFlags(finalArgs); err != nil { + return finalCmd, []string{}, ShellCompDirectiveDefault, fmt.Errorf("Error while parsing flags from args %v: %s", finalArgs, err.Error()) + } + + realArgCount := finalCmd.Flags().NArg() + if newArgCount > realArgCount { + // don't do flag completion (see above) + flagCompletion = false + } + // Error while attempting to parse flags + if flagErr != nil { + // If error type is flagCompError and we don't want flagCompletion we should ignore the error + if _, ok := flagErr.(*flagCompError); !(ok && !flagCompletion) { + return finalCmd, []string{}, ShellCompDirectiveDefault, flagErr + } + } + + // Look for the --help or --version flags. If they are present, + // there should be no further completions. + if helpOrVersionFlagPresent(finalCmd) { + return finalCmd, []string{}, ShellCompDirectiveNoFileComp, nil + } + + // We only remove the flags from the arguments if DisableFlagParsing is not set. + // This is important for commands which have requested to do their own flag completion. + if !finalCmd.DisableFlagParsing { + finalArgs = finalCmd.Flags().Args() + } + + if flag != nil && flagCompletion { + // Check if we are completing a flag value subject to annotations + if validExts, present := flag.Annotations[BashCompFilenameExt]; present { + if len(validExts) != 0 { + // File completion filtered by extensions + return finalCmd, validExts, ShellCompDirectiveFilterFileExt, nil + } + + // The annotation requests simple file completion. There is no reason to do + // that since it is the default behavior anyway. Let's ignore this annotation + // in case the program also registered a completion function for this flag. + // Even though it is a mistake on the program's side, let's be nice when we can. + } + + if subDir, present := flag.Annotations[BashCompSubdirsInDir]; present { + if len(subDir) == 1 { + // Directory completion from within a directory + return finalCmd, subDir, ShellCompDirectiveFilterDirs, nil + } + // Directory completion + return finalCmd, []string{}, ShellCompDirectiveFilterDirs, nil + } + } + + var completions []string + var directive ShellCompDirective + + // Enforce flag groups before doing flag completions + finalCmd.enforceFlagGroupsForCompletion() + + // Note that we want to perform flagname completion even if finalCmd.DisableFlagParsing==true; + // doing this allows for completion of persistent flag names even for commands that disable flag parsing. + // + // When doing completion of a flag name, as soon as an argument starts with + // a '-' we know it is a flag. We cannot use isFlagArg() here as it requires + // the flag name to be complete + if flag == nil && len(toComplete) > 0 && toComplete[0] == '-' && !strings.Contains(toComplete, "=") && flagCompletion { + // First check for required flags + completions = completeRequireFlags(finalCmd, toComplete) + + // If we have not found any required flags, only then can we show regular flags + if len(completions) == 0 { + doCompleteFlags := func(flag *pflag.Flag) { + if !flag.Changed || + strings.Contains(flag.Value.Type(), "Slice") || + strings.Contains(flag.Value.Type(), "Array") { + // If the flag is not already present, or if it can be specified multiple times (Array or Slice) + // we suggest it as a completion + completions = append(completions, getFlagNameCompletions(flag, toComplete)...) + } + } + + // We cannot use finalCmd.Flags() because we may not have called ParsedFlags() for commands + // that have set DisableFlagParsing; it is ParseFlags() that merges the inherited and + // non-inherited flags. + finalCmd.InheritedFlags().VisitAll(func(flag *pflag.Flag) { + doCompleteFlags(flag) + }) + finalCmd.NonInheritedFlags().VisitAll(func(flag *pflag.Flag) { + doCompleteFlags(flag) + }) + } + + directive = ShellCompDirectiveNoFileComp + if len(completions) == 1 && strings.HasSuffix(completions[0], "=") { + // If there is a single completion, the shell usually adds a space + // after the completion. We don't want that if the flag ends with an = + directive = ShellCompDirectiveNoSpace + } + + if !finalCmd.DisableFlagParsing { + // If DisableFlagParsing==false, we have completed the flags as known by Cobra; + // we can return what we found. + // If DisableFlagParsing==true, Cobra may not be aware of all flags, so we + // let the logic continue to see if ValidArgsFunction needs to be called. + return finalCmd, completions, directive, nil + } + } else { + directive = ShellCompDirectiveDefault + if flag == nil { + foundLocalNonPersistentFlag := false + // If TraverseChildren is true on the root command we don't check for + // local flags because we can use a local flag on a parent command + if !finalCmd.Root().TraverseChildren { + // Check if there are any local, non-persistent flags on the command-line + localNonPersistentFlags := finalCmd.LocalNonPersistentFlags() + finalCmd.NonInheritedFlags().VisitAll(func(flag *pflag.Flag) { + if localNonPersistentFlags.Lookup(flag.Name) != nil && flag.Changed { + foundLocalNonPersistentFlag = true + } + }) + } + + // Complete subcommand names, including the help command + if len(finalArgs) == 0 && !foundLocalNonPersistentFlag { + // We only complete sub-commands if: + // - there are no arguments on the command-line and + // - there are no local, non-persistent flags on the command-line or TraverseChildren is true + for _, subCmd := range finalCmd.Commands() { + if subCmd.IsAvailableCommand() || subCmd == finalCmd.helpCommand { + if strings.HasPrefix(subCmd.Name(), toComplete) { + completions = append(completions, fmt.Sprintf("%s\t%s", subCmd.Name(), subCmd.Short)) + } + directive = ShellCompDirectiveNoFileComp + } + } + } + + // Complete required flags even without the '-' prefix + completions = append(completions, completeRequireFlags(finalCmd, toComplete)...) + + // Always complete ValidArgs, even if we are completing a subcommand name. + // This is for commands that have both subcommands and ValidArgs. + if len(finalCmd.ValidArgs) > 0 { + if len(finalArgs) == 0 { + // ValidArgs are only for the first argument + for _, validArg := range finalCmd.ValidArgs { + if strings.HasPrefix(validArg, toComplete) { + completions = append(completions, validArg) + } + } + directive = ShellCompDirectiveNoFileComp + + // If no completions were found within commands or ValidArgs, + // see if there are any ArgAliases that should be completed. + if len(completions) == 0 { + for _, argAlias := range finalCmd.ArgAliases { + if strings.HasPrefix(argAlias, toComplete) { + completions = append(completions, argAlias) + } + } + } + } + + // If there are ValidArgs specified (even if they don't match), we stop completion. + // Only one of ValidArgs or ValidArgsFunction can be used for a single command. + return finalCmd, completions, directive, nil + } + + // Let the logic continue so as to add any ValidArgsFunction completions, + // even if we already found sub-commands. + // This is for commands that have subcommands but also specify a ValidArgsFunction. + } + } + + // Find the completion function for the flag or command + var completionFn func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) + if flag != nil && flagCompletion { + flagCompletionMutex.RLock() + completionFn = flagCompletionFunctions[flag] + flagCompletionMutex.RUnlock() + } else { + completionFn = finalCmd.ValidArgsFunction + } + if completionFn != nil { + // Go custom completion defined for this flag or command. + // Call the registered completion function to get the completions. + var comps []string + comps, directive = completionFn(finalCmd, finalArgs, toComplete) + completions = append(completions, comps...) + } + + return finalCmd, completions, directive, nil +} + +func helpOrVersionFlagPresent(cmd *Command) bool { + if versionFlag := cmd.Flags().Lookup("version"); versionFlag != nil && + len(versionFlag.Annotations[FlagSetByCobraAnnotation]) > 0 && versionFlag.Changed { + return true + } + if helpFlag := cmd.Flags().Lookup("help"); helpFlag != nil && + len(helpFlag.Annotations[FlagSetByCobraAnnotation]) > 0 && helpFlag.Changed { + return true + } + return false +} + +func getFlagNameCompletions(flag *pflag.Flag, toComplete string) []string { + if nonCompletableFlag(flag) { + return []string{} + } + + var completions []string + flagName := "--" + flag.Name + if strings.HasPrefix(flagName, toComplete) { + // Flag without the = + completions = append(completions, fmt.Sprintf("%s\t%s", flagName, flag.Usage)) + + // Why suggest both long forms: --flag and --flag= ? + // This forces the user to *always* have to type either an = or a space after the flag name. + // Let's be nice and avoid making users have to do that. + // Since boolean flags and shortname flags don't show the = form, let's go that route and never show it. + // The = form will still work, we just won't suggest it. + // This also makes the list of suggested flags shorter as we avoid all the = forms. + // + // if len(flag.NoOptDefVal) == 0 { + // // Flag requires a value, so it can be suffixed with = + // flagName += "=" + // completions = append(completions, fmt.Sprintf("%s\t%s", flagName, flag.Usage)) + // } + } + + flagName = "-" + flag.Shorthand + if len(flag.Shorthand) > 0 && strings.HasPrefix(flagName, toComplete) { + completions = append(completions, fmt.Sprintf("%s\t%s", flagName, flag.Usage)) + } + + return completions +} + +func completeRequireFlags(finalCmd *Command, toComplete string) []string { + var completions []string + + doCompleteRequiredFlags := func(flag *pflag.Flag) { + if _, present := flag.Annotations[BashCompOneRequiredFlag]; present { + if !flag.Changed { + // If the flag is not already present, we suggest it as a completion + completions = append(completions, getFlagNameCompletions(flag, toComplete)...) + } + } + } + + // We cannot use finalCmd.Flags() because we may not have called ParsedFlags() for commands + // that have set DisableFlagParsing; it is ParseFlags() that merges the inherited and + // non-inherited flags. + finalCmd.InheritedFlags().VisitAll(func(flag *pflag.Flag) { + doCompleteRequiredFlags(flag) + }) + finalCmd.NonInheritedFlags().VisitAll(func(flag *pflag.Flag) { + doCompleteRequiredFlags(flag) + }) + + return completions +} + +func checkIfFlagCompletion(finalCmd *Command, args []string, lastArg string) (*pflag.Flag, []string, string, error) { + if finalCmd.DisableFlagParsing { + // We only do flag completion if we are allowed to parse flags + // This is important for commands which have requested to do their own flag completion. + return nil, args, lastArg, nil + } + + var flagName string + trimmedArgs := args + flagWithEqual := false + orgLastArg := lastArg + + // When doing completion of a flag name, as soon as an argument starts with + // a '-' we know it is a flag. We cannot use isFlagArg() here as that function + // requires the flag name to be complete + if len(lastArg) > 0 && lastArg[0] == '-' { + if index := strings.Index(lastArg, "="); index >= 0 { + // Flag with an = + if strings.HasPrefix(lastArg[:index], "--") { + // Flag has full name + flagName = lastArg[2:index] + } else { + // Flag is shorthand + // We have to get the last shorthand flag name + // e.g. `-asd` => d to provide the correct completion + // https://github.com/spf13/cobra/issues/1257 + flagName = lastArg[index-1 : index] + } + lastArg = lastArg[index+1:] + flagWithEqual = true + } else { + // Normal flag completion + return nil, args, lastArg, nil + } + } + + if len(flagName) == 0 { + if len(args) > 0 { + prevArg := args[len(args)-1] + if isFlagArg(prevArg) { + // Only consider the case where the flag does not contain an =. + // If the flag contains an = it means it has already been fully processed, + // so we don't need to deal with it here. + if index := strings.Index(prevArg, "="); index < 0 { + if strings.HasPrefix(prevArg, "--") { + // Flag has full name + flagName = prevArg[2:] + } else { + // Flag is shorthand + // We have to get the last shorthand flag name + // e.g. `-asd` => d to provide the correct completion + // https://github.com/spf13/cobra/issues/1257 + flagName = prevArg[len(prevArg)-1:] + } + // Remove the uncompleted flag or else there could be an error created + // for an invalid value for that flag + trimmedArgs = args[:len(args)-1] + } + } + } + } + + if len(flagName) == 0 { + // Not doing flag completion + return nil, trimmedArgs, lastArg, nil + } + + flag := findFlag(finalCmd, flagName) + if flag == nil { + // Flag not supported by this command, the interspersed option might be set so return the original args + return nil, args, orgLastArg, &flagCompError{subCommand: finalCmd.Name(), flagName: flagName} + } + + if !flagWithEqual { + if len(flag.NoOptDefVal) != 0 { + // We had assumed dealing with a two-word flag but the flag is a boolean flag. + // In that case, there is no value following it, so we are not really doing flag completion. + // Reset everything to do noun completion. + trimmedArgs = args + flag = nil + } + } + + return flag, trimmedArgs, lastArg, nil +} + +// InitDefaultCompletionCmd adds a default 'completion' command to c. +// This function will do nothing if any of the following is true: +// 1- the feature has been explicitly disabled by the program, +// 2- c has no subcommands (to avoid creating one), +// 3- c already has a 'completion' command provided by the program. +func (c *Command) InitDefaultCompletionCmd() { + if c.CompletionOptions.DisableDefaultCmd || !c.HasSubCommands() { + return + } + + for _, cmd := range c.commands { + if cmd.Name() == compCmdName || cmd.HasAlias(compCmdName) { + // A completion command is already available + return + } + } + + haveNoDescFlag := !c.CompletionOptions.DisableNoDescFlag && !c.CompletionOptions.DisableDescriptions + + completionCmd := &Command{ + Use: compCmdName, + Short: "Generate the autocompletion script for the specified shell", + Long: fmt.Sprintf(`Generate the autocompletion script for %[1]s for the specified shell. +See each sub-command's help for details on how to use the generated script. +`, c.Root().Name()), + Args: NoArgs, + ValidArgsFunction: NoFileCompletions, + Hidden: c.CompletionOptions.HiddenDefaultCmd, + GroupID: c.completionCommandGroupID, + } + c.AddCommand(completionCmd) + + out := c.OutOrStdout() + noDesc := c.CompletionOptions.DisableDescriptions + shortDesc := "Generate the autocompletion script for %s" + bash := &Command{ + Use: "bash", + Short: fmt.Sprintf(shortDesc, "bash"), + Long: fmt.Sprintf(`Generate the autocompletion script for the bash shell. + +This script depends on the 'bash-completion' package. +If it is not installed already, you can install it via your OS's package manager. + +To load completions in your current shell session: + + source <(%[1]s completion bash) + +To load completions for every new session, execute once: + +#### Linux: + + %[1]s completion bash > /etc/bash_completion.d/%[1]s + +#### macOS: + + %[1]s completion bash > $(brew --prefix)/etc/bash_completion.d/%[1]s + +You will need to start a new shell for this setup to take effect. +`, c.Root().Name()), + Args: NoArgs, + DisableFlagsInUseLine: true, + ValidArgsFunction: NoFileCompletions, + RunE: func(cmd *Command, args []string) error { + return cmd.Root().GenBashCompletionV2(out, !noDesc) + }, + } + if haveNoDescFlag { + bash.Flags().BoolVar(&noDesc, compCmdNoDescFlagName, compCmdNoDescFlagDefault, compCmdNoDescFlagDesc) + } + + zsh := &Command{ + Use: "zsh", + Short: fmt.Sprintf(shortDesc, "zsh"), + Long: fmt.Sprintf(`Generate the autocompletion script for the zsh shell. + +If shell completion is not already enabled in your environment you will need +to enable it. You can execute the following once: + + echo "autoload -U compinit; compinit" >> ~/.zshrc + +To load completions in your current shell session: + + source <(%[1]s completion zsh) + +To load completions for every new session, execute once: + +#### Linux: + + %[1]s completion zsh > "${fpath[1]}/_%[1]s" + +#### macOS: + + %[1]s completion zsh > $(brew --prefix)/share/zsh/site-functions/_%[1]s + +You will need to start a new shell for this setup to take effect. +`, c.Root().Name()), + Args: NoArgs, + ValidArgsFunction: NoFileCompletions, + RunE: func(cmd *Command, args []string) error { + if noDesc { + return cmd.Root().GenZshCompletionNoDesc(out) + } + return cmd.Root().GenZshCompletion(out) + }, + } + if haveNoDescFlag { + zsh.Flags().BoolVar(&noDesc, compCmdNoDescFlagName, compCmdNoDescFlagDefault, compCmdNoDescFlagDesc) + } + + fish := &Command{ + Use: "fish", + Short: fmt.Sprintf(shortDesc, "fish"), + Long: fmt.Sprintf(`Generate the autocompletion script for the fish shell. + +To load completions in your current shell session: + + %[1]s completion fish | source + +To load completions for every new session, execute once: + + %[1]s completion fish > ~/.config/fish/completions/%[1]s.fish + +You will need to start a new shell for this setup to take effect. +`, c.Root().Name()), + Args: NoArgs, + ValidArgsFunction: NoFileCompletions, + RunE: func(cmd *Command, args []string) error { + return cmd.Root().GenFishCompletion(out, !noDesc) + }, + } + if haveNoDescFlag { + fish.Flags().BoolVar(&noDesc, compCmdNoDescFlagName, compCmdNoDescFlagDefault, compCmdNoDescFlagDesc) + } + + powershell := &Command{ + Use: "powershell", + Short: fmt.Sprintf(shortDesc, "powershell"), + Long: fmt.Sprintf(`Generate the autocompletion script for powershell. + +To load completions in your current shell session: + + %[1]s completion powershell | Out-String | Invoke-Expression + +To load completions for every new session, add the output of the above command +to your powershell profile. +`, c.Root().Name()), + Args: NoArgs, + ValidArgsFunction: NoFileCompletions, + RunE: func(cmd *Command, args []string) error { + if noDesc { + return cmd.Root().GenPowerShellCompletion(out) + } + return cmd.Root().GenPowerShellCompletionWithDesc(out) + + }, + } + if haveNoDescFlag { + powershell.Flags().BoolVar(&noDesc, compCmdNoDescFlagName, compCmdNoDescFlagDefault, compCmdNoDescFlagDesc) + } + + completionCmd.AddCommand(bash, zsh, fish, powershell) +} + +func findFlag(cmd *Command, name string) *pflag.Flag { + flagSet := cmd.Flags() + if len(name) == 1 { + // First convert the short flag into a long flag + // as the cmd.Flag() search only accepts long flags + if short := flagSet.ShorthandLookup(name); short != nil { + name = short.Name + } else { + set := cmd.InheritedFlags() + if short = set.ShorthandLookup(name); short != nil { + name = short.Name + } else { + return nil + } + } + } + return cmd.Flag(name) +} + +// CompDebug prints the specified string to the same file as where the +// completion script prints its logs. +// Note that completion printouts should never be on stdout as they would +// be wrongly interpreted as actual completion choices by the completion script. +func CompDebug(msg string, printToStdErr bool) { + msg = fmt.Sprintf("[Debug] %s", msg) + + // Such logs are only printed when the user has set the environment + // variable BASH_COMP_DEBUG_FILE to the path of some file to be used. + if path := os.Getenv("BASH_COMP_DEBUG_FILE"); path != "" { + f, err := os.OpenFile(path, + os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) + if err == nil { + defer f.Close() + WriteStringAndCheck(f, msg) + } + } + + if printToStdErr { + // Must print to stderr for this not to be read by the completion script. + fmt.Fprint(os.Stderr, msg) + } +} + +// CompDebugln prints the specified string with a newline at the end +// to the same file as where the completion script prints its logs. +// Such logs are only printed when the user has set the environment +// variable BASH_COMP_DEBUG_FILE to the path of some file to be used. +func CompDebugln(msg string, printToStdErr bool) { + CompDebug(fmt.Sprintf("%s\n", msg), printToStdErr) +} + +// CompError prints the specified completion message to stderr. +func CompError(msg string) { + msg = fmt.Sprintf("[Error] %s", msg) + CompDebug(msg, true) +} + +// CompErrorln prints the specified completion message to stderr with a newline at the end. +func CompErrorln(msg string) { + CompError(fmt.Sprintf("%s\n", msg)) +} diff --git a/vendor/github.com/spf13/cobra/fish_completions.go b/vendor/github.com/spf13/cobra/fish_completions.go new file mode 100644 index 0000000000..12ca0d2b11 --- /dev/null +++ b/vendor/github.com/spf13/cobra/fish_completions.go @@ -0,0 +1,292 @@ +// Copyright 2013-2023 The Cobra Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cobra + +import ( + "bytes" + "fmt" + "io" + "os" + "strings" +) + +func genFishComp(buf io.StringWriter, name string, includeDesc bool) { + // Variables should not contain a '-' or ':' character + nameForVar := name + nameForVar = strings.ReplaceAll(nameForVar, "-", "_") + nameForVar = strings.ReplaceAll(nameForVar, ":", "_") + + compCmd := ShellCompRequestCmd + if !includeDesc { + compCmd = ShellCompNoDescRequestCmd + } + WriteStringAndCheck(buf, fmt.Sprintf("# fish completion for %-36s -*- shell-script -*-\n", name)) + WriteStringAndCheck(buf, fmt.Sprintf(` +function __%[1]s_debug + set -l file "$BASH_COMP_DEBUG_FILE" + if test -n "$file" + echo "$argv" >> $file + end +end + +function __%[1]s_perform_completion + __%[1]s_debug "Starting __%[1]s_perform_completion" + + # Extract all args except the last one + set -l args (commandline -opc) + # Extract the last arg and escape it in case it is a space + set -l lastArg (string escape -- (commandline -ct)) + + __%[1]s_debug "args: $args" + __%[1]s_debug "last arg: $lastArg" + + # Disable ActiveHelp which is not supported for fish shell + set -l requestComp "%[10]s=0 $args[1] %[3]s $args[2..-1] $lastArg" + + __%[1]s_debug "Calling $requestComp" + set -l results (eval $requestComp 2> /dev/null) + + # Some programs may output extra empty lines after the directive. + # Let's ignore them or else it will break completion. + # Ref: https://github.com/spf13/cobra/issues/1279 + for line in $results[-1..1] + if test (string trim -- $line) = "" + # Found an empty line, remove it + set results $results[1..-2] + else + # Found non-empty line, we have our proper output + break + end + end + + set -l comps $results[1..-2] + set -l directiveLine $results[-1] + + # For Fish, when completing a flag with an = (e.g., -n=) + # completions must be prefixed with the flag + set -l flagPrefix (string match -r -- '-.*=' "$lastArg") + + __%[1]s_debug "Comps: $comps" + __%[1]s_debug "DirectiveLine: $directiveLine" + __%[1]s_debug "flagPrefix: $flagPrefix" + + for comp in $comps + printf "%%s%%s\n" "$flagPrefix" "$comp" + end + + printf "%%s\n" "$directiveLine" +end + +# this function limits calls to __%[1]s_perform_completion, by caching the result behind $__%[1]s_perform_completion_once_result +function __%[1]s_perform_completion_once + __%[1]s_debug "Starting __%[1]s_perform_completion_once" + + if test -n "$__%[1]s_perform_completion_once_result" + __%[1]s_debug "Seems like a valid result already exists, skipping __%[1]s_perform_completion" + return 0 + end + + set --global __%[1]s_perform_completion_once_result (__%[1]s_perform_completion) + if test -z "$__%[1]s_perform_completion_once_result" + __%[1]s_debug "No completions, probably due to a failure" + return 1 + end + + __%[1]s_debug "Performed completions and set __%[1]s_perform_completion_once_result" + return 0 +end + +# this function is used to clear the $__%[1]s_perform_completion_once_result variable after completions are run +function __%[1]s_clear_perform_completion_once_result + __%[1]s_debug "" + __%[1]s_debug "========= clearing previously set __%[1]s_perform_completion_once_result variable ==========" + set --erase __%[1]s_perform_completion_once_result + __%[1]s_debug "Succesfully erased the variable __%[1]s_perform_completion_once_result" +end + +function __%[1]s_requires_order_preservation + __%[1]s_debug "" + __%[1]s_debug "========= checking if order preservation is required ==========" + + __%[1]s_perform_completion_once + if test -z "$__%[1]s_perform_completion_once_result" + __%[1]s_debug "Error determining if order preservation is required" + return 1 + end + + set -l directive (string sub --start 2 $__%[1]s_perform_completion_once_result[-1]) + __%[1]s_debug "Directive is: $directive" + + set -l shellCompDirectiveKeepOrder %[9]d + set -l keeporder (math (math --scale 0 $directive / $shellCompDirectiveKeepOrder) %% 2) + __%[1]s_debug "Keeporder is: $keeporder" + + if test $keeporder -ne 0 + __%[1]s_debug "This does require order preservation" + return 0 + end + + __%[1]s_debug "This doesn't require order preservation" + return 1 +end + + +# This function does two things: +# - Obtain the completions and store them in the global __%[1]s_comp_results +# - Return false if file completion should be performed +function __%[1]s_prepare_completions + __%[1]s_debug "" + __%[1]s_debug "========= starting completion logic ==========" + + # Start fresh + set --erase __%[1]s_comp_results + + __%[1]s_perform_completion_once + __%[1]s_debug "Completion results: $__%[1]s_perform_completion_once_result" + + if test -z "$__%[1]s_perform_completion_once_result" + __%[1]s_debug "No completion, probably due to a failure" + # Might as well do file completion, in case it helps + return 1 + end + + set -l directive (string sub --start 2 $__%[1]s_perform_completion_once_result[-1]) + set --global __%[1]s_comp_results $__%[1]s_perform_completion_once_result[1..-2] + + __%[1]s_debug "Completions are: $__%[1]s_comp_results" + __%[1]s_debug "Directive is: $directive" + + set -l shellCompDirectiveError %[4]d + set -l shellCompDirectiveNoSpace %[5]d + set -l shellCompDirectiveNoFileComp %[6]d + set -l shellCompDirectiveFilterFileExt %[7]d + set -l shellCompDirectiveFilterDirs %[8]d + + if test -z "$directive" + set directive 0 + end + + set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) %% 2) + if test $compErr -eq 1 + __%[1]s_debug "Received error directive: aborting." + # Might as well do file completion, in case it helps + return 1 + end + + set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) %% 2) + set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) %% 2) + if test $filefilter -eq 1; or test $dirfilter -eq 1 + __%[1]s_debug "File extension filtering or directory filtering not supported" + # Do full file completion instead + return 1 + end + + set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) %% 2) + set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) %% 2) + + __%[1]s_debug "nospace: $nospace, nofiles: $nofiles" + + # If we want to prevent a space, or if file completion is NOT disabled, + # we need to count the number of valid completions. + # To do so, we will filter on prefix as the completions we have received + # may not already be filtered so as to allow fish to match on different + # criteria than the prefix. + if test $nospace -ne 0; or test $nofiles -eq 0 + set -l prefix (commandline -t | string escape --style=regex) + __%[1]s_debug "prefix: $prefix" + + set -l completions (string match -r -- "^$prefix.*" $__%[1]s_comp_results) + set --global __%[1]s_comp_results $completions + __%[1]s_debug "Filtered completions are: $__%[1]s_comp_results" + + # Important not to quote the variable for count to work + set -l numComps (count $__%[1]s_comp_results) + __%[1]s_debug "numComps: $numComps" + + if test $numComps -eq 1; and test $nospace -ne 0 + # We must first split on \t to get rid of the descriptions to be + # able to check what the actual completion will be. + # We don't need descriptions anyway since there is only a single + # real completion which the shell will expand immediately. + set -l split (string split --max 1 \t $__%[1]s_comp_results[1]) + + # Fish won't add a space if the completion ends with any + # of the following characters: @=/:., + set -l lastChar (string sub -s -1 -- $split) + if not string match -r -q "[@=/:.,]" -- "$lastChar" + # In other cases, to support the "nospace" directive we trick the shell + # by outputting an extra, longer completion. + __%[1]s_debug "Adding second completion to perform nospace directive" + set --global __%[1]s_comp_results $split[1] $split[1]. + __%[1]s_debug "Completions are now: $__%[1]s_comp_results" + end + end + + if test $numComps -eq 0; and test $nofiles -eq 0 + # To be consistent with bash and zsh, we only trigger file + # completion when there are no other completions + __%[1]s_debug "Requesting file completion" + return 1 + end + end + + return 0 +end + +# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves +# so we can properly delete any completions provided by another script. +# Only do this if the program can be found, or else fish may print some errors; besides, +# the existing completions will only be loaded if the program can be found. +if type -q "%[2]s" + # The space after the program name is essential to trigger completion for the program + # and not completion of the program name itself. + # Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish. + complete --do-complete "%[2]s " > /dev/null 2>&1 +end + +# Remove any pre-existing completions for the program since we will be handling all of them. +complete -c %[2]s -e + +# this will get called after the two calls below and clear the $__%[1]s_perform_completion_once_result global +complete -c %[2]s -n '__%[1]s_clear_perform_completion_once_result' +# The call to __%[1]s_prepare_completions will setup __%[1]s_comp_results +# which provides the program's completion choices. +# If this doesn't require order preservation, we don't use the -k flag +complete -c %[2]s -n 'not __%[1]s_requires_order_preservation && __%[1]s_prepare_completions' -f -a '$__%[1]s_comp_results' +# otherwise we use the -k flag +complete -k -c %[2]s -n '__%[1]s_requires_order_preservation && __%[1]s_prepare_completions' -f -a '$__%[1]s_comp_results' +`, nameForVar, name, compCmd, + ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp, + ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs, ShellCompDirectiveKeepOrder, activeHelpEnvVar(name))) +} + +// GenFishCompletion generates fish completion file and writes to the passed writer. +func (c *Command) GenFishCompletion(w io.Writer, includeDesc bool) error { + buf := new(bytes.Buffer) + genFishComp(buf, c.Name(), includeDesc) + _, err := buf.WriteTo(w) + return err +} + +// GenFishCompletionFile generates fish completion file. +func (c *Command) GenFishCompletionFile(filename string, includeDesc bool) error { + outFile, err := os.Create(filename) + if err != nil { + return err + } + defer outFile.Close() + + return c.GenFishCompletion(outFile, includeDesc) +} diff --git a/vendor/github.com/spf13/cobra/fish_completions.md b/vendor/github.com/spf13/cobra/fish_completions.md new file mode 100644 index 0000000000..19b2ed1293 --- /dev/null +++ b/vendor/github.com/spf13/cobra/fish_completions.md @@ -0,0 +1,4 @@ +## Generating Fish Completions For Your cobra.Command + +Please refer to [Shell Completions](shell_completions.md) for details. + diff --git a/vendor/github.com/spf13/cobra/flag_groups.go b/vendor/github.com/spf13/cobra/flag_groups.go new file mode 100644 index 0000000000..b35fde1554 --- /dev/null +++ b/vendor/github.com/spf13/cobra/flag_groups.go @@ -0,0 +1,224 @@ +// Copyright 2013-2023 The Cobra Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cobra + +import ( + "fmt" + "sort" + "strings" + + flag "github.com/spf13/pflag" +) + +const ( + requiredAsGroup = "cobra_annotation_required_if_others_set" + mutuallyExclusive = "cobra_annotation_mutually_exclusive" +) + +// MarkFlagsRequiredTogether marks the given flags with annotations so that Cobra errors +// if the command is invoked with a subset (but not all) of the given flags. +func (c *Command) MarkFlagsRequiredTogether(flagNames ...string) { + c.mergePersistentFlags() + for _, v := range flagNames { + f := c.Flags().Lookup(v) + if f == nil { + panic(fmt.Sprintf("Failed to find flag %q and mark it as being required in a flag group", v)) + } + if err := c.Flags().SetAnnotation(v, requiredAsGroup, append(f.Annotations[requiredAsGroup], strings.Join(flagNames, " "))); err != nil { + // Only errs if the flag isn't found. + panic(err) + } + } +} + +// MarkFlagsMutuallyExclusive marks the given flags with annotations so that Cobra errors +// if the command is invoked with more than one flag from the given set of flags. +func (c *Command) MarkFlagsMutuallyExclusive(flagNames ...string) { + c.mergePersistentFlags() + for _, v := range flagNames { + f := c.Flags().Lookup(v) + if f == nil { + panic(fmt.Sprintf("Failed to find flag %q and mark it as being in a mutually exclusive flag group", v)) + } + // Each time this is called is a single new entry; this allows it to be a member of multiple groups if needed. + if err := c.Flags().SetAnnotation(v, mutuallyExclusive, append(f.Annotations[mutuallyExclusive], strings.Join(flagNames, " "))); err != nil { + panic(err) + } + } +} + +// ValidateFlagGroups validates the mutuallyExclusive/requiredAsGroup logic and returns the +// first error encountered. +func (c *Command) ValidateFlagGroups() error { + if c.DisableFlagParsing { + return nil + } + + flags := c.Flags() + + // groupStatus format is the list of flags as a unique ID, + // then a map of each flag name and whether it is set or not. + groupStatus := map[string]map[string]bool{} + mutuallyExclusiveGroupStatus := map[string]map[string]bool{} + flags.VisitAll(func(pflag *flag.Flag) { + processFlagForGroupAnnotation(flags, pflag, requiredAsGroup, groupStatus) + processFlagForGroupAnnotation(flags, pflag, mutuallyExclusive, mutuallyExclusiveGroupStatus) + }) + + if err := validateRequiredFlagGroups(groupStatus); err != nil { + return err + } + if err := validateExclusiveFlagGroups(mutuallyExclusiveGroupStatus); err != nil { + return err + } + return nil +} + +func hasAllFlags(fs *flag.FlagSet, flagnames ...string) bool { + for _, fname := range flagnames { + f := fs.Lookup(fname) + if f == nil { + return false + } + } + return true +} + +func processFlagForGroupAnnotation(flags *flag.FlagSet, pflag *flag.Flag, annotation string, groupStatus map[string]map[string]bool) { + groupInfo, found := pflag.Annotations[annotation] + if found { + for _, group := range groupInfo { + if groupStatus[group] == nil { + flagnames := strings.Split(group, " ") + + // Only consider this flag group at all if all the flags are defined. + if !hasAllFlags(flags, flagnames...) { + continue + } + + groupStatus[group] = map[string]bool{} + for _, name := range flagnames { + groupStatus[group][name] = false + } + } + + groupStatus[group][pflag.Name] = pflag.Changed + } + } +} + +func validateRequiredFlagGroups(data map[string]map[string]bool) error { + keys := sortedKeys(data) + for _, flagList := range keys { + flagnameAndStatus := data[flagList] + + unset := []string{} + for flagname, isSet := range flagnameAndStatus { + if !isSet { + unset = append(unset, flagname) + } + } + if len(unset) == len(flagnameAndStatus) || len(unset) == 0 { + continue + } + + // Sort values, so they can be tested/scripted against consistently. + sort.Strings(unset) + return fmt.Errorf("if any flags in the group [%v] are set they must all be set; missing %v", flagList, unset) + } + + return nil +} + +func validateExclusiveFlagGroups(data map[string]map[string]bool) error { + keys := sortedKeys(data) + for _, flagList := range keys { + flagnameAndStatus := data[flagList] + var set []string + for flagname, isSet := range flagnameAndStatus { + if isSet { + set = append(set, flagname) + } + } + if len(set) == 0 || len(set) == 1 { + continue + } + + // Sort values, so they can be tested/scripted against consistently. + sort.Strings(set) + return fmt.Errorf("if any flags in the group [%v] are set none of the others can be; %v were all set", flagList, set) + } + return nil +} + +func sortedKeys(m map[string]map[string]bool) []string { + keys := make([]string, len(m)) + i := 0 + for k := range m { + keys[i] = k + i++ + } + sort.Strings(keys) + return keys +} + +// enforceFlagGroupsForCompletion will do the following: +// - when a flag in a group is present, other flags in the group will be marked required +// - when a flag in a mutually exclusive group is present, other flags in the group will be marked as hidden +// This allows the standard completion logic to behave appropriately for flag groups +func (c *Command) enforceFlagGroupsForCompletion() { + if c.DisableFlagParsing { + return + } + + flags := c.Flags() + groupStatus := map[string]map[string]bool{} + mutuallyExclusiveGroupStatus := map[string]map[string]bool{} + c.Flags().VisitAll(func(pflag *flag.Flag) { + processFlagForGroupAnnotation(flags, pflag, requiredAsGroup, groupStatus) + processFlagForGroupAnnotation(flags, pflag, mutuallyExclusive, mutuallyExclusiveGroupStatus) + }) + + // If a flag that is part of a group is present, we make all the other flags + // of that group required so that the shell completion suggests them automatically + for flagList, flagnameAndStatus := range groupStatus { + for _, isSet := range flagnameAndStatus { + if isSet { + // One of the flags of the group is set, mark the other ones as required + for _, fName := range strings.Split(flagList, " ") { + _ = c.MarkFlagRequired(fName) + } + } + } + } + + // If a flag that is mutually exclusive to others is present, we hide the other + // flags of that group so the shell completion does not suggest them + for flagList, flagnameAndStatus := range mutuallyExclusiveGroupStatus { + for flagName, isSet := range flagnameAndStatus { + if isSet { + // One of the flags of the mutually exclusive group is set, mark the other ones as hidden + // Don't mark the flag that is already set as hidden because it may be an + // array or slice flag and therefore must continue being suggested + for _, fName := range strings.Split(flagList, " ") { + if fName != flagName { + flag := c.Flags().Lookup(fName) + flag.Hidden = true + } + } + } + } + } +} diff --git a/vendor/github.com/spf13/cobra/powershell_completions.go b/vendor/github.com/spf13/cobra/powershell_completions.go new file mode 100644 index 0000000000..177d2755f2 --- /dev/null +++ b/vendor/github.com/spf13/cobra/powershell_completions.go @@ -0,0 +1,325 @@ +// Copyright 2013-2023 The Cobra Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// The generated scripts require PowerShell v5.0+ (which comes Windows 10, but +// can be downloaded separately for windows 7 or 8.1). + +package cobra + +import ( + "bytes" + "fmt" + "io" + "os" + "strings" +) + +func genPowerShellComp(buf io.StringWriter, name string, includeDesc bool) { + // Variables should not contain a '-' or ':' character + nameForVar := name + nameForVar = strings.Replace(nameForVar, "-", "_", -1) + nameForVar = strings.Replace(nameForVar, ":", "_", -1) + + compCmd := ShellCompRequestCmd + if !includeDesc { + compCmd = ShellCompNoDescRequestCmd + } + WriteStringAndCheck(buf, fmt.Sprintf(`# powershell completion for %-36[1]s -*- shell-script -*- + +function __%[1]s_debug { + if ($env:BASH_COMP_DEBUG_FILE) { + "$args" | Out-File -Append -FilePath "$env:BASH_COMP_DEBUG_FILE" + } +} + +filter __%[1]s_escapeStringWithSpecialChars { +`+" $_ -replace '\\s|#|@|\\$|;|,|''|\\{|\\}|\\(|\\)|\"|`|\\||<|>|&','`$&'"+` +} + +[scriptblock]$__%[2]sCompleterBlock = { + param( + $WordToComplete, + $CommandAst, + $CursorPosition + ) + + # Get the current command line and convert into a string + $Command = $CommandAst.CommandElements + $Command = "$Command" + + __%[1]s_debug "" + __%[1]s_debug "========= starting completion logic ==========" + __%[1]s_debug "WordToComplete: $WordToComplete Command: $Command CursorPosition: $CursorPosition" + + # The user could have moved the cursor backwards on the command-line. + # We need to trigger completion from the $CursorPosition location, so we need + # to truncate the command-line ($Command) up to the $CursorPosition location. + # Make sure the $Command is longer then the $CursorPosition before we truncate. + # This happens because the $Command does not include the last space. + if ($Command.Length -gt $CursorPosition) { + $Command=$Command.Substring(0,$CursorPosition) + } + __%[1]s_debug "Truncated command: $Command" + + $ShellCompDirectiveError=%[4]d + $ShellCompDirectiveNoSpace=%[5]d + $ShellCompDirectiveNoFileComp=%[6]d + $ShellCompDirectiveFilterFileExt=%[7]d + $ShellCompDirectiveFilterDirs=%[8]d + $ShellCompDirectiveKeepOrder=%[9]d + + # Prepare the command to request completions for the program. + # Split the command at the first space to separate the program and arguments. + $Program,$Arguments = $Command.Split(" ",2) + + $RequestComp="$Program %[3]s $Arguments" + __%[1]s_debug "RequestComp: $RequestComp" + + # we cannot use $WordToComplete because it + # has the wrong values if the cursor was moved + # so use the last argument + if ($WordToComplete -ne "" ) { + $WordToComplete = $Arguments.Split(" ")[-1] + } + __%[1]s_debug "New WordToComplete: $WordToComplete" + + + # Check for flag with equal sign + $IsEqualFlag = ($WordToComplete -Like "--*=*" ) + if ( $IsEqualFlag ) { + __%[1]s_debug "Completing equal sign flag" + # Remove the flag part + $Flag,$WordToComplete = $WordToComplete.Split("=",2) + } + + if ( $WordToComplete -eq "" -And ( -Not $IsEqualFlag )) { + # If the last parameter is complete (there is a space following it) + # We add an extra empty parameter so we can indicate this to the go method. + __%[1]s_debug "Adding extra empty parameter" + # PowerShell 7.2+ changed the way how the arguments are passed to executables, + # so for pre-7.2 or when Legacy argument passing is enabled we need to use +`+" # `\"`\" to pass an empty argument, a \"\" or '' does not work!!!"+` + if ($PSVersionTable.PsVersion -lt [version]'7.2.0' -or + ($PSVersionTable.PsVersion -lt [version]'7.3.0' -and -not [ExperimentalFeature]::IsEnabled("PSNativeCommandArgumentPassing")) -or + (($PSVersionTable.PsVersion -ge [version]'7.3.0' -or [ExperimentalFeature]::IsEnabled("PSNativeCommandArgumentPassing")) -and + $PSNativeCommandArgumentPassing -eq 'Legacy')) { +`+" $RequestComp=\"$RequestComp\" + ' `\"`\"'"+` + } else { + $RequestComp="$RequestComp" + ' ""' + } + } + + __%[1]s_debug "Calling $RequestComp" + # First disable ActiveHelp which is not supported for Powershell + $env:%[10]s=0 + + #call the command store the output in $out and redirect stderr and stdout to null + # $Out is an array contains each line per element + Invoke-Expression -OutVariable out "$RequestComp" 2>&1 | Out-Null + + # get directive from last line + [int]$Directive = $Out[-1].TrimStart(':') + if ($Directive -eq "") { + # There is no directive specified + $Directive = 0 + } + __%[1]s_debug "The completion directive is: $Directive" + + # remove directive (last element) from out + $Out = $Out | Where-Object { $_ -ne $Out[-1] } + __%[1]s_debug "The completions are: $Out" + + if (($Directive -band $ShellCompDirectiveError) -ne 0 ) { + # Error code. No completion. + __%[1]s_debug "Received error from custom completion go code" + return + } + + $Longest = 0 + [Array]$Values = $Out | ForEach-Object { + #Split the output in name and description +`+" $Name, $Description = $_.Split(\"`t\",2)"+` + __%[1]s_debug "Name: $Name Description: $Description" + + # Look for the longest completion so that we can format things nicely + if ($Longest -lt $Name.Length) { + $Longest = $Name.Length + } + + # Set the description to a one space string if there is none set. + # This is needed because the CompletionResult does not accept an empty string as argument + if (-Not $Description) { + $Description = " " + } + @{Name="$Name";Description="$Description"} + } + + + $Space = " " + if (($Directive -band $ShellCompDirectiveNoSpace) -ne 0 ) { + # remove the space here + __%[1]s_debug "ShellCompDirectiveNoSpace is called" + $Space = "" + } + + if ((($Directive -band $ShellCompDirectiveFilterFileExt) -ne 0 ) -or + (($Directive -band $ShellCompDirectiveFilterDirs) -ne 0 )) { + __%[1]s_debug "ShellCompDirectiveFilterFileExt ShellCompDirectiveFilterDirs are not supported" + + # return here to prevent the completion of the extensions + return + } + + $Values = $Values | Where-Object { + # filter the result + $_.Name -like "$WordToComplete*" + + # Join the flag back if we have an equal sign flag + if ( $IsEqualFlag ) { + __%[1]s_debug "Join the equal sign flag back to the completion value" + $_.Name = $Flag + "=" + $_.Name + } + } + + # we sort the values in ascending order by name if keep order isn't passed + if (($Directive -band $ShellCompDirectiveKeepOrder) -eq 0 ) { + $Values = $Values | Sort-Object -Property Name + } + + if (($Directive -band $ShellCompDirectiveNoFileComp) -ne 0 ) { + __%[1]s_debug "ShellCompDirectiveNoFileComp is called" + + if ($Values.Length -eq 0) { + # Just print an empty string here so the + # shell does not start to complete paths. + # We cannot use CompletionResult here because + # it does not accept an empty string as argument. + "" + return + } + } + + # Get the current mode + $Mode = (Get-PSReadLineKeyHandler | Where-Object {$_.Key -eq "Tab" }).Function + __%[1]s_debug "Mode: $Mode" + + $Values | ForEach-Object { + + # store temporary because switch will overwrite $_ + $comp = $_ + + # PowerShell supports three different completion modes + # - TabCompleteNext (default windows style - on each key press the next option is displayed) + # - Complete (works like bash) + # - MenuComplete (works like zsh) + # You set the mode with Set-PSReadLineKeyHandler -Key Tab -Function + + # CompletionResult Arguments: + # 1) CompletionText text to be used as the auto completion result + # 2) ListItemText text to be displayed in the suggestion list + # 3) ResultType type of completion result + # 4) ToolTip text for the tooltip with details about the object + + switch ($Mode) { + + # bash like + "Complete" { + + if ($Values.Length -eq 1) { + __%[1]s_debug "Only one completion left" + + # insert space after value + [System.Management.Automation.CompletionResult]::new($($comp.Name | __%[1]s_escapeStringWithSpecialChars) + $Space, "$($comp.Name)", 'ParameterValue', "$($comp.Description)") + + } else { + # Add the proper number of spaces to align the descriptions + while($comp.Name.Length -lt $Longest) { + $comp.Name = $comp.Name + " " + } + + # Check for empty description and only add parentheses if needed + if ($($comp.Description) -eq " " ) { + $Description = "" + } else { + $Description = " ($($comp.Description))" + } + + [System.Management.Automation.CompletionResult]::new("$($comp.Name)$Description", "$($comp.Name)$Description", 'ParameterValue', "$($comp.Description)") + } + } + + # zsh like + "MenuComplete" { + # insert space after value + # MenuComplete will automatically show the ToolTip of + # the highlighted value at the bottom of the suggestions. + [System.Management.Automation.CompletionResult]::new($($comp.Name | __%[1]s_escapeStringWithSpecialChars) + $Space, "$($comp.Name)", 'ParameterValue', "$($comp.Description)") + } + + # TabCompleteNext and in case we get something unknown + Default { + # Like MenuComplete but we don't want to add a space here because + # the user need to press space anyway to get the completion. + # Description will not be shown because that's not possible with TabCompleteNext + [System.Management.Automation.CompletionResult]::new($($comp.Name | __%[1]s_escapeStringWithSpecialChars), "$($comp.Name)", 'ParameterValue', "$($comp.Description)") + } + } + + } +} + +Register-ArgumentCompleter -CommandName '%[1]s' -ScriptBlock $__%[2]sCompleterBlock +`, name, nameForVar, compCmd, + ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp, + ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs, ShellCompDirectiveKeepOrder, activeHelpEnvVar(name))) +} + +func (c *Command) genPowerShellCompletion(w io.Writer, includeDesc bool) error { + buf := new(bytes.Buffer) + genPowerShellComp(buf, c.Name(), includeDesc) + _, err := buf.WriteTo(w) + return err +} + +func (c *Command) genPowerShellCompletionFile(filename string, includeDesc bool) error { + outFile, err := os.Create(filename) + if err != nil { + return err + } + defer outFile.Close() + + return c.genPowerShellCompletion(outFile, includeDesc) +} + +// GenPowerShellCompletionFile generates powershell completion file without descriptions. +func (c *Command) GenPowerShellCompletionFile(filename string) error { + return c.genPowerShellCompletionFile(filename, false) +} + +// GenPowerShellCompletion generates powershell completion file without descriptions +// and writes it to the passed writer. +func (c *Command) GenPowerShellCompletion(w io.Writer) error { + return c.genPowerShellCompletion(w, false) +} + +// GenPowerShellCompletionFileWithDesc generates powershell completion file with descriptions. +func (c *Command) GenPowerShellCompletionFileWithDesc(filename string) error { + return c.genPowerShellCompletionFile(filename, true) +} + +// GenPowerShellCompletionWithDesc generates powershell completion file with descriptions +// and writes it to the passed writer. +func (c *Command) GenPowerShellCompletionWithDesc(w io.Writer) error { + return c.genPowerShellCompletion(w, true) +} diff --git a/vendor/github.com/spf13/cobra/powershell_completions.md b/vendor/github.com/spf13/cobra/powershell_completions.md new file mode 100644 index 0000000000..c449f1e5c0 --- /dev/null +++ b/vendor/github.com/spf13/cobra/powershell_completions.md @@ -0,0 +1,3 @@ +# Generating PowerShell Completions For Your Own cobra.Command + +Please refer to [Shell Completions](shell_completions.md#powershell-completions) for details. diff --git a/vendor/github.com/spf13/cobra/projects_using_cobra.md b/vendor/github.com/spf13/cobra/projects_using_cobra.md new file mode 100644 index 0000000000..8a291eb20e --- /dev/null +++ b/vendor/github.com/spf13/cobra/projects_using_cobra.md @@ -0,0 +1,64 @@ +## Projects using Cobra + +- [Allero](https://github.com/allero-io/allero) +- [Arewefastyet](https://benchmark.vitess.io) +- [Arduino CLI](https://github.com/arduino/arduino-cli) +- [Bleve](https://blevesearch.com/) +- [Cilium](https://cilium.io/) +- [CloudQuery](https://github.com/cloudquery/cloudquery) +- [CockroachDB](https://www.cockroachlabs.com/) +- [Constellation](https://github.com/edgelesssys/constellation) +- [Cosmos SDK](https://github.com/cosmos/cosmos-sdk) +- [Datree](https://github.com/datreeio/datree) +- [Delve](https://github.com/derekparker/delve) +- [Docker (distribution)](https://github.com/docker/distribution) +- [Etcd](https://etcd.io/) +- [Gardener](https://github.com/gardener/gardenctl) +- [Giant Swarm's gsctl](https://github.com/giantswarm/gsctl) +- [Git Bump](https://github.com/erdaltsksn/git-bump) +- [GitHub CLI](https://github.com/cli/cli) +- [GitHub Labeler](https://github.com/erdaltsksn/gh-label) +- [Golangci-lint](https://golangci-lint.run) +- [GopherJS](https://github.com/gopherjs/gopherjs) +- [GoReleaser](https://goreleaser.com) +- [Helm](https://helm.sh) +- [Hugo](https://gohugo.io) +- [Infracost](https://github.com/infracost/infracost) +- [Istio](https://istio.io) +- [Kool](https://github.com/kool-dev/kool) +- [Kubernetes](https://kubernetes.io/) +- [Kubescape](https://github.com/kubescape/kubescape) +- [KubeVirt](https://github.com/kubevirt/kubevirt) +- [Linkerd](https://linkerd.io/) +- [Mattermost-server](https://github.com/mattermost/mattermost-server) +- [Mercure](https://mercure.rocks/) +- [Meroxa CLI](https://github.com/meroxa/cli) +- [Metal Stack CLI](https://github.com/metal-stack/metalctl) +- [Moby (former Docker)](https://github.com/moby/moby) +- [Moldy](https://github.com/Moldy-Community/moldy) +- [Multi-gitter](https://github.com/lindell/multi-gitter) +- [Nanobox](https://github.com/nanobox-io/nanobox)/[Nanopack](https://github.com/nanopack) +- [nFPM](https://nfpm.goreleaser.com) +- [Okteto](https://github.com/okteto/okteto) +- [OpenShift](https://www.openshift.com/) +- [Ory Hydra](https://github.com/ory/hydra) +- [Ory Kratos](https://github.com/ory/kratos) +- [Pixie](https://github.com/pixie-io/pixie) +- [Polygon Edge](https://github.com/0xPolygon/polygon-edge) +- [Pouch](https://github.com/alibaba/pouch) +- [ProjectAtomic (enterprise)](https://www.projectatomic.io/) +- [Prototool](https://github.com/uber/prototool) +- [Pulumi](https://www.pulumi.com) +- [QRcp](https://github.com/claudiodangelis/qrcp) +- [Random](https://github.com/erdaltsksn/random) +- [Rclone](https://rclone.org/) +- [Scaleway CLI](https://github.com/scaleway/scaleway-cli) +- [Sia](https://github.com/SiaFoundation/siad) +- [Skaffold](https://skaffold.dev/) +- [Tendermint](https://github.com/tendermint/tendermint) +- [Twitch CLI](https://github.com/twitchdev/twitch-cli) +- [UpCloud CLI (`upctl`)](https://github.com/UpCloudLtd/upcloud-cli) +- [Vitess](https://vitess.io) +- VMware's [Tanzu Community Edition](https://github.com/vmware-tanzu/community-edition) & [Tanzu Framework](https://github.com/vmware-tanzu/tanzu-framework) +- [Werf](https://werf.io/) +- [ZITADEL](https://github.com/zitadel/zitadel) diff --git a/vendor/github.com/spf13/cobra/shell_completions.go b/vendor/github.com/spf13/cobra/shell_completions.go new file mode 100644 index 0000000000..b035742d39 --- /dev/null +++ b/vendor/github.com/spf13/cobra/shell_completions.go @@ -0,0 +1,98 @@ +// Copyright 2013-2023 The Cobra Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cobra + +import ( + "github.com/spf13/pflag" +) + +// MarkFlagRequired instructs the various shell completion implementations to +// prioritize the named flag when performing completion, +// and causes your command to report an error if invoked without the flag. +func (c *Command) MarkFlagRequired(name string) error { + return MarkFlagRequired(c.Flags(), name) +} + +// MarkPersistentFlagRequired instructs the various shell completion implementations to +// prioritize the named persistent flag when performing completion, +// and causes your command to report an error if invoked without the flag. +func (c *Command) MarkPersistentFlagRequired(name string) error { + return MarkFlagRequired(c.PersistentFlags(), name) +} + +// MarkFlagRequired instructs the various shell completion implementations to +// prioritize the named flag when performing completion, +// and causes your command to report an error if invoked without the flag. +func MarkFlagRequired(flags *pflag.FlagSet, name string) error { + return flags.SetAnnotation(name, BashCompOneRequiredFlag, []string{"true"}) +} + +// MarkFlagFilename instructs the various shell completion implementations to +// limit completions for the named flag to the specified file extensions. +func (c *Command) MarkFlagFilename(name string, extensions ...string) error { + return MarkFlagFilename(c.Flags(), name, extensions...) +} + +// MarkFlagCustom adds the BashCompCustom annotation to the named flag, if it exists. +// The bash completion script will call the bash function f for the flag. +// +// This will only work for bash completion. +// It is recommended to instead use c.RegisterFlagCompletionFunc(...) which allows +// to register a Go function which will work across all shells. +func (c *Command) MarkFlagCustom(name string, f string) error { + return MarkFlagCustom(c.Flags(), name, f) +} + +// MarkPersistentFlagFilename instructs the various shell completion +// implementations to limit completions for the named persistent flag to the +// specified file extensions. +func (c *Command) MarkPersistentFlagFilename(name string, extensions ...string) error { + return MarkFlagFilename(c.PersistentFlags(), name, extensions...) +} + +// MarkFlagFilename instructs the various shell completion implementations to +// limit completions for the named flag to the specified file extensions. +func MarkFlagFilename(flags *pflag.FlagSet, name string, extensions ...string) error { + return flags.SetAnnotation(name, BashCompFilenameExt, extensions) +} + +// MarkFlagCustom adds the BashCompCustom annotation to the named flag, if it exists. +// The bash completion script will call the bash function f for the flag. +// +// This will only work for bash completion. +// It is recommended to instead use c.RegisterFlagCompletionFunc(...) which allows +// to register a Go function which will work across all shells. +func MarkFlagCustom(flags *pflag.FlagSet, name string, f string) error { + return flags.SetAnnotation(name, BashCompCustom, []string{f}) +} + +// MarkFlagDirname instructs the various shell completion implementations to +// limit completions for the named flag to directory names. +func (c *Command) MarkFlagDirname(name string) error { + return MarkFlagDirname(c.Flags(), name) +} + +// MarkPersistentFlagDirname instructs the various shell completion +// implementations to limit completions for the named persistent flag to +// directory names. +func (c *Command) MarkPersistentFlagDirname(name string) error { + return MarkFlagDirname(c.PersistentFlags(), name) +} + +// MarkFlagDirname instructs the various shell completion implementations to +// limit completions for the named flag to directory names. +func MarkFlagDirname(flags *pflag.FlagSet, name string) error { + return flags.SetAnnotation(name, BashCompSubdirsInDir, []string{}) +} diff --git a/vendor/github.com/spf13/cobra/shell_completions.md b/vendor/github.com/spf13/cobra/shell_completions.md new file mode 100644 index 0000000000..065c0621d4 --- /dev/null +++ b/vendor/github.com/spf13/cobra/shell_completions.md @@ -0,0 +1,576 @@ +# Generating shell completions + +Cobra can generate shell completions for multiple shells. +The currently supported shells are: +- Bash +- Zsh +- fish +- PowerShell + +Cobra will automatically provide your program with a fully functional `completion` command, +similarly to how it provides the `help` command. + +## Creating your own completion command + +If you do not wish to use the default `completion` command, you can choose to +provide your own, which will take precedence over the default one. (This also provides +backwards-compatibility with programs that already have their own `completion` command.) + +If you are using the `cobra-cli` generator, +which can be found at [spf13/cobra-cli](https://github.com/spf13/cobra-cli), +you can create a completion command by running + +```bash +cobra-cli add completion +``` +and then modifying the generated `cmd/completion.go` file to look something like this +(writing the shell script to stdout allows the most flexible use): + +```go +var completionCmd = &cobra.Command{ + Use: "completion [bash|zsh|fish|powershell]", + Short: "Generate completion script", + Long: fmt.Sprintf(`To load completions: + +Bash: + + $ source <(%[1]s completion bash) + + # To load completions for each session, execute once: + # Linux: + $ %[1]s completion bash > /etc/bash_completion.d/%[1]s + # macOS: + $ %[1]s completion bash > $(brew --prefix)/etc/bash_completion.d/%[1]s + +Zsh: + + # If shell completion is not already enabled in your environment, + # you will need to enable it. You can execute the following once: + + $ echo "autoload -U compinit; compinit" >> ~/.zshrc + + # To load completions for each session, execute once: + $ %[1]s completion zsh > "${fpath[1]}/_%[1]s" + + # You will need to start a new shell for this setup to take effect. + +fish: + + $ %[1]s completion fish | source + + # To load completions for each session, execute once: + $ %[1]s completion fish > ~/.config/fish/completions/%[1]s.fish + +PowerShell: + + PS> %[1]s completion powershell | Out-String | Invoke-Expression + + # To load completions for every new session, run: + PS> %[1]s completion powershell > %[1]s.ps1 + # and source this file from your PowerShell profile. +`,cmd.Root().Name()), + DisableFlagsInUseLine: true, + ValidArgs: []string{"bash", "zsh", "fish", "powershell"}, + Args: cobra.MatchAll(cobra.ExactArgs(1), cobra.OnlyValidArgs), + Run: func(cmd *cobra.Command, args []string) { + switch args[0] { + case "bash": + cmd.Root().GenBashCompletion(os.Stdout) + case "zsh": + cmd.Root().GenZshCompletion(os.Stdout) + case "fish": + cmd.Root().GenFishCompletion(os.Stdout, true) + case "powershell": + cmd.Root().GenPowerShellCompletionWithDesc(os.Stdout) + } + }, +} +``` + +**Note:** The cobra generator may include messages printed to stdout, for example, if the config file is loaded; this will break the auto-completion script so must be removed. + +## Adapting the default completion command + +Cobra provides a few options for the default `completion` command. To configure such options you must set +the `CompletionOptions` field on the *root* command. + +To tell Cobra *not* to provide the default `completion` command: +``` +rootCmd.CompletionOptions.DisableDefaultCmd = true +``` + +To tell Cobra to mark the default `completion` command as *hidden*: +``` +rootCmd.CompletionOptions.HiddenDefaultCmd = true +``` + +To tell Cobra *not* to provide the user with the `--no-descriptions` flag to the completion sub-commands: +``` +rootCmd.CompletionOptions.DisableNoDescFlag = true +``` + +To tell Cobra to completely disable descriptions for completions: +``` +rootCmd.CompletionOptions.DisableDescriptions = true +``` + +# Customizing completions + +The generated completion scripts will automatically handle completing commands and flags. However, you can make your completions much more powerful by providing information to complete your program's nouns and flag values. + +## Completion of nouns + +### Static completion of nouns + +Cobra allows you to provide a pre-defined list of completion choices for your nouns using the `ValidArgs` field. +For example, if you want `kubectl get [tab][tab]` to show a list of valid "nouns" you have to set them. +Some simplified code from `kubectl get` looks like: + +```go +validArgs = []string{ "pod", "node", "service", "replicationcontroller" } + +cmd := &cobra.Command{ + Use: "get [(-o|--output=)json|yaml|template|...] (RESOURCE [NAME] | RESOURCE/NAME ...)", + Short: "Display one or many resources", + Long: get_long, + Example: get_example, + Run: func(cmd *cobra.Command, args []string) { + cobra.CheckErr(RunGet(f, out, cmd, args)) + }, + ValidArgs: validArgs, +} +``` + +Notice we put the `ValidArgs` field on the `get` sub-command. Doing so will give results like: + +```bash +$ kubectl get [tab][tab] +node pod replicationcontroller service +``` + +#### Aliases for nouns + +If your nouns have aliases, you can define them alongside `ValidArgs` using `ArgAliases`: + +```go +argAliases = []string { "pods", "nodes", "services", "svc", "replicationcontrollers", "rc" } + +cmd := &cobra.Command{ + ... + ValidArgs: validArgs, + ArgAliases: argAliases +} +``` + +The aliases are shown to the user on tab completion only if no completions were found within sub-commands or `ValidArgs`. + +### Dynamic completion of nouns + +In some cases it is not possible to provide a list of completions in advance. Instead, the list of completions must be determined at execution-time. In a similar fashion as for static completions, you can use the `ValidArgsFunction` field to provide a Go function that Cobra will execute when it needs the list of completion choices for the nouns of a command. Note that either `ValidArgs` or `ValidArgsFunction` can be used for a single cobra command, but not both. +Simplified code from `helm status` looks like: + +```go +cmd := &cobra.Command{ + Use: "status RELEASE_NAME", + Short: "Display the status of the named release", + Long: status_long, + RunE: func(cmd *cobra.Command, args []string) { + RunGet(args[0]) + }, + ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + if len(args) != 0 { + return nil, cobra.ShellCompDirectiveNoFileComp + } + return getReleasesFromCluster(toComplete), cobra.ShellCompDirectiveNoFileComp + }, +} +``` +Where `getReleasesFromCluster()` is a Go function that obtains the list of current Helm releases running on the Kubernetes cluster. +Notice we put the `ValidArgsFunction` on the `status` sub-command. Let's assume the Helm releases on the cluster are: `harbor`, `notary`, `rook` and `thanos` then this dynamic completion will give results like: + +```bash +$ helm status [tab][tab] +harbor notary rook thanos +``` +You may have noticed the use of `cobra.ShellCompDirective`. These directives are bit fields allowing to control some shell completion behaviors for your particular completion. You can combine them with the bit-or operator such as `cobra.ShellCompDirectiveNoSpace | cobra.ShellCompDirectiveNoFileComp` +```go +// Indicates that the shell will perform its default behavior after completions +// have been provided (this implies none of the other directives). +ShellCompDirectiveDefault + +// Indicates an error occurred and completions should be ignored. +ShellCompDirectiveError + +// Indicates that the shell should not add a space after the completion, +// even if there is a single completion provided. +ShellCompDirectiveNoSpace + +// Indicates that the shell should not provide file completion even when +// no completion is provided. +ShellCompDirectiveNoFileComp + +// Indicates that the returned completions should be used as file extension filters. +// For example, to complete only files of the form *.json or *.yaml: +// return []string{"yaml", "json"}, ShellCompDirectiveFilterFileExt +// For flags, using MarkFlagFilename() and MarkPersistentFlagFilename() +// is a shortcut to using this directive explicitly. +// +ShellCompDirectiveFilterFileExt + +// Indicates that only directory names should be provided in file completion. +// For example: +// return nil, ShellCompDirectiveFilterDirs +// For flags, using MarkFlagDirname() is a shortcut to using this directive explicitly. +// +// To request directory names within another directory, the returned completions +// should specify a single directory name within which to search. For example, +// to complete directories within "themes/": +// return []string{"themes"}, ShellCompDirectiveFilterDirs +// +ShellCompDirectiveFilterDirs + +// ShellCompDirectiveKeepOrder indicates that the shell should preserve the order +// in which the completions are provided +ShellCompDirectiveKeepOrder +``` + +***Note***: When using the `ValidArgsFunction`, Cobra will call your registered function after having parsed all flags and arguments provided in the command-line. You therefore don't need to do this parsing yourself. For example, when a user calls `helm status --namespace my-rook-ns [tab][tab]`, Cobra will call your registered `ValidArgsFunction` after having parsed the `--namespace` flag, as it would have done when calling the `RunE` function. + +#### Debugging + +Cobra achieves dynamic completion through the use of a hidden command called by the completion script. To debug your Go completion code, you can call this hidden command directly: +```bash +$ helm __complete status har +harbor +:4 +Completion ended with directive: ShellCompDirectiveNoFileComp # This is on stderr +``` +***Important:*** If the noun to complete is empty (when the user has not yet typed any letters of that noun), you must pass an empty parameter to the `__complete` command: +```bash +$ helm __complete status "" +harbor +notary +rook +thanos +:4 +Completion ended with directive: ShellCompDirectiveNoFileComp # This is on stderr +``` +Calling the `__complete` command directly allows you to run the Go debugger to troubleshoot your code. You can also add printouts to your code; Cobra provides the following functions to use for printouts in Go completion code: +```go +// Prints to the completion script debug file (if BASH_COMP_DEBUG_FILE +// is set to a file path) and optionally prints to stderr. +cobra.CompDebug(msg string, printToStdErr bool) { +cobra.CompDebugln(msg string, printToStdErr bool) + +// Prints to the completion script debug file (if BASH_COMP_DEBUG_FILE +// is set to a file path) and to stderr. +cobra.CompError(msg string) +cobra.CompErrorln(msg string) +``` +***Important:*** You should **not** leave traces that print directly to stdout in your completion code as they will be interpreted as completion choices by the completion script. Instead, use the cobra-provided debugging traces functions mentioned above. + +## Completions for flags + +### Mark flags as required + +Most of the time completions will only show sub-commands. But if a flag is required to make a sub-command work, you probably want it to show up when the user types [tab][tab]. You can mark a flag as 'Required' like so: + +```go +cmd.MarkFlagRequired("pod") +cmd.MarkFlagRequired("container") +``` + +and you'll get something like + +```bash +$ kubectl exec [tab][tab] +-c --container= -p --pod= +``` + +### Specify dynamic flag completion + +As for nouns, Cobra provides a way of defining dynamic completion of flags. To provide a Go function that Cobra will execute when it needs the list of completion choices for a flag, you must register the function using the `command.RegisterFlagCompletionFunc()` function. + +```go +flagName := "output" +cmd.RegisterFlagCompletionFunc(flagName, func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + return []string{"json", "table", "yaml"}, cobra.ShellCompDirectiveDefault +}) +``` +Notice that calling `RegisterFlagCompletionFunc()` is done through the `command` with which the flag is associated. In our example this dynamic completion will give results like so: + +```bash +$ helm status --output [tab][tab] +json table yaml +``` + +#### Debugging + +You can also easily debug your Go completion code for flags: +```bash +$ helm __complete status --output "" +json +table +yaml +:4 +Completion ended with directive: ShellCompDirectiveNoFileComp # This is on stderr +``` +***Important:*** You should **not** leave traces that print to stdout in your completion code as they will be interpreted as completion choices by the completion script. Instead, use the cobra-provided debugging traces functions mentioned further above. + +### Specify valid filename extensions for flags that take a filename + +To limit completions of flag values to file names with certain extensions you can either use the different `MarkFlagFilename()` functions or a combination of `RegisterFlagCompletionFunc()` and `ShellCompDirectiveFilterFileExt`, like so: +```go +flagName := "output" +cmd.MarkFlagFilename(flagName, "yaml", "json") +``` +or +```go +flagName := "output" +cmd.RegisterFlagCompletionFunc(flagName, func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + return []string{"yaml", "json"}, ShellCompDirectiveFilterFileExt}) +``` + +### Limit flag completions to directory names + +To limit completions of flag values to directory names you can either use the `MarkFlagDirname()` functions or a combination of `RegisterFlagCompletionFunc()` and `ShellCompDirectiveFilterDirs`, like so: +```go +flagName := "output" +cmd.MarkFlagDirname(flagName) +``` +or +```go +flagName := "output" +cmd.RegisterFlagCompletionFunc(flagName, func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + return nil, cobra.ShellCompDirectiveFilterDirs +}) +``` +To limit completions of flag values to directory names *within another directory* you can use a combination of `RegisterFlagCompletionFunc()` and `ShellCompDirectiveFilterDirs` like so: +```go +flagName := "output" +cmd.RegisterFlagCompletionFunc(flagName, func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + return []string{"themes"}, cobra.ShellCompDirectiveFilterDirs +}) +``` +### Descriptions for completions + +Cobra provides support for completion descriptions. Such descriptions are supported for each shell +(however, for bash, it is only available in the [completion V2 version](#bash-completion-v2)). +For commands and flags, Cobra will provide the descriptions automatically, based on usage information. +For example, using zsh: +``` +$ helm s[tab] +search -- search for a keyword in charts +show -- show information of a chart +status -- displays the status of the named release +``` +while using fish: +``` +$ helm s[tab] +search (search for a keyword in charts) show (show information of a chart) status (displays the status of the named release) +``` + +Cobra allows you to add descriptions to your own completions. Simply add the description text after each completion, following a `\t` separator. This technique applies to completions returned by `ValidArgs`, `ValidArgsFunction` and `RegisterFlagCompletionFunc()`. For example: +```go +ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + return []string{"harbor\tAn image registry", "thanos\tLong-term metrics"}, cobra.ShellCompDirectiveNoFileComp +}} +``` +or +```go +ValidArgs: []string{"bash\tCompletions for bash", "zsh\tCompletions for zsh"} +``` + +If you don't want to show descriptions in the completions, you can add `--no-descriptions` to the default `completion` command to disable them, like: + +```bash +$ source <(helm completion bash) +$ helm completion [tab][tab] +bash (generate autocompletion script for bash) powershell (generate autocompletion script for powershell) +fish (generate autocompletion script for fish) zsh (generate autocompletion script for zsh) + +$ source <(helm completion bash --no-descriptions) +$ helm completion [tab][tab] +bash fish powershell zsh +``` +## Bash completions + +### Dependencies + +The bash completion script generated by Cobra requires the `bash_completion` package. You should update the help text of your completion command to show how to install the `bash_completion` package ([Kubectl docs](https://kubernetes.io/docs/tasks/tools/install-kubectl/#enabling-shell-autocompletion)) + +### Aliases + +You can also configure `bash` aliases for your program and they will also support completions. + +```bash +alias aliasname=origcommand +complete -o default -F __start_origcommand aliasname + +# and now when you run `aliasname` completion will make +# suggestions as it did for `origcommand`. + +$ aliasname +completion firstcommand secondcommand +``` +### Bash legacy dynamic completions + +For backward compatibility, Cobra still supports its bash legacy dynamic completion solution. +Please refer to [Bash Completions](bash_completions.md) for details. + +### Bash completion V2 + +Cobra provides two versions for bash completion. The original bash completion (which started it all!) can be used by calling +`GenBashCompletion()` or `GenBashCompletionFile()`. + +A new V2 bash completion version is also available. This version can be used by calling `GenBashCompletionV2()` or +`GenBashCompletionFileV2()`. The V2 version does **not** support the legacy dynamic completion +(see [Bash Completions](bash_completions.md)) but instead works only with the Go dynamic completion +solution described in this document. +Unless your program already uses the legacy dynamic completion solution, it is recommended that you use the bash +completion V2 solution which provides the following extra features: +- Supports completion descriptions (like the other shells) +- Small completion script of less than 300 lines (v1 generates scripts of thousands of lines; `kubectl` for example has a bash v1 completion script of over 13K lines) +- Streamlined user experience thanks to a completion behavior aligned with the other shells + +`Bash` completion V2 supports descriptions for completions. When calling `GenBashCompletionV2()` or `GenBashCompletionFileV2()` +you must provide these functions with a parameter indicating if the completions should be annotated with a description; Cobra +will provide the description automatically based on usage information. You can choose to make this option configurable by +your users. + +``` +# With descriptions +$ helm s[tab][tab] +search (search for a keyword in charts) status (display the status of the named release) +show (show information of a chart) + +# Without descriptions +$ helm s[tab][tab] +search show status +``` +**Note**: Cobra's default `completion` command uses bash completion V2. If for some reason you need to use bash completion V1, you will need to implement your own `completion` command. +## Zsh completions + +Cobra supports native zsh completion generated from the root `cobra.Command`. +The generated completion script should be put somewhere in your `$fpath` and be named +`_`. You will need to start a new shell for the completions to become available. + +Zsh supports descriptions for completions. Cobra will provide the description automatically, +based on usage information. Cobra provides a way to completely disable such descriptions by +using `GenZshCompletionNoDesc()` or `GenZshCompletionFileNoDesc()`. You can choose to make +this a configurable option to your users. +``` +# With descriptions +$ helm s[tab] +search -- search for a keyword in charts +show -- show information of a chart +status -- displays the status of the named release + +# Without descriptions +$ helm s[tab] +search show status +``` +*Note*: Because of backward-compatibility requirements, we were forced to have a different API to disable completion descriptions between `zsh` and `fish`. + +### Limitations + +* Custom completions implemented in Bash scripting (legacy) are not supported and will be ignored for `zsh` (including the use of the `BashCompCustom` flag annotation). + * You should instead use `ValidArgsFunction` and `RegisterFlagCompletionFunc()` which are portable to the different shells (`bash`, `zsh`, `fish`, `powershell`). +* The function `MarkFlagCustom()` is not supported and will be ignored for `zsh`. + * You should instead use `RegisterFlagCompletionFunc()`. + +### Zsh completions standardization + +Cobra 1.1 standardized its zsh completion support to align it with its other shell completions. Although the API was kept backward-compatible, some small changes in behavior were introduced. +Please refer to [Zsh Completions](zsh_completions.md) for details. + +## fish completions + +Cobra supports native fish completions generated from the root `cobra.Command`. You can use the `command.GenFishCompletion()` or `command.GenFishCompletionFile()` functions. You must provide these functions with a parameter indicating if the completions should be annotated with a description; Cobra will provide the description automatically based on usage information. You can choose to make this option configurable by your users. +``` +# With descriptions +$ helm s[tab] +search (search for a keyword in charts) show (show information of a chart) status (displays the status of the named release) + +# Without descriptions +$ helm s[tab] +search show status +``` +*Note*: Because of backward-compatibility requirements, we were forced to have a different API to disable completion descriptions between `zsh` and `fish`. + +### Limitations + +* Custom completions implemented in bash scripting (legacy) are not supported and will be ignored for `fish` (including the use of the `BashCompCustom` flag annotation). + * You should instead use `ValidArgsFunction` and `RegisterFlagCompletionFunc()` which are portable to the different shells (`bash`, `zsh`, `fish`, `powershell`). +* The function `MarkFlagCustom()` is not supported and will be ignored for `fish`. + * You should instead use `RegisterFlagCompletionFunc()`. +* The following flag completion annotations are not supported and will be ignored for `fish`: + * `BashCompFilenameExt` (filtering by file extension) + * `BashCompSubdirsInDir` (filtering by directory) +* The functions corresponding to the above annotations are consequently not supported and will be ignored for `fish`: + * `MarkFlagFilename()` and `MarkPersistentFlagFilename()` (filtering by file extension) + * `MarkFlagDirname()` and `MarkPersistentFlagDirname()` (filtering by directory) +* Similarly, the following completion directives are not supported and will be ignored for `fish`: + * `ShellCompDirectiveFilterFileExt` (filtering by file extension) + * `ShellCompDirectiveFilterDirs` (filtering by directory) + +## PowerShell completions + +Cobra supports native PowerShell completions generated from the root `cobra.Command`. You can use the `command.GenPowerShellCompletion()` or `command.GenPowerShellCompletionFile()` functions. To include descriptions use `command.GenPowerShellCompletionWithDesc()` and `command.GenPowerShellCompletionFileWithDesc()`. Cobra will provide the description automatically based on usage information. You can choose to make this option configurable by your users. + +The script is designed to support all three PowerShell completion modes: + +* TabCompleteNext (default windows style - on each key press the next option is displayed) +* Complete (works like bash) +* MenuComplete (works like zsh) + +You set the mode with `Set-PSReadLineKeyHandler -Key Tab -Function `. Descriptions are only displayed when using the `Complete` or `MenuComplete` mode. + +Users need PowerShell version 5.0 or above, which comes with Windows 10 and can be downloaded separately for Windows 7 or 8.1. They can then write the completions to a file and source this file from their PowerShell profile, which is referenced by the `$Profile` environment variable. See `Get-Help about_Profiles` for more info about PowerShell profiles. + +``` +# With descriptions and Mode 'Complete' +$ helm s[tab] +search (search for a keyword in charts) show (show information of a chart) status (displays the status of the named release) + +# With descriptions and Mode 'MenuComplete' The description of the current selected value will be displayed below the suggestions. +$ helm s[tab] +search show status + +search for a keyword in charts + +# Without descriptions +$ helm s[tab] +search show status +``` +### Aliases + +You can also configure `powershell` aliases for your program and they will also support completions. + +``` +$ sal aliasname origcommand +$ Register-ArgumentCompleter -CommandName 'aliasname' -ScriptBlock $__origcommandCompleterBlock + +# and now when you run `aliasname` completion will make +# suggestions as it did for `origcommand`. + +$ aliasname +completion firstcommand secondcommand +``` +The name of the completer block variable is of the form `$__CompleterBlock` where every `-` and `:` in the program name have been replaced with `_`, to respect powershell naming syntax. + +### Limitations + +* Custom completions implemented in bash scripting (legacy) are not supported and will be ignored for `powershell` (including the use of the `BashCompCustom` flag annotation). + * You should instead use `ValidArgsFunction` and `RegisterFlagCompletionFunc()` which are portable to the different shells (`bash`, `zsh`, `fish`, `powershell`). +* The function `MarkFlagCustom()` is not supported and will be ignored for `powershell`. + * You should instead use `RegisterFlagCompletionFunc()`. +* The following flag completion annotations are not supported and will be ignored for `powershell`: + * `BashCompFilenameExt` (filtering by file extension) + * `BashCompSubdirsInDir` (filtering by directory) +* The functions corresponding to the above annotations are consequently not supported and will be ignored for `powershell`: + * `MarkFlagFilename()` and `MarkPersistentFlagFilename()` (filtering by file extension) + * `MarkFlagDirname()` and `MarkPersistentFlagDirname()` (filtering by directory) +* Similarly, the following completion directives are not supported and will be ignored for `powershell`: + * `ShellCompDirectiveFilterFileExt` (filtering by file extension) + * `ShellCompDirectiveFilterDirs` (filtering by directory) diff --git a/vendor/github.com/spf13/cobra/user_guide.md b/vendor/github.com/spf13/cobra/user_guide.md new file mode 100644 index 0000000000..85201d840c --- /dev/null +++ b/vendor/github.com/spf13/cobra/user_guide.md @@ -0,0 +1,726 @@ +# User Guide + +While you are welcome to provide your own organization, typically a Cobra-based +application will follow the following organizational structure: + +``` + ▾ appName/ + ▾ cmd/ + add.go + your.go + commands.go + here.go + main.go +``` + +In a Cobra app, typically the main.go file is very bare. It serves one purpose: initializing Cobra. + +```go +package main + +import ( + "{pathToYourApp}/cmd" +) + +func main() { + cmd.Execute() +} +``` + +## Using the Cobra Generator + +Cobra-CLI is its own program that will create your application and add any +commands you want. It's the easiest way to incorporate Cobra into your application. + +For complete details on using the Cobra generator, please refer to [The Cobra-CLI Generator README](https://github.com/spf13/cobra-cli/blob/main/README.md) + +## Using the Cobra Library + +To manually implement Cobra you need to create a bare main.go file and a rootCmd file. +You will optionally provide additional commands as you see fit. + +### Create rootCmd + +Cobra doesn't require any special constructors. Simply create your commands. + +Ideally you place this in app/cmd/root.go: + +```go +var rootCmd = &cobra.Command{ + Use: "hugo", + Short: "Hugo is a very fast static site generator", + Long: `A Fast and Flexible Static Site Generator built with + love by spf13 and friends in Go. + Complete documentation is available at https://gohugo.io/documentation/`, + Run: func(cmd *cobra.Command, args []string) { + // Do Stuff Here + }, +} + +func Execute() { + if err := rootCmd.Execute(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} +``` + +You will additionally define flags and handle configuration in your init() function. + +For example cmd/root.go: + +```go +package cmd + +import ( + "fmt" + "os" + + "github.com/spf13/cobra" + "github.com/spf13/viper" +) + +var ( + // Used for flags. + cfgFile string + userLicense string + + rootCmd = &cobra.Command{ + Use: "cobra-cli", + Short: "A generator for Cobra based Applications", + Long: `Cobra is a CLI library for Go that empowers applications. +This application is a tool to generate the needed files +to quickly create a Cobra application.`, + } +) + +// Execute executes the root command. +func Execute() error { + return rootCmd.Execute() +} + +func init() { + cobra.OnInitialize(initConfig) + + rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.cobra.yaml)") + rootCmd.PersistentFlags().StringP("author", "a", "YOUR NAME", "author name for copyright attribution") + rootCmd.PersistentFlags().StringVarP(&userLicense, "license", "l", "", "name of license for the project") + rootCmd.PersistentFlags().Bool("viper", true, "use Viper for configuration") + viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author")) + viper.BindPFlag("useViper", rootCmd.PersistentFlags().Lookup("viper")) + viper.SetDefault("author", "NAME HERE ") + viper.SetDefault("license", "apache") + + rootCmd.AddCommand(addCmd) + rootCmd.AddCommand(initCmd) +} + +func initConfig() { + if cfgFile != "" { + // Use config file from the flag. + viper.SetConfigFile(cfgFile) + } else { + // Find home directory. + home, err := os.UserHomeDir() + cobra.CheckErr(err) + + // Search config in home directory with name ".cobra" (without extension). + viper.AddConfigPath(home) + viper.SetConfigType("yaml") + viper.SetConfigName(".cobra") + } + + viper.AutomaticEnv() + + if err := viper.ReadInConfig(); err == nil { + fmt.Println("Using config file:", viper.ConfigFileUsed()) + } +} +``` + +### Create your main.go + +With the root command you need to have your main function execute it. +Execute should be run on the root for clarity, though it can be called on any command. + +In a Cobra app, typically the main.go file is very bare. It serves one purpose: to initialize Cobra. + +```go +package main + +import ( + "{pathToYourApp}/cmd" +) + +func main() { + cmd.Execute() +} +``` + +### Create additional commands + +Additional commands can be defined and typically are each given their own file +inside of the cmd/ directory. + +If you wanted to create a version command you would create cmd/version.go and +populate it with the following: + +```go +package cmd + +import ( + "fmt" + + "github.com/spf13/cobra" +) + +func init() { + rootCmd.AddCommand(versionCmd) +} + +var versionCmd = &cobra.Command{ + Use: "version", + Short: "Print the version number of Hugo", + Long: `All software has versions. This is Hugo's`, + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Hugo Static Site Generator v0.9 -- HEAD") + }, +} +``` + +### Organizing subcommands + +A command may have subcommands which in turn may have other subcommands. This is achieved by using +`AddCommand`. In some cases, especially in larger applications, each subcommand may be defined in +its own go package. + +The suggested approach is for the parent command to use `AddCommand` to add its most immediate +subcommands. For example, consider the following directory structure: + +```text +├── cmd +│   ├── root.go +│   └── sub1 +│   ├── sub1.go +│   └── sub2 +│   ├── leafA.go +│   ├── leafB.go +│   └── sub2.go +└── main.go +``` + +In this case: + +* The `init` function of `root.go` adds the command defined in `sub1.go` to the root command. +* The `init` function of `sub1.go` adds the command defined in `sub2.go` to the sub1 command. +* The `init` function of `sub2.go` adds the commands defined in `leafA.go` and `leafB.go` to the + sub2 command. + +This approach ensures the subcommands are always included at compile time while avoiding cyclic +references. + +### Returning and handling errors + +If you wish to return an error to the caller of a command, `RunE` can be used. + +```go +package cmd + +import ( + "fmt" + + "github.com/spf13/cobra" +) + +func init() { + rootCmd.AddCommand(tryCmd) +} + +var tryCmd = &cobra.Command{ + Use: "try", + Short: "Try and possibly fail at something", + RunE: func(cmd *cobra.Command, args []string) error { + if err := someFunc(); err != nil { + return err + } + return nil + }, +} +``` + +The error can then be caught at the execute function call. + +## Working with Flags + +Flags provide modifiers to control how the action command operates. + +### Assign flags to a command + +Since the flags are defined and used in different locations, we need to +define a variable outside with the correct scope to assign the flag to +work with. + +```go +var Verbose bool +var Source string +``` + +There are two different approaches to assign a flag. + +### Persistent Flags + +A flag can be 'persistent', meaning that this flag will be available to the +command it's assigned to as well as every command under that command. For +global flags, assign a flag as a persistent flag on the root. + +```go +rootCmd.PersistentFlags().BoolVarP(&Verbose, "verbose", "v", false, "verbose output") +``` + +### Local Flags + +A flag can also be assigned locally, which will only apply to that specific command. + +```go +localCmd.Flags().StringVarP(&Source, "source", "s", "", "Source directory to read from") +``` + +### Local Flag on Parent Commands + +By default, Cobra only parses local flags on the target command, and any local flags on +parent commands are ignored. By enabling `Command.TraverseChildren`, Cobra will +parse local flags on each command before executing the target command. + +```go +command := cobra.Command{ + Use: "print [OPTIONS] [COMMANDS]", + TraverseChildren: true, +} +``` + +### Bind Flags with Config + +You can also bind your flags with [viper](https://github.com/spf13/viper): +```go +var author string + +func init() { + rootCmd.PersistentFlags().StringVar(&author, "author", "YOUR NAME", "Author name for copyright attribution") + viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author")) +} +``` + +In this example, the persistent flag `author` is bound with `viper`. +**Note**: the variable `author` will not be set to the value from config, +when the `--author` flag is provided by user. + +More in [viper documentation](https://github.com/spf13/viper#working-with-flags). + +### Required flags + +Flags are optional by default. If instead you wish your command to report an error +when a flag has not been set, mark it as required: +```go +rootCmd.Flags().StringVarP(&Region, "region", "r", "", "AWS region (required)") +rootCmd.MarkFlagRequired("region") +``` + +Or, for persistent flags: +```go +rootCmd.PersistentFlags().StringVarP(&Region, "region", "r", "", "AWS region (required)") +rootCmd.MarkPersistentFlagRequired("region") +``` + +### Flag Groups + +If you have different flags that must be provided together (e.g. if they provide the `--username` flag they MUST provide the `--password` flag as well) then +Cobra can enforce that requirement: +```go +rootCmd.Flags().StringVarP(&u, "username", "u", "", "Username (required if password is set)") +rootCmd.Flags().StringVarP(&pw, "password", "p", "", "Password (required if username is set)") +rootCmd.MarkFlagsRequiredTogether("username", "password") +``` + +You can also prevent different flags from being provided together if they represent mutually +exclusive options such as specifying an output format as either `--json` or `--yaml` but never both: +```go +rootCmd.Flags().BoolVar(&ofJson, "json", false, "Output in JSON") +rootCmd.Flags().BoolVar(&ofYaml, "yaml", false, "Output in YAML") +rootCmd.MarkFlagsMutuallyExclusive("json", "yaml") +``` + +In both of these cases: + - both local and persistent flags can be used + - **NOTE:** the group is only enforced on commands where every flag is defined + - a flag may appear in multiple groups + - a group may contain any number of flags + +## Positional and Custom Arguments + +Validation of positional arguments can be specified using the `Args` field of `Command`. +The following validators are built in: + +- Number of arguments: + - `NoArgs` - report an error if there are any positional args. + - `ArbitraryArgs` - accept any number of args. + - `MinimumNArgs(int)` - report an error if less than N positional args are provided. + - `MaximumNArgs(int)` - report an error if more than N positional args are provided. + - `ExactArgs(int)` - report an error if there are not exactly N positional args. + - `RangeArgs(min, max)` - report an error if the number of args is not between `min` and `max`. +- Content of the arguments: + - `OnlyValidArgs` - report an error if there are any positional args not specified in the `ValidArgs` field of `Command`, which can optionally be set to a list of valid values for positional args. + +If `Args` is undefined or `nil`, it defaults to `ArbitraryArgs`. + +Moreover, `MatchAll(pargs ...PositionalArgs)` enables combining existing checks with arbitrary other checks. +For instance, if you want to report an error if there are not exactly N positional args OR if there are any positional +args that are not in the `ValidArgs` field of `Command`, you can call `MatchAll` on `ExactArgs` and `OnlyValidArgs`, as +shown below: + +```go +var cmd = &cobra.Command{ + Short: "hello", + Args: cobra.MatchAll(cobra.ExactArgs(2), cobra.OnlyValidArgs), + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Hello, World!") + }, +} +``` + +It is possible to set any custom validator that satisfies `func(cmd *cobra.Command, args []string) error`. +For example: + +```go +var cmd = &cobra.Command{ + Short: "hello", + Args: func(cmd *cobra.Command, args []string) error { + // Optionally run one of the validators provided by cobra + if err := cobra.MinimumNArgs(1)(cmd, args); err != nil { + return err + } + // Run the custom validation logic + if myapp.IsValidColor(args[0]) { + return nil + } + return fmt.Errorf("invalid color specified: %s", args[0]) + }, + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Hello, World!") + }, +} +``` + +## Example + +In the example below, we have defined three commands. Two are at the top level +and one (cmdTimes) is a child of one of the top commands. In this case the root +is not executable, meaning that a subcommand is required. This is accomplished +by not providing a 'Run' for the 'rootCmd'. + +We have only defined one flag for a single command. + +More documentation about flags is available at https://github.com/spf13/pflag + +```go +package main + +import ( + "fmt" + "strings" + + "github.com/spf13/cobra" +) + +func main() { + var echoTimes int + + var cmdPrint = &cobra.Command{ + Use: "print [string to print]", + Short: "Print anything to the screen", + Long: `print is for printing anything back to the screen. +For many years people have printed back to the screen.`, + Args: cobra.MinimumNArgs(1), + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Print: " + strings.Join(args, " ")) + }, + } + + var cmdEcho = &cobra.Command{ + Use: "echo [string to echo]", + Short: "Echo anything to the screen", + Long: `echo is for echoing anything back. +Echo works a lot like print, except it has a child command.`, + Args: cobra.MinimumNArgs(1), + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Echo: " + strings.Join(args, " ")) + }, + } + + var cmdTimes = &cobra.Command{ + Use: "times [string to echo]", + Short: "Echo anything to the screen more times", + Long: `echo things multiple times back to the user by providing +a count and a string.`, + Args: cobra.MinimumNArgs(1), + Run: func(cmd *cobra.Command, args []string) { + for i := 0; i < echoTimes; i++ { + fmt.Println("Echo: " + strings.Join(args, " ")) + } + }, + } + + cmdTimes.Flags().IntVarP(&echoTimes, "times", "t", 1, "times to echo the input") + + var rootCmd = &cobra.Command{Use: "app"} + rootCmd.AddCommand(cmdPrint, cmdEcho) + cmdEcho.AddCommand(cmdTimes) + rootCmd.Execute() +} +``` + +For a more complete example of a larger application, please checkout [Hugo](https://gohugo.io/). + +## Help Command + +Cobra automatically adds a help command to your application when you have subcommands. +This will be called when a user runs 'app help'. Additionally, help will also +support all other commands as input. Say, for instance, you have a command called +'create' without any additional configuration; Cobra will work when 'app help +create' is called. Every command will automatically have the '--help' flag added. + +### Example + +The following output is automatically generated by Cobra. Nothing beyond the +command and flag definitions are needed. + + $ cobra-cli help + + Cobra is a CLI library for Go that empowers applications. + This application is a tool to generate the needed files + to quickly create a Cobra application. + + Usage: + cobra-cli [command] + + Available Commands: + add Add a command to a Cobra Application + completion Generate the autocompletion script for the specified shell + help Help about any command + init Initialize a Cobra Application + + Flags: + -a, --author string author name for copyright attribution (default "YOUR NAME") + --config string config file (default is $HOME/.cobra.yaml) + -h, --help help for cobra-cli + -l, --license string name of license for the project + --viper use Viper for configuration + + Use "cobra-cli [command] --help" for more information about a command. + + +Help is just a command like any other. There is no special logic or behavior +around it. In fact, you can provide your own if you want. + +### Grouping commands in help + +Cobra supports grouping of available commands in the help output. To group commands, each group must be explicitly +defined using `AddGroup()` on the parent command. Then a subcommand can be added to a group using the `GroupID` element +of that subcommand. The groups will appear in the help output in the same order as they are defined using different +calls to `AddGroup()`. If you use the generated `help` or `completion` commands, you can set their group ids using +`SetHelpCommandGroupId()` and `SetCompletionCommandGroupId()` on the root command, respectively. + +### Defining your own help + +You can provide your own Help command or your own template for the default command to use +with the following functions: + +```go +cmd.SetHelpCommand(cmd *Command) +cmd.SetHelpFunc(f func(*Command, []string)) +cmd.SetHelpTemplate(s string) +``` + +The latter two will also apply to any children commands. + +## Usage Message + +When the user provides an invalid flag or invalid command, Cobra responds by +showing the user the 'usage'. + +### Example +You may recognize this from the help above. That's because the default help +embeds the usage as part of its output. + + $ cobra-cli --invalid + Error: unknown flag: --invalid + Usage: + cobra-cli [command] + + Available Commands: + add Add a command to a Cobra Application + completion Generate the autocompletion script for the specified shell + help Help about any command + init Initialize a Cobra Application + + Flags: + -a, --author string author name for copyright attribution (default "YOUR NAME") + --config string config file (default is $HOME/.cobra.yaml) + -h, --help help for cobra-cli + -l, --license string name of license for the project + --viper use Viper for configuration + + Use "cobra [command] --help" for more information about a command. + +### Defining your own usage +You can provide your own usage function or template for Cobra to use. +Like help, the function and template are overridable through public methods: + +```go +cmd.SetUsageFunc(f func(*Command) error) +cmd.SetUsageTemplate(s string) +``` + +## Version Flag + +Cobra adds a top-level '--version' flag if the Version field is set on the root command. +Running an application with the '--version' flag will print the version to stdout using +the version template. The template can be customized using the +`cmd.SetVersionTemplate(s string)` function. + +## PreRun and PostRun Hooks + +It is possible to run functions before or after the main `Run` function of your command. The `PersistentPreRun` and `PreRun` functions will be executed before `Run`. `PersistentPostRun` and `PostRun` will be executed after `Run`. The `Persistent*Run` functions will be inherited by children if they do not declare their own. These functions are run in the following order: + +- `PersistentPreRun` +- `PreRun` +- `Run` +- `PostRun` +- `PersistentPostRun` + +An example of two commands which use all of these features is below. When the subcommand is executed, it will run the root command's `PersistentPreRun` but not the root command's `PersistentPostRun`: + +```go +package main + +import ( + "fmt" + + "github.com/spf13/cobra" +) + +func main() { + + var rootCmd = &cobra.Command{ + Use: "root [sub]", + Short: "My root command", + PersistentPreRun: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside rootCmd PersistentPreRun with args: %v\n", args) + }, + PreRun: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside rootCmd PreRun with args: %v\n", args) + }, + Run: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside rootCmd Run with args: %v\n", args) + }, + PostRun: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside rootCmd PostRun with args: %v\n", args) + }, + PersistentPostRun: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside rootCmd PersistentPostRun with args: %v\n", args) + }, + } + + var subCmd = &cobra.Command{ + Use: "sub [no options!]", + Short: "My subcommand", + PreRun: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside subCmd PreRun with args: %v\n", args) + }, + Run: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside subCmd Run with args: %v\n", args) + }, + PostRun: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside subCmd PostRun with args: %v\n", args) + }, + PersistentPostRun: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside subCmd PersistentPostRun with args: %v\n", args) + }, + } + + rootCmd.AddCommand(subCmd) + + rootCmd.SetArgs([]string{""}) + rootCmd.Execute() + fmt.Println() + rootCmd.SetArgs([]string{"sub", "arg1", "arg2"}) + rootCmd.Execute() +} +``` + +Output: +``` +Inside rootCmd PersistentPreRun with args: [] +Inside rootCmd PreRun with args: [] +Inside rootCmd Run with args: [] +Inside rootCmd PostRun with args: [] +Inside rootCmd PersistentPostRun with args: [] + +Inside rootCmd PersistentPreRun with args: [arg1 arg2] +Inside subCmd PreRun with args: [arg1 arg2] +Inside subCmd Run with args: [arg1 arg2] +Inside subCmd PostRun with args: [arg1 arg2] +Inside subCmd PersistentPostRun with args: [arg1 arg2] +``` + +## Suggestions when "unknown command" happens + +Cobra will print automatic suggestions when "unknown command" errors happen. This allows Cobra to behave similarly to the `git` command when a typo happens. For example: + +``` +$ hugo srever +Error: unknown command "srever" for "hugo" + +Did you mean this? + server + +Run 'hugo --help' for usage. +``` + +Suggestions are automatically generated based on existing subcommands and use an implementation of [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance). Every registered command that matches a minimum distance of 2 (ignoring case) will be displayed as a suggestion. + +If you need to disable suggestions or tweak the string distance in your command, use: + +```go +command.DisableSuggestions = true +``` + +or + +```go +command.SuggestionsMinimumDistance = 1 +``` + +You can also explicitly set names for which a given command will be suggested using the `SuggestFor` attribute. This allows suggestions for strings that are not close in terms of string distance, but make sense in your set of commands but for which +you don't want aliases. Example: + +``` +$ kubectl remove +Error: unknown command "remove" for "kubectl" + +Did you mean this? + delete + +Run 'kubectl help' for usage. +``` + +## Generating documentation for your command + +Cobra can generate documentation based on subcommands, flags, etc. Read more about it in the [docs generation documentation](doc/README.md). + +## Generating shell completions + +Cobra can generate a shell-completion file for the following shells: bash, zsh, fish, PowerShell. If you add more information to your commands, these completions can be amazingly powerful and flexible. Read more about it in [Shell Completions](shell_completions.md). + +## Providing Active Help + +Cobra makes use of the shell-completion system to define a framework allowing you to provide Active Help to your users. Active Help are messages (hints, warnings, etc) printed as the program is being used. Read more about it in [Active Help](active_help.md). diff --git a/vendor/github.com/spf13/cobra/zsh_completions.go b/vendor/github.com/spf13/cobra/zsh_completions.go new file mode 100644 index 0000000000..1856e4c7f6 --- /dev/null +++ b/vendor/github.com/spf13/cobra/zsh_completions.go @@ -0,0 +1,308 @@ +// Copyright 2013-2023 The Cobra Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cobra + +import ( + "bytes" + "fmt" + "io" + "os" +) + +// GenZshCompletionFile generates zsh completion file including descriptions. +func (c *Command) GenZshCompletionFile(filename string) error { + return c.genZshCompletionFile(filename, true) +} + +// GenZshCompletion generates zsh completion file including descriptions +// and writes it to the passed writer. +func (c *Command) GenZshCompletion(w io.Writer) error { + return c.genZshCompletion(w, true) +} + +// GenZshCompletionFileNoDesc generates zsh completion file without descriptions. +func (c *Command) GenZshCompletionFileNoDesc(filename string) error { + return c.genZshCompletionFile(filename, false) +} + +// GenZshCompletionNoDesc generates zsh completion file without descriptions +// and writes it to the passed writer. +func (c *Command) GenZshCompletionNoDesc(w io.Writer) error { + return c.genZshCompletion(w, false) +} + +// MarkZshCompPositionalArgumentFile only worked for zsh and its behavior was +// not consistent with Bash completion. It has therefore been disabled. +// Instead, when no other completion is specified, file completion is done by +// default for every argument. One can disable file completion on a per-argument +// basis by using ValidArgsFunction and ShellCompDirectiveNoFileComp. +// To achieve file extension filtering, one can use ValidArgsFunction and +// ShellCompDirectiveFilterFileExt. +// +// Deprecated +func (c *Command) MarkZshCompPositionalArgumentFile(argPosition int, patterns ...string) error { + return nil +} + +// MarkZshCompPositionalArgumentWords only worked for zsh. It has therefore +// been disabled. +// To achieve the same behavior across all shells, one can use +// ValidArgs (for the first argument only) or ValidArgsFunction for +// any argument (can include the first one also). +// +// Deprecated +func (c *Command) MarkZshCompPositionalArgumentWords(argPosition int, words ...string) error { + return nil +} + +func (c *Command) genZshCompletionFile(filename string, includeDesc bool) error { + outFile, err := os.Create(filename) + if err != nil { + return err + } + defer outFile.Close() + + return c.genZshCompletion(outFile, includeDesc) +} + +func (c *Command) genZshCompletion(w io.Writer, includeDesc bool) error { + buf := new(bytes.Buffer) + genZshComp(buf, c.Name(), includeDesc) + _, err := buf.WriteTo(w) + return err +} + +func genZshComp(buf io.StringWriter, name string, includeDesc bool) { + compCmd := ShellCompRequestCmd + if !includeDesc { + compCmd = ShellCompNoDescRequestCmd + } + WriteStringAndCheck(buf, fmt.Sprintf(`#compdef %[1]s +compdef _%[1]s %[1]s + +# zsh completion for %-36[1]s -*- shell-script -*- + +__%[1]s_debug() +{ + local file="$BASH_COMP_DEBUG_FILE" + if [[ -n ${file} ]]; then + echo "$*" >> "${file}" + fi +} + +_%[1]s() +{ + local shellCompDirectiveError=%[3]d + local shellCompDirectiveNoSpace=%[4]d + local shellCompDirectiveNoFileComp=%[5]d + local shellCompDirectiveFilterFileExt=%[6]d + local shellCompDirectiveFilterDirs=%[7]d + local shellCompDirectiveKeepOrder=%[8]d + + local lastParam lastChar flagPrefix requestComp out directive comp lastComp noSpace keepOrder + local -a completions + + __%[1]s_debug "\n========= starting completion logic ==========" + __%[1]s_debug "CURRENT: ${CURRENT}, words[*]: ${words[*]}" + + # The user could have moved the cursor backwards on the command-line. + # We need to trigger completion from the $CURRENT location, so we need + # to truncate the command-line ($words) up to the $CURRENT location. + # (We cannot use $CURSOR as its value does not work when a command is an alias.) + words=("${=words[1,CURRENT]}") + __%[1]s_debug "Truncated words[*]: ${words[*]}," + + lastParam=${words[-1]} + lastChar=${lastParam[-1]} + __%[1]s_debug "lastParam: ${lastParam}, lastChar: ${lastChar}" + + # For zsh, when completing a flag with an = (e.g., %[1]s -n=) + # completions must be prefixed with the flag + setopt local_options BASH_REMATCH + if [[ "${lastParam}" =~ '-.*=' ]]; then + # We are dealing with a flag with an = + flagPrefix="-P ${BASH_REMATCH}" + fi + + # Prepare the command to obtain completions + requestComp="${words[1]} %[2]s ${words[2,-1]}" + if [ "${lastChar}" = "" ]; then + # If the last parameter is complete (there is a space following it) + # We add an extra empty parameter so we can indicate this to the go completion code. + __%[1]s_debug "Adding extra empty parameter" + requestComp="${requestComp} \"\"" + fi + + __%[1]s_debug "About to call: eval ${requestComp}" + + # Use eval to handle any environment variables and such + out=$(eval ${requestComp} 2>/dev/null) + __%[1]s_debug "completion output: ${out}" + + # Extract the directive integer following a : from the last line + local lastLine + while IFS='\n' read -r line; do + lastLine=${line} + done < <(printf "%%s\n" "${out[@]}") + __%[1]s_debug "last line: ${lastLine}" + + if [ "${lastLine[1]}" = : ]; then + directive=${lastLine[2,-1]} + # Remove the directive including the : and the newline + local suffix + (( suffix=${#lastLine}+2)) + out=${out[1,-$suffix]} + else + # There is no directive specified. Leave $out as is. + __%[1]s_debug "No directive found. Setting do default" + directive=0 + fi + + __%[1]s_debug "directive: ${directive}" + __%[1]s_debug "completions: ${out}" + __%[1]s_debug "flagPrefix: ${flagPrefix}" + + if [ $((directive & shellCompDirectiveError)) -ne 0 ]; then + __%[1]s_debug "Completion received error. Ignoring completions." + return + fi + + local activeHelpMarker="%[9]s" + local endIndex=${#activeHelpMarker} + local startIndex=$((${#activeHelpMarker}+1)) + local hasActiveHelp=0 + while IFS='\n' read -r comp; do + # Check if this is an activeHelp statement (i.e., prefixed with $activeHelpMarker) + if [ "${comp[1,$endIndex]}" = "$activeHelpMarker" ];then + __%[1]s_debug "ActiveHelp found: $comp" + comp="${comp[$startIndex,-1]}" + if [ -n "$comp" ]; then + compadd -x "${comp}" + __%[1]s_debug "ActiveHelp will need delimiter" + hasActiveHelp=1 + fi + + continue + fi + + if [ -n "$comp" ]; then + # If requested, completions are returned with a description. + # The description is preceded by a TAB character. + # For zsh's _describe, we need to use a : instead of a TAB. + # We first need to escape any : as part of the completion itself. + comp=${comp//:/\\:} + + local tab="$(printf '\t')" + comp=${comp//$tab/:} + + __%[1]s_debug "Adding completion: ${comp}" + completions+=${comp} + lastComp=$comp + fi + done < <(printf "%%s\n" "${out[@]}") + + # Add a delimiter after the activeHelp statements, but only if: + # - there are completions following the activeHelp statements, or + # - file completion will be performed (so there will be choices after the activeHelp) + if [ $hasActiveHelp -eq 1 ]; then + if [ ${#completions} -ne 0 ] || [ $((directive & shellCompDirectiveNoFileComp)) -eq 0 ]; then + __%[1]s_debug "Adding activeHelp delimiter" + compadd -x "--" + hasActiveHelp=0 + fi + fi + + if [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ]; then + __%[1]s_debug "Activating nospace." + noSpace="-S ''" + fi + + if [ $((directive & shellCompDirectiveKeepOrder)) -ne 0 ]; then + __%[1]s_debug "Activating keep order." + keepOrder="-V" + fi + + if [ $((directive & shellCompDirectiveFilterFileExt)) -ne 0 ]; then + # File extension filtering + local filteringCmd + filteringCmd='_files' + for filter in ${completions[@]}; do + if [ ${filter[1]} != '*' ]; then + # zsh requires a glob pattern to do file filtering + filter="\*.$filter" + fi + filteringCmd+=" -g $filter" + done + filteringCmd+=" ${flagPrefix}" + + __%[1]s_debug "File filtering command: $filteringCmd" + _arguments '*:filename:'"$filteringCmd" + elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then + # File completion for directories only + local subdir + subdir="${completions[1]}" + if [ -n "$subdir" ]; then + __%[1]s_debug "Listing directories in $subdir" + pushd "${subdir}" >/dev/null 2>&1 + else + __%[1]s_debug "Listing directories in ." + fi + + local result + _arguments '*:dirname:_files -/'" ${flagPrefix}" + result=$? + if [ -n "$subdir" ]; then + popd >/dev/null 2>&1 + fi + return $result + else + __%[1]s_debug "Calling _describe" + if eval _describe $keepOrder "completions" completions $flagPrefix $noSpace; then + __%[1]s_debug "_describe found some completions" + + # Return the success of having called _describe + return 0 + else + __%[1]s_debug "_describe did not find completions." + __%[1]s_debug "Checking if we should do file completion." + if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then + __%[1]s_debug "deactivating file completion" + + # We must return an error code here to let zsh know that there were no + # completions found by _describe; this is what will trigger other + # matching algorithms to attempt to find completions. + # For example zsh can match letters in the middle of words. + return 1 + else + # Perform file completion + __%[1]s_debug "Activating file completion" + + # We must return the result of this command, so it must be the + # last command, or else we must store its result to return it. + _arguments '*:filename:_files'" ${flagPrefix}" + fi + fi + fi +} + +# don't run the completion function when being source-ed or eval-ed +if [ "$funcstack[1]" = "_%[1]s" ]; then + _%[1]s +fi +`, name, compCmd, + ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp, + ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs, ShellCompDirectiveKeepOrder, + activeHelpMarker)) +} diff --git a/vendor/github.com/spf13/cobra/zsh_completions.md b/vendor/github.com/spf13/cobra/zsh_completions.md new file mode 100644 index 0000000000..7cff61787f --- /dev/null +++ b/vendor/github.com/spf13/cobra/zsh_completions.md @@ -0,0 +1,48 @@ +## Generating Zsh Completion For Your cobra.Command + +Please refer to [Shell Completions](shell_completions.md) for details. + +## Zsh completions standardization + +Cobra 1.1 standardized its zsh completion support to align it with its other shell completions. Although the API was kept backwards-compatible, some small changes in behavior were introduced. + +### Deprecation summary + +See further below for more details on these deprecations. + +* `cmd.MarkZshCompPositionalArgumentFile(pos, []string{})` is no longer needed. It is therefore **deprecated** and silently ignored. +* `cmd.MarkZshCompPositionalArgumentFile(pos, glob[])` is **deprecated** and silently ignored. + * Instead use `ValidArgsFunction` with `ShellCompDirectiveFilterFileExt`. +* `cmd.MarkZshCompPositionalArgumentWords()` is **deprecated** and silently ignored. + * Instead use `ValidArgsFunction`. + +### Behavioral changes + +**Noun completion** +|Old behavior|New behavior| +|---|---| +|No file completion by default (opposite of bash)|File completion by default; use `ValidArgsFunction` with `ShellCompDirectiveNoFileComp` to turn off file completion on a per-argument basis| +|Completion of flag names without the `-` prefix having been typed|Flag names are only completed if the user has typed the first `-`| +`cmd.MarkZshCompPositionalArgumentFile(pos, []string{})` used to turn on file completion on a per-argument position basis|File completion for all arguments by default; `cmd.MarkZshCompPositionalArgumentFile()` is **deprecated** and silently ignored| +|`cmd.MarkZshCompPositionalArgumentFile(pos, glob[])` used to turn on file completion **with glob filtering** on a per-argument position basis (zsh-specific)|`cmd.MarkZshCompPositionalArgumentFile()` is **deprecated** and silently ignored; use `ValidArgsFunction` with `ShellCompDirectiveFilterFileExt` for file **extension** filtering (not full glob filtering)| +|`cmd.MarkZshCompPositionalArgumentWords(pos, words[])` used to provide completion choices on a per-argument position basis (zsh-specific)|`cmd.MarkZshCompPositionalArgumentWords()` is **deprecated** and silently ignored; use `ValidArgsFunction` to achieve the same behavior| + +**Flag-value completion** + +|Old behavior|New behavior| +|---|---| +|No file completion by default (opposite of bash)|File completion by default; use `RegisterFlagCompletionFunc()` with `ShellCompDirectiveNoFileComp` to turn off file completion| +|`cmd.MarkFlagFilename(flag, []string{})` and similar used to turn on file completion|File completion by default; `cmd.MarkFlagFilename(flag, []string{})` no longer needed in this context and silently ignored| +|`cmd.MarkFlagFilename(flag, glob[])` used to turn on file completion **with glob filtering** (syntax of `[]string{"*.yaml", "*.yml"}` incompatible with bash)|Will continue to work, however, support for bash syntax is added and should be used instead so as to work for all shells (`[]string{"yaml", "yml"}`)| +|`cmd.MarkFlagDirname(flag)` only completes directories (zsh-specific)|Has been added for all shells| +|Completion of a flag name does not repeat, unless flag is of type `*Array` or `*Slice` (not supported by bash)|Retained for `zsh` and added to `fish`| +|Completion of a flag name does not provide the `=` form (unlike bash)|Retained for `zsh` and added to `fish`| + +**Improvements** + +* Custom completion support (`ValidArgsFunction` and `RegisterFlagCompletionFunc()`) +* File completion by default if no other completions found +* Handling of required flags +* File extension filtering no longer mutually exclusive with bash usage +* Completion of directory names *within* another directory +* Support for `=` form of flags diff --git a/vendor/modules.txt b/vendor/modules.txt index 631ddb0060..125b8d226f 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -88,6 +88,9 @@ github.com/cpuguy83/go-md2man/v2/md2man # github.com/davecgh/go-spew v1.1.1 ## explicit github.com/davecgh/go-spew/spew +# github.com/dgrijalva/jwt-go v3.2.1-0.20180719211823-0b96aaa70776+incompatible +## explicit +github.com/dgrijalva/jwt-go # github.com/docker/distribution v2.8.2+incompatible ## explicit github.com/docker/distribution/digestset @@ -121,6 +124,9 @@ github.com/go-openapi/jsonreference/internal # github.com/go-openapi/swag v0.22.3 ## explicit; go 1.18 github.com/go-openapi/swag +# github.com/gobuffalo/flect v0.3.0 +## explicit; go 1.16 +github.com/gobuffalo/flect # github.com/gogo/protobuf v1.3.2 ## explicit; go 1.15 github.com/gogo/protobuf/gogoproto @@ -207,6 +213,9 @@ github.com/hashicorp/serf/coordinate # github.com/imdario/mergo v0.3.13 ## explicit; go 1.13 github.com/imdario/mergo +# github.com/inconshreveable/mousetrap v1.1.0 +## explicit; go 1.18 +github.com/inconshreveable/mousetrap # github.com/jmespath/go-jmespath v0.4.0 ## explicit; go 1.14 github.com/jmespath/go-jmespath @@ -230,12 +239,14 @@ github.com/libopenstorage/cloudops/pkg/storagedistribution github.com/libopenstorage/cloudops/pkg/utils github.com/libopenstorage/cloudops/specs/decisionmatrix github.com/libopenstorage/cloudops/unsupported -# github.com/libopenstorage/openstorage v9.4.47+incompatible => github.com/libopenstorage/openstorage v1.0.1-0.20240221210452-7757fdc2b8ff -## explicit; go 1.17 +# github.com/libopenstorage/openstorage v9.4.47+incompatible => github.com/libopenstorage/openstorage v1.0.1-0.20240606014227-75ac074bb81d +## explicit github.com/libopenstorage/openstorage/api github.com/libopenstorage/openstorage/pkg/auth github.com/libopenstorage/openstorage/pkg/correlation +github.com/libopenstorage/openstorage/pkg/defaultcontext github.com/libopenstorage/openstorage/pkg/grpcserver +github.com/libopenstorage/openstorage/pkg/grpcutil # github.com/libopenstorage/secrets v0.0.0-20220413195519-57d1c446c5e9 ## explicit; go 1.13 github.com/libopenstorage/secrets/aws/credentials @@ -357,6 +368,9 @@ github.com/russross/blackfriday/v2 # github.com/sirupsen/logrus v1.9.3 ## explicit; go 1.13 github.com/sirupsen/logrus +# github.com/spf13/cobra v1.7.0 +## explicit; go 1.15 +github.com/spf13/cobra # github.com/spf13/pflag v1.0.5 ## explicit; go 1.12 github.com/spf13/pflag @@ -1027,6 +1041,22 @@ sigs.k8s.io/controller-runtime/pkg/webhook sigs.k8s.io/controller-runtime/pkg/webhook/admission sigs.k8s.io/controller-runtime/pkg/webhook/conversion sigs.k8s.io/controller-runtime/pkg/webhook/internal/metrics +# sigs.k8s.io/controller-tools v0.11.3 +## explicit; go 1.19 +sigs.k8s.io/controller-tools/cmd/controller-gen +sigs.k8s.io/controller-tools/pkg/crd +sigs.k8s.io/controller-tools/pkg/crd/markers +sigs.k8s.io/controller-tools/pkg/deepcopy +sigs.k8s.io/controller-tools/pkg/genall +sigs.k8s.io/controller-tools/pkg/genall/help +sigs.k8s.io/controller-tools/pkg/genall/help/pretty +sigs.k8s.io/controller-tools/pkg/loader +sigs.k8s.io/controller-tools/pkg/markers +sigs.k8s.io/controller-tools/pkg/rbac +sigs.k8s.io/controller-tools/pkg/schemapatcher +sigs.k8s.io/controller-tools/pkg/schemapatcher/internal/yaml +sigs.k8s.io/controller-tools/pkg/version +sigs.k8s.io/controller-tools/pkg/webhook # sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd ## explicit; go 1.18 sigs.k8s.io/json @@ -1043,7 +1073,7 @@ sigs.k8s.io/yaml sigs.k8s.io/yaml/goyaml.v2 # github.com/coreos/prometheus-operator => github.com/prometheus-operator/prometheus-operator v0.46.0 # github.com/kubernetes-incubator/external-storage => github.com/libopenstorage/external-storage v5.1.1-0.20190919185747-9394ee8dd536+incompatible -# github.com/libopenstorage/openstorage => github.com/libopenstorage/openstorage v1.0.1-0.20240221210452-7757fdc2b8ff +# github.com/libopenstorage/openstorage => github.com/libopenstorage/openstorage v1.0.1-0.20240606014227-75ac074bb81d # github.com/portworx/sched-ops => github.com/portworx/sched-ops v1.20.4-rc1.0.20240731224434-94e4e354c4b2 # github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring => github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.46.0 # golang.org/x/tools => golang.org/x/tools v0.1.11 diff --git a/vendor/sigs.k8s.io/controller-tools/LICENSE b/vendor/sigs.k8s.io/controller-tools/LICENSE new file mode 100644 index 0000000000..8dada3edaf --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go b/vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go new file mode 100644 index 0000000000..c27bcda42c --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go @@ -0,0 +1,263 @@ +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package main + +import ( + "encoding/json" + "fmt" + "io" + "os" + "strings" + + "github.com/spf13/cobra" + + "sigs.k8s.io/controller-tools/pkg/crd" + "sigs.k8s.io/controller-tools/pkg/deepcopy" + "sigs.k8s.io/controller-tools/pkg/genall" + "sigs.k8s.io/controller-tools/pkg/genall/help" + prettyhelp "sigs.k8s.io/controller-tools/pkg/genall/help/pretty" + "sigs.k8s.io/controller-tools/pkg/markers" + "sigs.k8s.io/controller-tools/pkg/rbac" + "sigs.k8s.io/controller-tools/pkg/schemapatcher" + "sigs.k8s.io/controller-tools/pkg/version" + "sigs.k8s.io/controller-tools/pkg/webhook" +) + +//go:generate go run ../helpgen/main.go paths=../../pkg/... generate:headerFile=../../boilerplate.go.txt,year=2019 + +// Options are specified to controller-gen by turning generators and output rules into +// markers, and then parsing them using the standard registry logic (without the "+"). +// Each marker and output rule should thus be usable as a marker target. + +var ( + // allGenerators maintains the list of all known generators, giving + // them names for use on the command line. + // each turns into a command line option, + // and has options for output forms. + allGenerators = map[string]genall.Generator{ + "crd": crd.Generator{}, + "rbac": rbac.Generator{}, + "object": deepcopy.Generator{}, + "webhook": webhook.Generator{}, + "schemapatch": schemapatcher.Generator{}, + } + + // allOutputRules defines the list of all known output rules, giving + // them names for use on the command line. + // Each output rule turns into two command line options: + // - output::
(per-generator output) + // - output: (default output) + allOutputRules = map[string]genall.OutputRule{ + "dir": genall.OutputToDirectory(""), + "none": genall.OutputToNothing, + "stdout": genall.OutputToStdout, + "artifacts": genall.OutputArtifacts{}, + } + + // optionsRegistry contains all the marker definitions used to process command line options + optionsRegistry = &markers.Registry{} +) + +func init() { + for genName, gen := range allGenerators { + // make the generator options marker itself + defn := markers.Must(markers.MakeDefinition(genName, markers.DescribesPackage, gen)) + if err := optionsRegistry.Register(defn); err != nil { + panic(err) + } + if helpGiver, hasHelp := gen.(genall.HasHelp); hasHelp { + if help := helpGiver.Help(); help != nil { + optionsRegistry.AddHelp(defn, help) + } + } + + // make per-generation output rule markers + for ruleName, rule := range allOutputRules { + ruleMarker := markers.Must(markers.MakeDefinition(fmt.Sprintf("output:%s:%s", genName, ruleName), markers.DescribesPackage, rule)) + if err := optionsRegistry.Register(ruleMarker); err != nil { + panic(err) + } + if helpGiver, hasHelp := rule.(genall.HasHelp); hasHelp { + if help := helpGiver.Help(); help != nil { + optionsRegistry.AddHelp(ruleMarker, help) + } + } + } + } + + // make "default output" output rule markers + for ruleName, rule := range allOutputRules { + ruleMarker := markers.Must(markers.MakeDefinition("output:"+ruleName, markers.DescribesPackage, rule)) + if err := optionsRegistry.Register(ruleMarker); err != nil { + panic(err) + } + if helpGiver, hasHelp := rule.(genall.HasHelp); hasHelp { + if help := helpGiver.Help(); help != nil { + optionsRegistry.AddHelp(ruleMarker, help) + } + } + } + + // add in the common options markers + if err := genall.RegisterOptionsMarkers(optionsRegistry); err != nil { + panic(err) + } +} + +// noUsageError suppresses usage printing when it occurs +// (since cobra doesn't provide a good way to avoid printing +// out usage in only certain situations). +type noUsageError struct{ error } + +func main() { + helpLevel := 0 + whichLevel := 0 + showVersion := false + + cmd := &cobra.Command{ + Use: "controller-gen", + Short: "Generate Kubernetes API extension resources and code.", + Long: "Generate Kubernetes API extension resources and code.", + Example: ` # Generate RBAC manifests and crds for all types under apis/, + # outputting crds to /tmp/crds and everything else to stdout + controller-gen rbac:roleName= crd paths=./apis/... output:crd:dir=/tmp/crds output:stdout + + # Generate deepcopy/runtime.Object implementations for a particular file + controller-gen object paths=./apis/v1beta1/some_types.go + + # Generate OpenAPI v3 schemas for API packages and merge them into existing CRD manifests + controller-gen schemapatch:manifests=./manifests output:dir=./manifests paths=./pkg/apis/... + + # Run all the generators for a given project + controller-gen paths=./apis/... + + # Explain the markers for generating CRDs, and their arguments + controller-gen crd -ww +`, + RunE: func(c *cobra.Command, rawOpts []string) error { + // print version if asked for it + if showVersion { + version.Print() + return nil + } + + // print the help if we asked for it (since we've got a different help flag :-/), then bail + if helpLevel > 0 { + return c.Usage() + } + + // print the marker docs if we asked for them, then bail + if whichLevel > 0 { + return printMarkerDocs(c, rawOpts, whichLevel) + } + + // otherwise, set up the runtime for actually running the generators + rt, err := genall.FromOptions(optionsRegistry, rawOpts) + if err != nil { + return err + } + if len(rt.Generators) == 0 { + return fmt.Errorf("no generators specified") + } + + if hadErrs := rt.Run(); hadErrs { + // don't obscure the actual error with a bunch of usage + return noUsageError{fmt.Errorf("not all generators ran successfully")} + } + return nil + }, + SilenceUsage: true, // silence the usage, then print it out ourselves if it wasn't suppressed + } + cmd.Flags().CountVarP(&whichLevel, "which-markers", "w", "print out all markers available with the requested generators\n(up to -www for the most detailed output, or -wwww for json output)") + cmd.Flags().CountVarP(&helpLevel, "detailed-help", "h", "print out more detailed help\n(up to -hhh for the most detailed output, or -hhhh for json output)") + cmd.Flags().BoolVar(&showVersion, "version", false, "show version") + cmd.Flags().Bool("help", false, "print out usage and a summary of options") + oldUsage := cmd.UsageFunc() + cmd.SetUsageFunc(func(c *cobra.Command) error { + if err := oldUsage(c); err != nil { + return err + } + if helpLevel == 0 { + helpLevel = summaryHelp + } + fmt.Fprintf(c.OutOrStderr(), "\n\nOptions\n\n") + return helpForLevels(c.OutOrStdout(), c.OutOrStderr(), helpLevel, optionsRegistry, help.SortByOption) + }) + + if err := cmd.Execute(); err != nil { + if _, noUsage := err.(noUsageError); !noUsage { + // print the usage unless we suppressed it + if err := cmd.Usage(); err != nil { + panic(err) + } + } + fmt.Fprintf(cmd.OutOrStderr(), "run `%[1]s %[2]s -w` to see all available markers, or `%[1]s %[2]s -h` for usage\n", cmd.CalledAs(), strings.Join(os.Args[1:], " ")) + os.Exit(1) + } +} + +// printMarkerDocs prints out marker help for the given generators specified in +// the rawOptions, at the given level. +func printMarkerDocs(c *cobra.Command, rawOptions []string, whichLevel int) error { + // just grab a registry so we don't lag while trying to load roots + // (like we'd do if we just constructed the full runtime). + reg, err := genall.RegistryFromOptions(optionsRegistry, rawOptions) + if err != nil { + return err + } + + return helpForLevels(c.OutOrStdout(), c.OutOrStderr(), whichLevel, reg, help.SortByCategory) +} + +func helpForLevels(mainOut io.Writer, errOut io.Writer, whichLevel int, reg *markers.Registry, sorter help.SortGroup) error { + helpInfo := help.ByCategory(reg, sorter) + switch whichLevel { + case jsonHelp: + if err := json.NewEncoder(mainOut).Encode(helpInfo); err != nil { + return err + } + case detailedHelp, fullHelp: + fullDetail := whichLevel == fullHelp + for _, cat := range helpInfo { + if cat.Category == "" { + continue + } + contents := prettyhelp.MarkersDetails(fullDetail, cat.Category, cat.Markers) + if err := contents.WriteTo(errOut); err != nil { + return err + } + } + case summaryHelp: + for _, cat := range helpInfo { + if cat.Category == "" { + continue + } + contents := prettyhelp.MarkersSummary(cat.Category, cat.Markers) + if err := contents.WriteTo(errOut); err != nil { + return err + } + } + } + return nil +} + +const ( + _ = iota + summaryHelp + detailedHelp + fullHelp + jsonHelp +) diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/conv.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/conv.go new file mode 100644 index 0000000000..374e02c373 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/conv.go @@ -0,0 +1,43 @@ +package crd + +import ( + "fmt" + + apiextinternal "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" + apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +var ( + conversionScheme = runtime.NewScheme() +) + +func init() { + if err := apiextinternal.AddToScheme(conversionScheme); err != nil { + panic("must be able to add internal apiextensions to the CRD conversion Scheme") + } + if err := apiext.AddToScheme(conversionScheme); err != nil { + panic("must be able to add apiextensions/v1 to the CRD conversion Scheme") + } +} + +// AsVersion converts a CRD from the canonical internal form (currently v1) to some external form. +func AsVersion(original apiext.CustomResourceDefinition, gv schema.GroupVersion) (runtime.Object, error) { + // TODO: Do we need to keep maintaining this conversion function + // post 1.22 when only CRDv1 is served by the apiserver? + if gv == apiextv1beta1.SchemeGroupVersion { + return nil, fmt.Errorf("apiVersion %q is not supported", gv.String()) + } + // We can use the internal versions an existing conversions from kubernetes, since they're not in k/k itself. + // This punts the problem of conversion down the road for a future maintainer (or future instance of @directxman12) + // when we have to support older versions that get removed, or when API machinery decides to yell at us for this + // questionable decision. + intVer, err := conversionScheme.ConvertToVersion(&original, apiextinternal.SchemeGroupVersion) + if err != nil { + return nil, fmt.Errorf("unable to convert to internal CRD version: %w", err) + } + + return conversionScheme.ConvertToVersion(intVer, gv) +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/desc_visitor.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/desc_visitor.go new file mode 100644 index 0000000000..cba36c46cb --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/desc_visitor.go @@ -0,0 +1,78 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package crd + +import ( + "strings" + "unicode" + + apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" +) + +// TruncateDescription truncates the description of fields in given schema if it +// exceeds maxLen. +// It tries to chop off the description at the closest sentence boundary. +func TruncateDescription(schema *apiext.JSONSchemaProps, maxLen int) { + EditSchema(schema, descVisitor{maxLen: maxLen}) +} + +// descVisitor recursively visits all fields in the schema and truncates the +// description of the fields to specified maxLen. +type descVisitor struct { + // maxLen is the maximum allowed length for decription of a field + maxLen int +} + +func (v descVisitor) Visit(schema *apiext.JSONSchemaProps) SchemaVisitor { + if schema == nil { + return v + } + if v.maxLen < 0 { + return nil /* no further work to be done for this schema */ + } + if v.maxLen == 0 { + schema.Description = "" + return v + } + if len(schema.Description) > v.maxLen { + schema.Description = truncateString(schema.Description, v.maxLen) + return v + } + return v +} + +// truncateString truncates given desc string if it exceeds maxLen. It may +// return string with length less than maxLen even in cases where original desc +// exceeds maxLen because it tries to chop off the desc at the closest sentence +// boundary to avoid incomplete sentences. +func truncateString(desc string, maxLen int) string { + desc = desc[0:maxLen] + + // Trying to chop off at closest sentence boundary. + if n := strings.LastIndexFunc(desc, isSentenceTerminal); n > 0 { + return desc[0 : n+1] + } + // TODO(droot): Improve the logic to chop off at closest word boundary + // or add elipses (...) to indicate that it's chopped incase no closest + // sentence found within maxLen. + return desc +} + +// helper function to determine if given rune is a sentence terminal or not. +func isSentenceTerminal(r rune) bool { + return unicode.Is(unicode.STerm, r) +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/doc.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/doc.go new file mode 100644 index 0000000000..914af94d91 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/doc.go @@ -0,0 +1,63 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package crd contains utilities for generating CustomResourceDefinitions and +// their corresponding OpenAPI validation schemata. +// +// # Markers +// +// Markers live under the markers subpackage. Two types of markers exist: +// those that modify schema generation (for validation), and those that modify +// the rest of the CRD. See the subpackage for more information and all +// supported markers. +// +// # Collecting Types and Generating CRDs +// +// The Parser is the entrypoint for collecting the information required to +// generate CRDs. Like loader and collector, its methods are idemptotent, not +// doing extra work if called multiple times. +// +// Parser's method start with Need. Calling NeedXYZ indicates that XYZ should +// be made present in the eqivalent field in the Parser, where it can then be +// loaded from. Each Need method will in turn call Need on anything it needs. +// +// In general, root packages should first be loaded into the Parser with +// NeedPackage. Then, CRDs can be generated with NeedCRDFor. +// +// Errors are generally attached directly to the relevant Package with +// AddError. +// +// # Known Packages +// +// There are a few types from Kubernetes that have special meaning, but don't +// have validation markers attached. Those specific types have overrides +// listed in KnownPackages that can be added as overrides to any parser. +// +// # Flattening +// +// Once schemata are generated, they can be used directly by external tooling +// (like JSONSchema validators), but must first be "flattened" to not contain +// references before use in a CRD (Kubernetes doesn't allow references in the +// CRD's validation schema). +// +// The Flattener built in to the Parser takes care of flattening out references +// when requesting the CRDs, but can be invoked manually. It will not modify +// the input schemata. +// +// Flattened schemata may further be passed to FlattenEmbedded to remove the +// use of AllOf (which is used to describe embedded struct fields when +// references are in use). This done automatically when fetching CRDs. +package crd diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/flatten.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/flatten.go new file mode 100644 index 0000000000..9224c26b27 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/flatten.go @@ -0,0 +1,445 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package crd + +import ( + "fmt" + "reflect" + "sort" + "strings" + "sync" + + apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + + "sigs.k8s.io/controller-tools/pkg/loader" +) + +// ErrorRecorder knows how to record errors. It wraps the part of +// pkg/loader.Package that we need to record errors in places were it might not +// make sense to have a loader.Package +type ErrorRecorder interface { + // AddError records that the given error occurred. + // See the documentation on loader.Package.AddError for more information. + AddError(error) +} + +// isOrNil checks if val is nil if val is of a nillable type, otherwise, +// it compares val to valInt (which should probably be the zero value). +func isOrNil(val reflect.Value, valInt interface{}, zeroInt interface{}) bool { + switch valKind := val.Kind(); valKind { + case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice: + return val.IsNil() + default: + return valInt == zeroInt + } +} + +// flattenAllOfInto copies properties from src to dst, then copies the properties +// of each item in src's allOf to dst's properties as well. +func flattenAllOfInto(dst *apiext.JSONSchemaProps, src apiext.JSONSchemaProps, errRec ErrorRecorder) { + if len(src.AllOf) > 0 { + for _, embedded := range src.AllOf { + flattenAllOfInto(dst, embedded, errRec) + } + } + + dstVal := reflect.Indirect(reflect.ValueOf(dst)) + srcVal := reflect.ValueOf(src) + typ := dstVal.Type() + + srcRemainder := apiext.JSONSchemaProps{} + srcRemVal := reflect.Indirect(reflect.ValueOf(&srcRemainder)) + dstRemainder := apiext.JSONSchemaProps{} + dstRemVal := reflect.Indirect(reflect.ValueOf(&dstRemainder)) + hoisted := false + + for i := 0; i < srcVal.NumField(); i++ { + fieldName := typ.Field(i).Name + switch fieldName { + case "AllOf": + // don't merge because we deal with it above + continue + case "Title", "Description", "Example", "ExternalDocs": + // don't merge because we pre-merge to properly preserve field docs + continue + } + srcField := srcVal.Field(i) + fldTyp := srcField.Type() + zeroVal := reflect.Zero(fldTyp) + zeroInt := zeroVal.Interface() + srcInt := srcField.Interface() + + if isOrNil(srcField, srcInt, zeroInt) { + // nothing to copy from src, continue + continue + } + + dstField := dstVal.Field(i) + dstInt := dstField.Interface() + if isOrNil(dstField, dstInt, zeroInt) { + // dst is empty, continue + dstField.Set(srcField) + continue + } + + if fldTyp.Comparable() && srcInt == dstInt { + // same value, continue + continue + } + + // resolve conflict + switch fieldName { + case "Properties": + // merge if possible, use all of otherwise + srcMap := srcInt.(map[string]apiext.JSONSchemaProps) + dstMap := dstInt.(map[string]apiext.JSONSchemaProps) + + for k, v := range srcMap { + dstProp, exists := dstMap[k] + if !exists { + dstMap[k] = v + continue + } + flattenAllOfInto(&dstProp, v, errRec) + dstMap[k] = dstProp + } + case "Required": + // merge + dstField.Set(reflect.AppendSlice(dstField, srcField)) + case "Type": + if srcInt != dstInt { + // TODO(directxman12): figure out how to attach this back to a useful point in the Go source or in the schema + errRec.AddError(fmt.Errorf("conflicting types in allOf branches in schema: %s vs %s", dstInt, srcInt)) + } + // keep the destination value, for now + // TODO(directxman12): Default -- use field? + // TODO(directxman12): + // - Dependencies: if field x is present, then either schema validates or all props are present + // - AdditionalItems: like AdditionalProperties + // - Definitions: common named validation sets that can be references (merge, bail if duplicate) + case "AdditionalProperties": + // as of the time of writing, `allows: false` is not allowed, so we don't have to handle it + srcProps := srcInt.(*apiext.JSONSchemaPropsOrBool) + if srcProps.Schema == nil { + // nothing to merge + continue + } + dstProps := dstInt.(*apiext.JSONSchemaPropsOrBool) + if dstProps.Schema == nil { + dstProps.Schema = &apiext.JSONSchemaProps{} + } + flattenAllOfInto(dstProps.Schema, *srcProps.Schema, errRec) + case "XPreserveUnknownFields": + dstField.Set(srcField) + case "XMapType": + dstField.Set(srcField) + // NB(directxman12): no need to explicitly handle nullable -- false is considered to be the zero value + // TODO(directxman12): src isn't necessarily the field value -- it's just the most recent allOf entry + default: + // hoist into allOf... + hoisted = true + + srcRemVal.Field(i).Set(srcField) + dstRemVal.Field(i).Set(dstField) + // ...and clear the original + dstField.Set(zeroVal) + } + } + + if hoisted { + dst.AllOf = append(dst.AllOf, dstRemainder, srcRemainder) + } + + // dedup required + if len(dst.Required) > 0 { + reqUniq := make(map[string]struct{}) + for _, req := range dst.Required { + reqUniq[req] = struct{}{} + } + dst.Required = make([]string, 0, len(reqUniq)) + for req := range reqUniq { + dst.Required = append(dst.Required, req) + } + // be deterministic + sort.Strings(dst.Required) + } +} + +// allOfVisitor recursively visits allOf fields in the schema, +// merging nested allOf properties into the root schema. +type allOfVisitor struct { + // errRec is used to record errors while flattening (like two conflicting + // field values used in an allOf) + errRec ErrorRecorder +} + +func (v *allOfVisitor) Visit(schema *apiext.JSONSchemaProps) SchemaVisitor { + if schema == nil { + return v + } + + // clear this now so that we can safely preserve edits made my flattenAllOfInto + origAllOf := schema.AllOf + schema.AllOf = nil + + for _, embedded := range origAllOf { + flattenAllOfInto(schema, embedded, v.errRec) + } + return v +} + +// NB(directxman12): FlattenEmbedded is separate from Flattener because +// some tooling wants to flatten out embedded fields, but only actually +// flatten a few specific types first. + +// FlattenEmbedded flattens embedded fields (represented via AllOf) which have +// already had their references resolved into simple properties in the containing +// schema. +func FlattenEmbedded(schema *apiext.JSONSchemaProps, errRec ErrorRecorder) *apiext.JSONSchemaProps { + outSchema := schema.DeepCopy() + EditSchema(outSchema, &allOfVisitor{errRec: errRec}) + return outSchema +} + +// Flattener knows how to take a root type, and flatten all references in it +// into a single, flat type. Flattened types are cached, so it's relatively +// cheap to make repeated calls with the same type. +type Flattener struct { + // Parser is used to lookup package and type details, and parse in new packages. + Parser *Parser + + LookupReference func(ref string, contextPkg *loader.Package) (TypeIdent, error) + + // flattenedTypes hold the flattened version of each seen type for later reuse. + flattenedTypes map[TypeIdent]apiext.JSONSchemaProps + initOnce sync.Once +} + +func (f *Flattener) init() { + f.initOnce.Do(func() { + f.flattenedTypes = make(map[TypeIdent]apiext.JSONSchemaProps) + if f.LookupReference == nil { + f.LookupReference = identFromRef + } + }) +} + +// cacheType saves the flattened version of the given type for later reuse +func (f *Flattener) cacheType(typ TypeIdent, schema apiext.JSONSchemaProps) { + f.init() + f.flattenedTypes[typ] = schema +} + +// loadUnflattenedSchema fetches a fresh, unflattened schema from the parser. +func (f *Flattener) loadUnflattenedSchema(typ TypeIdent) (*apiext.JSONSchemaProps, error) { + f.Parser.NeedSchemaFor(typ) + + baseSchema, found := f.Parser.Schemata[typ] + if !found { + return nil, fmt.Errorf("unable to locate schema for type %s", typ) + } + return &baseSchema, nil +} + +// FlattenType flattens the given pre-loaded type, removing any references from it. +// It deep-copies the schema first, so it won't affect the parser's version of the schema. +func (f *Flattener) FlattenType(typ TypeIdent) *apiext.JSONSchemaProps { + f.init() + if cachedSchema, isCached := f.flattenedTypes[typ]; isCached { + return &cachedSchema + } + baseSchema, err := f.loadUnflattenedSchema(typ) + if err != nil { + typ.Package.AddError(err) + return nil + } + resSchema := f.FlattenSchema(*baseSchema, typ.Package) + f.cacheType(typ, *resSchema) + return resSchema +} + +// FlattenSchema flattens the given schema, removing any references. +// It deep-copies the schema first, so the input schema won't be affected. +func (f *Flattener) FlattenSchema(baseSchema apiext.JSONSchemaProps, currentPackage *loader.Package) *apiext.JSONSchemaProps { + resSchema := baseSchema.DeepCopy() + EditSchema(resSchema, &flattenVisitor{ + Flattener: f, + currentPackage: currentPackage, + }) + + return resSchema +} + +// RefParts splits a reference produced by the schema generator into its component +// type name and package name (if it's a cross-package reference). Note that +// referenced packages *must* be looked up relative to the current package. +func RefParts(ref string) (typ string, pkgName string, err error) { + if !strings.HasPrefix(ref, defPrefix) { + return "", "", fmt.Errorf("non-standard reference link %q", ref) + } + ref = ref[len(defPrefix):] + // decode the json pointer encodings + ref = strings.Replace(ref, "~1", "/", -1) + ref = strings.Replace(ref, "~0", "~", -1) + nameParts := strings.SplitN(ref, "~", 2) + + if len(nameParts) == 1 { + // local reference + return nameParts[0], "", nil + } + // cross-package reference + return nameParts[1], nameParts[0], nil +} + +// identFromRef converts the given schema ref from the given package back +// into the TypeIdent that it represents. +func identFromRef(ref string, contextPkg *loader.Package) (TypeIdent, error) { + typ, pkgName, err := RefParts(ref) + if err != nil { + return TypeIdent{}, err + } + + if pkgName == "" { + // a local reference + return TypeIdent{ + Name: typ, + Package: contextPkg, + }, nil + } + + // an external reference + return TypeIdent{ + Name: typ, + Package: contextPkg.Imports()[pkgName], + }, nil +} + +// preserveFields copies documentation fields from src into dst, preserving +// field-level documentation when flattening, and preserving field-level validation +// as allOf entries. +func preserveFields(dst *apiext.JSONSchemaProps, src apiext.JSONSchemaProps) { + srcDesc := src.Description + srcTitle := src.Title + srcExDoc := src.ExternalDocs + srcEx := src.Example + + src.Description, src.Title, src.ExternalDocs, src.Example = "", "", nil, nil + + src.Ref = nil + *dst = apiext.JSONSchemaProps{ + AllOf: []apiext.JSONSchemaProps{*dst, src}, + + // keep these, in case the source field doesn't specify anything useful + Description: dst.Description, + Title: dst.Title, + ExternalDocs: dst.ExternalDocs, + Example: dst.Example, + } + + if srcDesc != "" { + dst.Description = srcDesc + } + if srcTitle != "" { + dst.Title = srcTitle + } + if srcExDoc != nil { + dst.ExternalDocs = srcExDoc + } + if srcEx != nil { + dst.Example = srcEx + } +} + +// flattenVisitor visits each node in the schema, recursively flattening references. +type flattenVisitor struct { + *Flattener + + currentPackage *loader.Package + currentType *TypeIdent + currentSchema *apiext.JSONSchemaProps + originalField apiext.JSONSchemaProps +} + +func (f *flattenVisitor) Visit(baseSchema *apiext.JSONSchemaProps) SchemaVisitor { + if baseSchema == nil { + // end-of-node marker, cache the results + if f.currentType != nil { + f.cacheType(*f.currentType, *f.currentSchema) + // preserve field information *after* caching so that we don't + // accidentally cache field-level information onto the schema for + // the type in general. + preserveFields(f.currentSchema, f.originalField) + } + return f + } + + // if we get a type that's just a ref, resolve it + if baseSchema.Ref != nil && len(*baseSchema.Ref) > 0 { + // resolve this ref + refIdent, err := f.LookupReference(*baseSchema.Ref, f.currentPackage) + if err != nil { + f.currentPackage.AddError(err) + return nil + } + + // load and potentially flatten the schema + + // check the cache first... + if refSchemaCached, isCached := f.flattenedTypes[refIdent]; isCached { + // shallow copy is fine, it's just to avoid overwriting the doc fields + preserveFields(&refSchemaCached, *baseSchema) + *baseSchema = refSchemaCached + return nil // don't recurse, we're done + } + + // ...otherwise, we need to flatten + refSchema, err := f.loadUnflattenedSchema(refIdent) + if err != nil { + f.currentPackage.AddError(err) + return nil + } + refSchema = refSchema.DeepCopy() + + // keep field around to preserve field-level validation, docs, etc + origField := *baseSchema + *baseSchema = *refSchema + + // avoid loops (which shouldn't exist, but just in case) + // by marking a nil cached pointer before we start recursing + f.cacheType(refIdent, apiext.JSONSchemaProps{}) + + return &flattenVisitor{ + Flattener: f.Flattener, + + currentPackage: refIdent.Package, + currentType: &refIdent, + currentSchema: baseSchema, + originalField: origField, + } + } + + // otherwise, continue recursing... + if f.currentType != nil { + // ...but don't accidentally end this node early (for caching purposes) + return &flattenVisitor{ + Flattener: f.Flattener, + currentPackage: f.currentPackage, + } + } + + return f +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/gen.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/gen.go new file mode 100644 index 0000000000..c6c5f88b8d --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/gen.go @@ -0,0 +1,307 @@ +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package crd + +import ( + "fmt" + "go/ast" + "go/types" + "sort" + + apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + crdmarkers "sigs.k8s.io/controller-tools/pkg/crd/markers" + "sigs.k8s.io/controller-tools/pkg/genall" + "sigs.k8s.io/controller-tools/pkg/loader" + "sigs.k8s.io/controller-tools/pkg/markers" + "sigs.k8s.io/controller-tools/pkg/version" +) + +// The identifier for v1 CustomResourceDefinitions. +const v1 = "v1" + +// The default CustomResourceDefinition version to generate. +const defaultVersion = v1 + +// +controllertools:marker:generateHelp + +// Generator generates CustomResourceDefinition objects. +type Generator struct { + // IgnoreUnexportedFields indicates that we should skip unexported fields. + // + // Left unspecified, the default is false. + IgnoreUnexportedFields *bool `marker:",optional"` + + // AllowDangerousTypes allows types which are usually omitted from CRD generation + // because they are not recommended. + // + // Currently the following additional types are allowed when this is true: + // float32 + // float64 + // + // Left unspecified, the default is false + AllowDangerousTypes *bool `marker:",optional"` + + // MaxDescLen specifies the maximum description length for fields in CRD's OpenAPI schema. + // + // 0 indicates drop the description for all fields completely. + // n indicates limit the description to at most n characters and truncate the description to + // closest sentence boundary if it exceeds n characters. + MaxDescLen *int `marker:",optional"` + + // CRDVersions specifies the target API versions of the CRD type itself to + // generate. Defaults to v1. + // + // Currently, the only supported value is v1. + // + // The first version listed will be assumed to be the "default" version and + // will not get a version suffix in the output filename. + // + // You'll need to use "v1" to get support for features like defaulting, + // along with an API server that supports it (Kubernetes 1.16+). + CRDVersions []string `marker:"crdVersions,optional"` + + // GenerateEmbeddedObjectMeta specifies if any embedded ObjectMeta in the CRD should be generated + GenerateEmbeddedObjectMeta *bool `marker:",optional"` +} + +func (Generator) CheckFilter() loader.NodeFilter { + return filterTypesForCRDs +} +func (Generator) RegisterMarkers(into *markers.Registry) error { + return crdmarkers.Register(into) +} + +// transformRemoveCRDStatus ensures we do not write the CRD status field. +func transformRemoveCRDStatus(obj map[string]interface{}) error { + delete(obj, "status") + return nil +} + +func (g Generator) Generate(ctx *genall.GenerationContext) error { + parser := &Parser{ + Collector: ctx.Collector, + Checker: ctx.Checker, + // Perform defaulting here to avoid ambiguity later + IgnoreUnexportedFields: g.IgnoreUnexportedFields != nil && *g.IgnoreUnexportedFields == true, + AllowDangerousTypes: g.AllowDangerousTypes != nil && *g.AllowDangerousTypes == true, + // Indicates the parser on whether to register the ObjectMeta type or not + GenerateEmbeddedObjectMeta: g.GenerateEmbeddedObjectMeta != nil && *g.GenerateEmbeddedObjectMeta == true, + } + + AddKnownTypes(parser) + for _, root := range ctx.Roots { + parser.NeedPackage(root) + } + + metav1Pkg := FindMetav1(ctx.Roots) + if metav1Pkg == nil { + // no objects in the roots, since nothing imported metav1 + return nil + } + + // TODO: allow selecting a specific object + kubeKinds := FindKubeKinds(parser, metav1Pkg) + if len(kubeKinds) == 0 { + // no objects in the roots + return nil + } + + crdVersions := g.CRDVersions + + if len(crdVersions) == 0 { + crdVersions = []string{defaultVersion} + } + + for _, groupKind := range kubeKinds { + parser.NeedCRDFor(groupKind, g.MaxDescLen) + crdRaw := parser.CustomResourceDefinitions[groupKind] + addAttribution(&crdRaw) + + // Prevent the top level metadata for the CRD to be generate regardless of the intention in the arguments + FixTopLevelMetadata(crdRaw) + + versionedCRDs := make([]interface{}, len(crdVersions)) + for i, ver := range crdVersions { + conv, err := AsVersion(crdRaw, schema.GroupVersion{Group: apiext.SchemeGroupVersion.Group, Version: ver}) + if err != nil { + return err + } + versionedCRDs[i] = conv + } + + for i, crd := range versionedCRDs { + removeDescriptionFromMetadata(crd.(*apiext.CustomResourceDefinition)) + var fileName string + if i == 0 { + fileName = fmt.Sprintf("%s_%s.yaml", crdRaw.Spec.Group, crdRaw.Spec.Names.Plural) + } else { + fileName = fmt.Sprintf("%s_%s.%s.yaml", crdRaw.Spec.Group, crdRaw.Spec.Names.Plural, crdVersions[i]) + } + if err := ctx.WriteYAML(fileName, []interface{}{crd}, genall.WithTransform(transformRemoveCRDStatus)); err != nil { + return err + } + } + } + + return nil +} + +func removeDescriptionFromMetadata(crd *apiext.CustomResourceDefinition) { + for _, versionSpec := range crd.Spec.Versions { + if versionSpec.Schema != nil { + removeDescriptionFromMetadataProps(versionSpec.Schema.OpenAPIV3Schema) + } + } +} + +func removeDescriptionFromMetadataProps(v *apiext.JSONSchemaProps) { + if m, ok := v.Properties["metadata"]; ok { + meta := &m + if meta.Description != "" { + meta.Description = "" + v.Properties["metadata"] = m + + } + } +} + +// FixTopLevelMetadata resets the schema for the top-level metadata field which is needed for CRD validation +func FixTopLevelMetadata(crd apiext.CustomResourceDefinition) { + for _, v := range crd.Spec.Versions { + if v.Schema != nil && v.Schema.OpenAPIV3Schema != nil && v.Schema.OpenAPIV3Schema.Properties != nil { + schemaProperties := v.Schema.OpenAPIV3Schema.Properties + if _, ok := schemaProperties["metadata"]; ok { + schemaProperties["metadata"] = apiext.JSONSchemaProps{Type: "object"} + } + } + } +} + +// addAttribution adds attribution info to indicate controller-gen tool was used +// to generate this CRD definition along with the version info. +func addAttribution(crd *apiext.CustomResourceDefinition) { + if crd.ObjectMeta.Annotations == nil { + crd.ObjectMeta.Annotations = map[string]string{} + } + crd.ObjectMeta.Annotations["controller-gen.kubebuilder.io/version"] = version.Version() +} + +// FindMetav1 locates the actual package representing metav1 amongst +// the imports of the roots. +func FindMetav1(roots []*loader.Package) *loader.Package { + for _, root := range roots { + pkg := root.Imports()["k8s.io/apimachinery/pkg/apis/meta/v1"] + if pkg != nil { + return pkg + } + } + return nil +} + +// FindKubeKinds locates all types that contain TypeMeta and ObjectMeta +// (and thus may be a Kubernetes object), and returns the corresponding +// group-kinds. +func FindKubeKinds(parser *Parser, metav1Pkg *loader.Package) []schema.GroupKind { + // TODO(directxman12): technically, we should be finding metav1 per-package + kubeKinds := map[schema.GroupKind]struct{}{} + for typeIdent, info := range parser.Types { + hasObjectMeta := false + hasTypeMeta := false + + pkg := typeIdent.Package + pkg.NeedTypesInfo() + typesInfo := pkg.TypesInfo + + for _, field := range info.Fields { + if field.Name != "" { + // type and object meta are embedded, + // so they can't be this + continue + } + + fieldType := typesInfo.TypeOf(field.RawField.Type) + namedField, isNamed := fieldType.(*types.Named) + if !isNamed { + // ObjectMeta and TypeMeta are named types + continue + } + if namedField.Obj().Pkg() == nil { + // Embedded non-builtin universe type (specifically, it's probably `error`), + // so it can't be ObjectMeta or TypeMeta + continue + } + fieldPkgPath := loader.NonVendorPath(namedField.Obj().Pkg().Path()) + fieldPkg := pkg.Imports()[fieldPkgPath] + + // Compare the metav1 package by ID and not by the actual instance + // of the object. The objects in memory could be different due to + // loading from different root paths, even when they both refer to + // the same metav1 package. + if fieldPkg == nil || fieldPkg.ID != metav1Pkg.ID { + continue + } + + switch namedField.Obj().Name() { + case "ObjectMeta": + hasObjectMeta = true + case "TypeMeta": + hasTypeMeta = true + } + } + + if !hasObjectMeta || !hasTypeMeta { + continue + } + + groupKind := schema.GroupKind{ + Group: parser.GroupVersions[pkg].Group, + Kind: typeIdent.Name, + } + kubeKinds[groupKind] = struct{}{} + } + + groupKindList := make([]schema.GroupKind, 0, len(kubeKinds)) + for groupKind := range kubeKinds { + groupKindList = append(groupKindList, groupKind) + } + sort.Slice(groupKindList, func(i, j int) bool { + return groupKindList[i].String() < groupKindList[j].String() + }) + + return groupKindList +} + +// filterTypesForCRDs filters out all nodes that aren't used in CRD generation, +// like interfaces and struct fields without JSON tag. +func filterTypesForCRDs(node ast.Node) bool { + switch node := node.(type) { + case *ast.InterfaceType: + // skip interfaces, we never care about references in them + return false + case *ast.StructType: + return true + case *ast.Field: + _, hasTag := loader.ParseAstTag(node.Tag).Lookup("json") + // fields without JSON tags mean we have custom serialization, + // so only visit fields with tags. + return hasTag + default: + return true + } +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/known_types.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/known_types.go new file mode 100644 index 0000000000..9e8decb286 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/known_types.go @@ -0,0 +1,180 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package crd + +import ( + apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + + "sigs.k8s.io/controller-tools/pkg/loader" +) + +// KnownPackages overrides types in some comment packages that have custom validation +// but don't have validation markers on them (since they're from core Kubernetes). +var KnownPackages = map[string]PackageOverride{ + "k8s.io/api/core/v1": func(p *Parser, pkg *loader.Package) { + // Explicit defaulting for the corev1.Protocol type in lieu of https://github.com/kubernetes/enhancements/pull/1928 + p.Schemata[TypeIdent{Name: "Protocol", Package: pkg}] = apiext.JSONSchemaProps{ + Type: "string", + Default: &apiext.JSON{Raw: []byte(`"TCP"`)}, + } + p.AddPackage(pkg) + }, + + "k8s.io/apimachinery/pkg/apis/meta/v1": func(p *Parser, pkg *loader.Package) { + p.Schemata[TypeIdent{Name: "ObjectMeta", Package: pkg}] = apiext.JSONSchemaProps{ + Type: "object", + } + p.Schemata[TypeIdent{Name: "Time", Package: pkg}] = apiext.JSONSchemaProps{ + Type: "string", + Format: "date-time", + } + p.Schemata[TypeIdent{Name: "MicroTime", Package: pkg}] = apiext.JSONSchemaProps{ + Type: "string", + Format: "date-time", + } + p.Schemata[TypeIdent{Name: "Duration", Package: pkg}] = apiext.JSONSchemaProps{ + // TODO(directxman12): regexp validation for this (or get kube to support it as a format value) + Type: "string", + } + p.Schemata[TypeIdent{Name: "Fields", Package: pkg}] = apiext.JSONSchemaProps{ + // this is a recursive structure that can't be flattened or, for that matter, properly generated. + // so just treat it as an arbitrary map + Type: "object", + AdditionalProperties: &apiext.JSONSchemaPropsOrBool{Allows: true}, + } + p.AddPackage(pkg) // get the rest of the types + }, + + "k8s.io/apimachinery/pkg/api/resource": func(p *Parser, pkg *loader.Package) { + p.Schemata[TypeIdent{Name: "Quantity", Package: pkg}] = apiext.JSONSchemaProps{ + // TODO(directxman12): regexp validation for this (or get kube to support it as a format value) + XIntOrString: true, + AnyOf: []apiext.JSONSchemaProps{ + {Type: "integer"}, + {Type: "string"}, + }, + Pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + } + // No point in calling AddPackage, this is the sole inhabitant + }, + + "k8s.io/apimachinery/pkg/runtime": func(p *Parser, pkg *loader.Package) { + p.Schemata[TypeIdent{Name: "RawExtension", Package: pkg}] = apiext.JSONSchemaProps{ + // TODO(directxman12): regexp validation for this (or get kube to support it as a format value) + Type: "object", + XPreserveUnknownFields: boolPtr(true), + } + p.AddPackage(pkg) // get the rest of the types + }, + + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured": func(p *Parser, pkg *loader.Package) { + p.Schemata[TypeIdent{Name: "Unstructured", Package: pkg}] = apiext.JSONSchemaProps{ + Type: "object", + } + p.AddPackage(pkg) // get the rest of the types + }, + + "k8s.io/apimachinery/pkg/util/intstr": func(p *Parser, pkg *loader.Package) { + p.Schemata[TypeIdent{Name: "IntOrString", Package: pkg}] = apiext.JSONSchemaProps{ + XIntOrString: true, + AnyOf: []apiext.JSONSchemaProps{ + {Type: "integer"}, + {Type: "string"}, + }, + } + // No point in calling AddPackage, this is the sole inhabitant + }, + + "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1": func(p *Parser, pkg *loader.Package) { + p.Schemata[TypeIdent{Name: "JSON", Package: pkg}] = apiext.JSONSchemaProps{ + XPreserveUnknownFields: boolPtr(true), + } + p.AddPackage(pkg) // get the rest of the types + }, + "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1": func(p *Parser, pkg *loader.Package) { + p.Schemata[TypeIdent{Name: "JSON", Package: pkg}] = apiext.JSONSchemaProps{ + XPreserveUnknownFields: boolPtr(true), + } + p.AddPackage(pkg) // get the rest of the types + }, +} + +// ObjectMetaPackages overrides the ObjectMeta in all types +var ObjectMetaPackages = map[string]PackageOverride{ + "k8s.io/apimachinery/pkg/apis/meta/v1": func(p *Parser, pkg *loader.Package) { + // execute the KnowPackages for `k8s.io/apimachinery/pkg/apis/meta/v1` if any + if f, ok := KnownPackages["k8s.io/apimachinery/pkg/apis/meta/v1"]; ok { + f(p, pkg) + } + // This is an allow-listed set of properties of ObjectMeta, other runtime properties are not part of this list + // See more discussion: https://github.com/kubernetes-sigs/controller-tools/pull/395#issuecomment-691919433 + p.Schemata[TypeIdent{Name: "ObjectMeta", Package: pkg}] = apiext.JSONSchemaProps{ + Type: "object", + Properties: map[string]apiext.JSONSchemaProps{ + "name": { + Type: "string", + }, + "namespace": { + Type: "string", + }, + "annotations": { + Type: "object", + AdditionalProperties: &apiext.JSONSchemaPropsOrBool{ + Schema: &apiext.JSONSchemaProps{ + Type: "string", + }, + }, + }, + "labels": { + Type: "object", + AdditionalProperties: &apiext.JSONSchemaPropsOrBool{ + Schema: &apiext.JSONSchemaProps{ + Type: "string", + }, + }, + }, + "finalizers": { + Type: "array", + Items: &apiext.JSONSchemaPropsOrArray{ + Schema: &apiext.JSONSchemaProps{ + Type: "string", + }, + }, + }, + }, + } + }, +} + +func boolPtr(b bool) *bool { + return &b +} + +// AddKnownTypes registers the packages overrides in KnownPackages with the given parser. +func AddKnownTypes(parser *Parser) { + // ensure everything is there before adding to PackageOverrides + // TODO(directxman12): this is a bit of a hack, maybe just use constructors? + parser.init() + for pkgName, override := range KnownPackages { + parser.PackageOverrides[pkgName] = override + } + // if we want to generate the embedded ObjectMeta in the CRD we need to add the ObjectMetaPackages + if parser.GenerateEmbeddedObjectMeta { + for pkgName, override := range ObjectMetaPackages { + parser.PackageOverrides[pkgName] = override + } + } +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/crd.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/crd.go new file mode 100644 index 0000000000..0c637c773c --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/crd.go @@ -0,0 +1,387 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package markers + +import ( + "fmt" + "strings" + + apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + + "sigs.k8s.io/controller-tools/pkg/markers" +) + +// CRDMarkers lists all markers that directly modify the CRD (not validation +// schemas). +var CRDMarkers = []*definitionWithHelp{ + // TODO(directxman12): more detailed help + must(markers.MakeDefinition("kubebuilder:subresource:status", markers.DescribesType, SubresourceStatus{})). + WithHelp(SubresourceStatus{}.Help()), + + must(markers.MakeDefinition("kubebuilder:subresource:scale", markers.DescribesType, SubresourceScale{})). + WithHelp(SubresourceScale{}.Help()), + + must(markers.MakeDefinition("kubebuilder:printcolumn", markers.DescribesType, PrintColumn{})). + WithHelp(PrintColumn{}.Help()), + + must(markers.MakeDefinition("kubebuilder:resource", markers.DescribesType, Resource{})). + WithHelp(Resource{}.Help()), + + must(markers.MakeDefinition("kubebuilder:storageversion", markers.DescribesType, StorageVersion{})). + WithHelp(StorageVersion{}.Help()), + + must(markers.MakeDefinition("kubebuilder:skipversion", markers.DescribesType, SkipVersion{})). + WithHelp(SkipVersion{}.Help()), + + must(markers.MakeDefinition("kubebuilder:unservedversion", markers.DescribesType, UnservedVersion{})). + WithHelp(UnservedVersion{}.Help()), + + must(markers.MakeDefinition("kubebuilder:deprecatedversion", markers.DescribesType, DeprecatedVersion{})). + WithHelp(DeprecatedVersion{}.Help()), + + must(markers.MakeDefinition("kubebuilder:metadata", markers.DescribesType, Metadata{})). + WithHelp(Metadata{}.Help()), +} + +// TODO: categories and singular used to be annotations types +// TODO: doc + +func init() { + AllDefinitions = append(AllDefinitions, CRDMarkers...) +} + +// +controllertools:marker:generateHelp:category=CRD + +// SubresourceStatus enables the "/status" subresource on a CRD. +type SubresourceStatus struct{} + +func (s SubresourceStatus) ApplyToCRD(crd *apiext.CustomResourceDefinitionSpec, version string) error { + var subresources *apiext.CustomResourceSubresources + for i := range crd.Versions { + ver := &crd.Versions[i] + if ver.Name != version { + continue + } + if ver.Subresources == nil { + ver.Subresources = &apiext.CustomResourceSubresources{} + } + subresources = ver.Subresources + break + } + if subresources == nil { + return fmt.Errorf("status subresource applied to version %q not in CRD", version) + } + subresources.Status = &apiext.CustomResourceSubresourceStatus{} + return nil +} + +// +controllertools:marker:generateHelp:category=CRD + +// SubresourceScale enables the "/scale" subresource on a CRD. +type SubresourceScale struct { + // marker names are leftover legacy cruft + + // SpecPath specifies the jsonpath to the replicas field for the scale's spec. + SpecPath string `marker:"specpath"` + + // StatusPath specifies the jsonpath to the replicas field for the scale's status. + StatusPath string `marker:"statuspath"` + + // SelectorPath specifies the jsonpath to the pod label selector field for the scale's status. + // + // The selector field must be the *string* form (serialized form) of a selector. + // Setting a pod label selector is necessary for your type to work with the HorizontalPodAutoscaler. + SelectorPath *string `marker:"selectorpath"` +} + +func (s SubresourceScale) ApplyToCRD(crd *apiext.CustomResourceDefinitionSpec, version string) error { + var subresources *apiext.CustomResourceSubresources + for i := range crd.Versions { + ver := &crd.Versions[i] + if ver.Name != version { + continue + } + if ver.Subresources == nil { + ver.Subresources = &apiext.CustomResourceSubresources{} + } + subresources = ver.Subresources + break + } + if subresources == nil { + return fmt.Errorf("scale subresource applied to version %q not in CRD", version) + } + subresources.Scale = &apiext.CustomResourceSubresourceScale{ + SpecReplicasPath: s.SpecPath, + StatusReplicasPath: s.StatusPath, + LabelSelectorPath: s.SelectorPath, + } + return nil +} + +// +controllertools:marker:generateHelp:category=CRD + +// StorageVersion marks this version as the "storage version" for the CRD for conversion. +// +// When conversion is enabled for a CRD (i.e. it's not a trivial-versions/single-version CRD), +// one version is set as the "storage version" to be stored in etcd. Attempting to store any +// other version will result in conversion to the storage version via a conversion webhook. +type StorageVersion struct{} + +func (s StorageVersion) ApplyToCRD(crd *apiext.CustomResourceDefinitionSpec, version string) error { + if version == "" { + // single-version, do nothing + return nil + } + // multi-version + for i := range crd.Versions { + ver := &crd.Versions[i] + if ver.Name != version { + continue + } + ver.Storage = true + break + } + return nil +} + +// +controllertools:marker:generateHelp:category=CRD + +// SkipVersion removes the particular version of the CRD from the CRDs spec. +// +// This is useful if you need to skip generating and listing version entries +// for 'internal' resource versions, which typically exist if using the +// Kubernetes upstream conversion-gen tool. +type SkipVersion struct{} + +func (s SkipVersion) ApplyToCRD(crd *apiext.CustomResourceDefinitionSpec, version string) error { + if version == "" { + // single-version, this is an invalid state + return fmt.Errorf("cannot skip a version if there is only a single version") + } + var versions []apiext.CustomResourceDefinitionVersion + // multi-version + for i := range crd.Versions { + ver := crd.Versions[i] + if ver.Name == version { + // skip the skipped version + continue + } + versions = append(versions, ver) + } + crd.Versions = versions + return nil +} + +// +controllertools:marker:generateHelp:category=CRD + +// PrintColumn adds a column to "kubectl get" output for this CRD. +type PrintColumn struct { + // Name specifies the name of the column. + Name string + + // Type indicates the type of the column. + // + // It may be any OpenAPI data type listed at + // https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types. + Type string + + // JSONPath specifies the jsonpath expression used to extract the value of the column. + JSONPath string `marker:"JSONPath"` // legacy cruft + + // Description specifies the help/description for this column. + Description string `marker:",optional"` + + // Format specifies the format of the column. + // + // It may be any OpenAPI data format corresponding to the type, listed at + // https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types. + Format string `marker:",optional"` + + // Priority indicates how important it is that this column be displayed. + // + // Lower priority (*higher* numbered) columns will be hidden if the terminal + // width is too small. + Priority int32 `marker:",optional"` +} + +func (s PrintColumn) ApplyToCRD(crd *apiext.CustomResourceDefinitionSpec, version string) error { + var columns *[]apiext.CustomResourceColumnDefinition + for i := range crd.Versions { + ver := &crd.Versions[i] + if ver.Name != version { + continue + } + if ver.Subresources == nil { + ver.Subresources = &apiext.CustomResourceSubresources{} + } + columns = &ver.AdditionalPrinterColumns + break + } + if columns == nil { + return fmt.Errorf("printer columns applied to version %q not in CRD", version) + } + + *columns = append(*columns, apiext.CustomResourceColumnDefinition{ + Name: s.Name, + Type: s.Type, + JSONPath: s.JSONPath, + Description: s.Description, + Format: s.Format, + Priority: s.Priority, + }) + + return nil +} + +// +controllertools:marker:generateHelp:category=CRD + +// Resource configures naming and scope for a CRD. +type Resource struct { + // Path specifies the plural "resource" for this CRD. + // + // It generally corresponds to a plural, lower-cased version of the Kind. + // See https://book.kubebuilder.io/cronjob-tutorial/gvks.html. + Path string `marker:",optional"` + + // ShortName specifies aliases for this CRD. + // + // Short names are often used when people have work with your resource + // over and over again. For instance, "rs" for "replicaset" or + // "crd" for customresourcedefinition. + ShortName []string `marker:",optional"` + + // Categories specifies which group aliases this resource is part of. + // + // Group aliases are used to work with groups of resources at once. + // The most common one is "all" which covers about a third of the base + // resources in Kubernetes, and is generally used for "user-facing" resources. + Categories []string `marker:",optional"` + + // Singular overrides the singular form of your resource. + // + // The singular form is otherwise defaulted off the plural (path). + Singular string `marker:",optional"` + + // Scope overrides the scope of the CRD (Cluster vs Namespaced). + // + // Scope defaults to "Namespaced". Cluster-scoped ("Cluster") resources + // don't exist in namespaces. + Scope string `marker:",optional"` +} + +func (s Resource) ApplyToCRD(crd *apiext.CustomResourceDefinitionSpec, version string) error { + if s.Path != "" { + crd.Names.Plural = s.Path + } + if s.Singular != "" { + crd.Names.Singular = s.Singular + } + crd.Names.ShortNames = s.ShortName + crd.Names.Categories = s.Categories + + switch s.Scope { + case "": + crd.Scope = apiext.NamespaceScoped + default: + crd.Scope = apiext.ResourceScope(s.Scope) + } + + return nil +} + +// +controllertools:marker:generateHelp:category=CRD + +// UnservedVersion does not serve this version. +// +// This is useful if you need to drop support for a version in favor of a newer version. +type UnservedVersion struct{} + +func (s UnservedVersion) ApplyToCRD(crd *apiext.CustomResourceDefinitionSpec, version string) error { + for i := range crd.Versions { + ver := &crd.Versions[i] + if ver.Name != version { + continue + } + ver.Served = false + break + } + return nil +} + +// NB(directxman12): singular was historically distinct, so we keep it here for backwards compat + +// +controllertools:marker:generateHelp:category=CRD + +// DeprecatedVersion marks this version as deprecated. +type DeprecatedVersion struct { + // Warning message to be shown on the deprecated version + Warning *string `marker:",optional"` +} + +func (s DeprecatedVersion) ApplyToCRD(crd *apiext.CustomResourceDefinitionSpec, version string) error { + if version == "" { + // single-version, do nothing + return nil + } + // multi-version + for i := range crd.Versions { + ver := &crd.Versions[i] + if ver.Name != version { + continue + } + ver.Deprecated = true + ver.DeprecationWarning = s.Warning + break + } + return nil +} + +// +controllertools:marker:generateHelp:category=CRD + +// Metadata configures the additional annotations or labels for this CRD. +// For example adding annotation "api-approved.kubernetes.io" for a CRD with Kubernetes groups, +// or annotation "cert-manager.io/inject-ca-from-secret" for a CRD that needs CA injection. +type Metadata struct { + // Annotations will be added into the annotations of this CRD. + Annotations []string `marker:",optional"` + // Labels will be added into the labels of this CRD. + Labels []string `marker:",optional"` +} + +func (s Metadata) ApplyToCRD(crd *apiext.CustomResourceDefinition, version string) error { + if len(s.Annotations) > 0 { + if crd.Annotations == nil { + crd.Annotations = map[string]string{} + } + for _, str := range s.Annotations { + kv := strings.SplitN(str, "=", 2) + crd.Annotations[kv[0]] = kv[1] + } + } + + if len(s.Labels) > 0 { + if crd.Labels == nil { + crd.Labels = map[string]string{} + } + for _, str := range s.Labels { + kv := strings.SplitN(str, "=", 2) + crd.Labels[kv[0]] = kv[1] + } + } + + return nil +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/doc.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/doc.go new file mode 100644 index 0000000000..995af44b37 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/doc.go @@ -0,0 +1,46 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package markers defines markers for generating schema valiation +// and CRD structure. +// +// All markers related to CRD generation live in AllDefinitions. +// +// # Validation Markers +// +// Validation markers have values that implement ApplyToSchema +// (crd.SchemaMarker). Any marker implementing this will automatically +// be run after the rest of a given schema node has been generated. +// Markers that need to be run before any other markers can also +// implement ApplyFirst, but this is discouraged and may change +// in the future. +// +// All validation markers start with "+kubebuilder:validation", and +// have the same name as their type name. +// +// # CRD Markers +// +// Markers that modify anything in the CRD itself *except* for the schema +// implement ApplyToCRD (crd.CRDMarker). They are expected to detect whether +// they should apply themselves to a specific version in the CRD (as passed to +// them), or to the root-level CRD for legacy cases. They are applied *after* +// the rest of the CRD is computed. +// +// # Misc +// +// This package also defines the "+groupName" and "+versionName" package-level +// markers, for defining package<->group-version mappings. +package markers diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/package.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/package.go new file mode 100644 index 0000000000..cebe8fa4b1 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/package.go @@ -0,0 +1,40 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package markers + +import ( + "sigs.k8s.io/controller-tools/pkg/markers" +) + +func init() { + AllDefinitions = append(AllDefinitions, + must(markers.MakeDefinition("groupName", markers.DescribesPackage, "")). + WithHelp(markers.SimpleHelp("CRD", "specifies the API group name for this package.")), + + must(markers.MakeDefinition("versionName", markers.DescribesPackage, "")). + WithHelp(markers.SimpleHelp("CRD", "overrides the API group version for this package (defaults to the package name).")), + + must(markers.MakeDefinition("kubebuilder:validation:Optional", markers.DescribesPackage, struct{}{})). + WithHelp(markers.SimpleHelp("CRD validation", "specifies that all fields in this package are optional by default.")), + + must(markers.MakeDefinition("kubebuilder:validation:Required", markers.DescribesPackage, struct{}{})). + WithHelp(markers.SimpleHelp("CRD validation", "specifies that all fields in this package are required by default.")), + + must(markers.MakeDefinition("kubebuilder:skip", markers.DescribesPackage, struct{}{})). + WithHelp(markers.SimpleHelp("CRD", "don't consider this package as an API version.")), + ) +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/register.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/register.go new file mode 100644 index 0000000000..0e7c426942 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/register.go @@ -0,0 +1,83 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package markers + +import ( + "reflect" + + "sigs.k8s.io/controller-tools/pkg/markers" +) + +type definitionWithHelp struct { + *markers.Definition + Help *markers.DefinitionHelp +} + +func (d *definitionWithHelp) WithHelp(help *markers.DefinitionHelp) *definitionWithHelp { + d.Help = help + return d +} + +func (d *definitionWithHelp) Register(reg *markers.Registry) error { + if err := reg.Register(d.Definition); err != nil { + return err + } + if d.Help != nil { + reg.AddHelp(d.Definition, d.Help) + } + return nil +} + +func must(def *markers.Definition, err error) *definitionWithHelp { + return &definitionWithHelp{ + Definition: markers.Must(def, err), + } +} + +// AllDefinitions contains all marker definitions for this package. +var AllDefinitions []*definitionWithHelp + +type hasHelp interface { + Help() *markers.DefinitionHelp +} + +// mustMakeAllWithPrefix converts each object into a marker definition using +// the object's type's with the prefix to form the marker name. +func mustMakeAllWithPrefix(prefix string, target markers.TargetType, objs ...interface{}) []*definitionWithHelp { + defs := make([]*definitionWithHelp, len(objs)) + for i, obj := range objs { + name := prefix + ":" + reflect.TypeOf(obj).Name() + def, err := markers.MakeDefinition(name, target, obj) + if err != nil { + panic(err) + } + defs[i] = &definitionWithHelp{Definition: def, Help: obj.(hasHelp).Help()} + } + + return defs +} + +// Register registers all definitions for CRD generation to the given registry. +func Register(reg *markers.Registry) error { + for _, def := range AllDefinitions { + if err := def.Register(reg); err != nil { + return err + } + } + + return nil +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/topology.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/topology.go new file mode 100644 index 0000000000..a92995c802 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/topology.go @@ -0,0 +1,163 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package markers + +import ( + "fmt" + + apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + "sigs.k8s.io/controller-tools/pkg/markers" +) + +// TopologyMarkers specify topology markers (i.e. markers that describe if a +// list behaves as an associative-list or a set, if a map is atomic or not). +var TopologyMarkers = []*definitionWithHelp{ + must(markers.MakeDefinition("listMapKey", markers.DescribesField, ListMapKey(""))). + WithHelp(ListMapKey("").Help()), + must(markers.MakeDefinition("listMapKey", markers.DescribesType, ListMapKey(""))). + WithHelp(ListMapKey("").Help()), + must(markers.MakeDefinition("listType", markers.DescribesField, ListType(""))). + WithHelp(ListType("").Help()), + must(markers.MakeDefinition("listType", markers.DescribesType, ListType(""))). + WithHelp(ListType("").Help()), + must(markers.MakeDefinition("mapType", markers.DescribesField, MapType(""))). + WithHelp(MapType("").Help()), + must(markers.MakeDefinition("mapType", markers.DescribesType, MapType(""))). + WithHelp(MapType("").Help()), + must(markers.MakeDefinition("structType", markers.DescribesField, StructType(""))). + WithHelp(StructType("").Help()), + must(markers.MakeDefinition("structType", markers.DescribesType, StructType(""))). + WithHelp(StructType("").Help()), +} + +func init() { + AllDefinitions = append(AllDefinitions, TopologyMarkers...) +} + +// +controllertools:marker:generateHelp:category="CRD processing" + +// ListType specifies the type of data-structure that the list +// represents (map, set, atomic). +// +// Possible data-structure types of a list are: +// +// - "map": it needs to have a key field, which will be used to build an +// associative list. A typical example is a the pod container list, +// which is indexed by the container name. +// +// - "set": Fields need to be "scalar", and there can be only one +// occurrence of each. +// +// - "atomic": All the fields in the list are treated as a single value, +// are typically manipulated together by the same actor. +type ListType string + +// +controllertools:marker:generateHelp:category="CRD processing" + +// ListMapKey specifies the keys to map listTypes. +// +// It indicates the index of a map list. They can be repeated if multiple keys +// must be used. It can only be used when ListType is set to map, and the keys +// should be scalar types. +type ListMapKey string + +// +controllertools:marker:generateHelp:category="CRD processing" + +// MapType specifies the level of atomicity of the map; +// i.e. whether each item in the map is independent of the others, +// or all fields are treated as a single unit. +// +// Possible values: +// +// - "granular": items in the map are independent of each other, +// and can be manipulated by different actors. +// This is the default behavior. +// +// - "atomic": all fields are treated as one unit. +// Any changes have to replace the entire map. +type MapType string + +// +controllertools:marker:generateHelp:category="CRD processing" + +// StructType specifies the level of atomicity of the struct; +// i.e. whether each field in the struct is independent of the others, +// or all fields are treated as a single unit. +// +// Possible values: +// +// - "granular": fields in the struct are independent of each other, +// and can be manipulated by different actors. +// This is the default behavior. +// +// - "atomic": all fields are treated as one unit. +// Any changes have to replace the entire struct. +type StructType string + +func (l ListType) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + if schema.Type != "array" { + return fmt.Errorf("must apply listType to an array, found %s", schema.Type) + } + if l != "map" && l != "atomic" && l != "set" { + return fmt.Errorf(`ListType must be either "map", "set" or "atomic"`) + } + p := string(l) + schema.XListType = &p + return nil +} + +func (l ListType) ApplyFirst() {} + +func (l ListMapKey) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + if schema.Type != "array" { + return fmt.Errorf("must apply listMapKey to an array, found %s", schema.Type) + } + if schema.XListType == nil || *schema.XListType != "map" { + return fmt.Errorf("must apply listMapKey to an associative-list") + } + schema.XListMapKeys = append(schema.XListMapKeys, string(l)) + return nil +} + +func (m MapType) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + if schema.Type != "object" { + return fmt.Errorf("must apply mapType to an object") + } + + if m != "atomic" && m != "granular" { + return fmt.Errorf(`MapType must be either "granular" or "atomic"`) + } + + p := string(m) + schema.XMapType = &p + + return nil +} + +func (s StructType) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + if schema.Type != "object" && schema.Type != "" { + return fmt.Errorf("must apply structType to an object; either explicitly set or defaulted through an empty schema type") + } + + if s != "atomic" && s != "granular" { + return fmt.Errorf(`StructType must be either "granular" or "atomic"`) + } + + p := string(s) + schema.XMapType = &p + + return nil +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/validation.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/validation.go new file mode 100644 index 0000000000..67522c9d75 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/validation.go @@ -0,0 +1,520 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package markers + +import ( + "encoding/json" + "fmt" + "math" + + apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + + "sigs.k8s.io/controller-tools/pkg/markers" +) + +const ( + SchemalessName = "kubebuilder:validation:Schemaless" +) + +// ValidationMarkers lists all available markers that affect CRD schema generation, +// except for the few that don't make sense as type-level markers (see FieldOnlyMarkers). +// All markers start with `+kubebuilder:validation:`, and continue with their type name. +// A copy is produced of all markers that describes types as well, for making types +// reusable and writing complex validations on slice items. +var ValidationMarkers = mustMakeAllWithPrefix("kubebuilder:validation", markers.DescribesField, + + // numeric markers + + Maximum(0), + Minimum(0), + ExclusiveMaximum(false), + ExclusiveMinimum(false), + MultipleOf(0), + MinProperties(0), + MaxProperties(0), + + // string markers + + MaxLength(0), + MinLength(0), + Pattern(""), + + // slice markers + + MaxItems(0), + MinItems(0), + UniqueItems(false), + + // general markers + + Enum(nil), + Format(""), + Type(""), + XPreserveUnknownFields{}, + XEmbeddedResource{}, + XIntOrString{}, + XValidation{}, +) + +// FieldOnlyMarkers list field-specific validation markers (i.e. those markers that don't make +// sense on a type, and thus aren't in ValidationMarkers). +var FieldOnlyMarkers = []*definitionWithHelp{ + must(markers.MakeDefinition("kubebuilder:validation:Required", markers.DescribesField, struct{}{})). + WithHelp(markers.SimpleHelp("CRD validation", "specifies that this field is required, if fields are optional by default.")), + must(markers.MakeDefinition("kubebuilder:validation:Optional", markers.DescribesField, struct{}{})). + WithHelp(markers.SimpleHelp("CRD validation", "specifies that this field is optional, if fields are required by default.")), + must(markers.MakeDefinition("optional", markers.DescribesField, struct{}{})). + WithHelp(markers.SimpleHelp("CRD validation", "specifies that this field is optional, if fields are required by default.")), + + must(markers.MakeDefinition("nullable", markers.DescribesField, Nullable{})). + WithHelp(Nullable{}.Help()), + + must(markers.MakeAnyTypeDefinition("kubebuilder:default", markers.DescribesField, Default{})). + WithHelp(Default{}.Help()), + + must(markers.MakeAnyTypeDefinition("kubebuilder:example", markers.DescribesField, Example{})). + WithHelp(Example{}.Help()), + + must(markers.MakeDefinition("kubebuilder:validation:EmbeddedResource", markers.DescribesField, XEmbeddedResource{})). + WithHelp(XEmbeddedResource{}.Help()), + + must(markers.MakeDefinition(SchemalessName, markers.DescribesField, Schemaless{})). + WithHelp(Schemaless{}.Help()), +} + +// ValidationIshMarkers are field-and-type markers that don't fall under the +// :validation: prefix, and/or don't have a name that directly matches their +// type. +var ValidationIshMarkers = []*definitionWithHelp{ + must(markers.MakeDefinition("kubebuilder:pruning:PreserveUnknownFields", markers.DescribesField, XPreserveUnknownFields{})). + WithHelp(XPreserveUnknownFields{}.Help()), + must(markers.MakeDefinition("kubebuilder:pruning:PreserveUnknownFields", markers.DescribesType, XPreserveUnknownFields{})). + WithHelp(XPreserveUnknownFields{}.Help()), +} + +func init() { + AllDefinitions = append(AllDefinitions, ValidationMarkers...) + + for _, def := range ValidationMarkers { + newDef := *def.Definition + // copy both parts so we don't change the definition + typDef := definitionWithHelp{ + Definition: &newDef, + Help: def.Help, + } + typDef.Target = markers.DescribesType + AllDefinitions = append(AllDefinitions, &typDef) + } + + AllDefinitions = append(AllDefinitions, FieldOnlyMarkers...) + AllDefinitions = append(AllDefinitions, ValidationIshMarkers...) +} + +// +controllertools:marker:generateHelp:category="CRD validation" +// Maximum specifies the maximum numeric value that this field can have. +type Maximum float64 + +func (m Maximum) Value() float64 { + return float64(m) +} + +// +controllertools:marker:generateHelp:category="CRD validation" +// Minimum specifies the minimum numeric value that this field can have. Negative numbers are supported. +type Minimum float64 + +func (m Minimum) Value() float64 { + return float64(m) +} + +// +controllertools:marker:generateHelp:category="CRD validation" +// ExclusiveMinimum indicates that the minimum is "up to" but not including that value. +type ExclusiveMinimum bool + +// +controllertools:marker:generateHelp:category="CRD validation" +// ExclusiveMaximum indicates that the maximum is "up to" but not including that value. +type ExclusiveMaximum bool + +// +controllertools:marker:generateHelp:category="CRD validation" +// MultipleOf specifies that this field must have a numeric value that's a multiple of this one. +type MultipleOf float64 + +func (m MultipleOf) Value() float64 { + return float64(m) +} + +// +controllertools:marker:generateHelp:category="CRD validation" +// MaxLength specifies the maximum length for this string. +type MaxLength int + +// +controllertools:marker:generateHelp:category="CRD validation" +// MinLength specifies the minimum length for this string. +type MinLength int + +// +controllertools:marker:generateHelp:category="CRD validation" +// Pattern specifies that this string must match the given regular expression. +type Pattern string + +// +controllertools:marker:generateHelp:category="CRD validation" +// MaxItems specifies the maximum length for this list. +type MaxItems int + +// +controllertools:marker:generateHelp:category="CRD validation" +// MinItems specifies the minimun length for this list. +type MinItems int + +// +controllertools:marker:generateHelp:category="CRD validation" +// UniqueItems specifies that all items in this list must be unique. +type UniqueItems bool + +// +controllertools:marker:generateHelp:category="CRD validation" +// MaxProperties restricts the number of keys in an object +type MaxProperties int + +// +controllertools:marker:generateHelp:category="CRD validation" +// MinProperties restricts the number of keys in an object +type MinProperties int + +// +controllertools:marker:generateHelp:category="CRD validation" +// Enum specifies that this (scalar) field is restricted to the *exact* values specified here. +type Enum []interface{} + +// +controllertools:marker:generateHelp:category="CRD validation" +// Format specifies additional "complex" formatting for this field. +// +// For example, a date-time field would be marked as "type: string" and +// "format: date-time". +type Format string + +// +controllertools:marker:generateHelp:category="CRD validation" +// Type overrides the type for this field (which defaults to the equivalent of the Go type). +// +// This generally must be paired with custom serialization. For example, the +// metav1.Time field would be marked as "type: string" and "format: date-time". +type Type string + +// +controllertools:marker:generateHelp:category="CRD validation" +// Nullable marks this field as allowing the "null" value. +// +// This is often not necessary, but may be helpful with custom serialization. +type Nullable struct{} + +// +controllertools:marker:generateHelp:category="CRD validation" +// Default sets the default value for this field. +// +// A default value will be accepted as any value valid for the +// field. Formatting for common types include: boolean: `true`, string: +// `Cluster`, numerical: `1.24`, array: `{1,2}`, object: `{policy: +// "delete"}`). Defaults should be defined in pruned form, and only best-effort +// validation will be performed. Full validation of a default requires +// submission of the containing CRD to an apiserver. +type Default struct { + Value interface{} +} + +// +controllertools:marker:generateHelp:category="CRD validation" +// Example sets the example value for this field. +// +// An example value will be accepted as any value valid for the +// field. Formatting for common types include: boolean: `true`, string: +// `Cluster`, numerical: `1.24`, array: `{1,2}`, object: `{policy: +// "delete"}`). Examples should be defined in pruned form, and only best-effort +// validation will be performed. Full validation of an example requires +// submission of the containing CRD to an apiserver. +type Example struct { + Value interface{} +} + +// +controllertools:marker:generateHelp:category="CRD processing" +// PreserveUnknownFields stops the apiserver from pruning fields which are not specified. +// +// By default the apiserver drops unknown fields from the request payload +// during the decoding step. This marker stops the API server from doing so. +// It affects fields recursively, but switches back to normal pruning behaviour +// if nested properties or additionalProperties are specified in the schema. +// This can either be true or undefined. False +// is forbidden. +// +// NB: The kubebuilder:validation:XPreserveUnknownFields variant is deprecated +// in favor of the kubebuilder:pruning:PreserveUnknownFields variant. They function +// identically. +type XPreserveUnknownFields struct{} + +// +controllertools:marker:generateHelp:category="CRD validation" +// EmbeddedResource marks a fields as an embedded resource with apiVersion, kind and metadata fields. +// +// An embedded resource is a value that has apiVersion, kind and metadata fields. +// They are validated implicitly according to the semantics of the currently +// running apiserver. It is not necessary to add any additional schema for these +// field, yet it is possible. This can be combined with PreserveUnknownFields. +type XEmbeddedResource struct{} + +// +controllertools:marker:generateHelp:category="CRD validation" +// IntOrString marks a fields as an IntOrString. +// +// This is required when applying patterns or other validations to an IntOrString +// field. Knwon information about the type is applied during the collapse phase +// and as such is not normally available during marker application. +type XIntOrString struct{} + +// +controllertools:marker:generateHelp:category="CRD validation" +// Schemaless marks a field as being a schemaless object. +// +// Schemaless objects are not introspected, so you must provide +// any type and validation information yourself. One use for this +// tag is for embedding fields that hold JSONSchema typed objects. +// Because this field disables all type checking, it is recommended +// to be used only as a last resort. +type Schemaless struct{} + +func hasNumericType(schema *apiext.JSONSchemaProps) bool { + return schema.Type == "integer" || schema.Type == "number" +} + +func isIntegral(value float64) bool { + return value == math.Trunc(value) && !math.IsNaN(value) && !math.IsInf(value, 0) +} + +// +controllertools:marker:generateHelp:category="CRD validation" +// XValidation marks a field as requiring a value for which a given +// expression evaluates to true. +// +// This marker may be repeated to specify multiple expressions, all of +// which must evaluate to true. +type XValidation struct { + Rule string + Message string `marker:",optional"` +} + +func (m Maximum) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + if !hasNumericType(schema) { + return fmt.Errorf("must apply maximum to a numeric value, found %s", schema.Type) + } + + if schema.Type == "integer" && !isIntegral(m.Value()) { + return fmt.Errorf("cannot apply non-integral maximum validation (%v) to integer value", m.Value()) + } + + val := m.Value() + schema.Maximum = &val + return nil +} + +func (m Minimum) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + if !hasNumericType(schema) { + return fmt.Errorf("must apply minimum to a numeric value, found %s", schema.Type) + } + + if schema.Type == "integer" && !isIntegral(m.Value()) { + return fmt.Errorf("cannot apply non-integral minimum validation (%v) to integer value", m.Value()) + } + + val := m.Value() + schema.Minimum = &val + return nil +} + +func (m ExclusiveMaximum) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + if !hasNumericType(schema) { + return fmt.Errorf("must apply exclusivemaximum to a numeric value, found %s", schema.Type) + } + schema.ExclusiveMaximum = bool(m) + return nil +} + +func (m ExclusiveMinimum) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + if !hasNumericType(schema) { + return fmt.Errorf("must apply exclusiveminimum to a numeric value, found %s", schema.Type) + } + + schema.ExclusiveMinimum = bool(m) + return nil +} + +func (m MultipleOf) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + if !hasNumericType(schema) { + return fmt.Errorf("must apply multipleof to a numeric value, found %s", schema.Type) + } + + if schema.Type == "integer" && !isIntegral(m.Value()) { + return fmt.Errorf("cannot apply non-integral multipleof validation (%v) to integer value", m.Value()) + } + + val := m.Value() + schema.MultipleOf = &val + return nil +} + +func (m MaxLength) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + if schema.Type != "string" { + return fmt.Errorf("must apply maxlength to a string") + } + val := int64(m) + schema.MaxLength = &val + return nil +} + +func (m MinLength) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + if schema.Type != "string" { + return fmt.Errorf("must apply minlength to a string") + } + val := int64(m) + schema.MinLength = &val + return nil +} + +func (m Pattern) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + // Allow string types or IntOrStrings. An IntOrString will still + // apply the pattern validation when a string is detected, the pattern + // will not apply to ints though. + if schema.Type != "string" && !schema.XIntOrString { + return fmt.Errorf("must apply pattern to a `string` or `IntOrString`") + } + schema.Pattern = string(m) + return nil +} + +func (m MaxItems) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + if schema.Type != "array" { + return fmt.Errorf("must apply maxitem to an array") + } + val := int64(m) + schema.MaxItems = &val + return nil +} + +func (m MinItems) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + if schema.Type != "array" { + return fmt.Errorf("must apply minitems to an array") + } + val := int64(m) + schema.MinItems = &val + return nil +} + +func (m UniqueItems) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + if schema.Type != "array" { + return fmt.Errorf("must apply uniqueitems to an array") + } + schema.UniqueItems = bool(m) + return nil +} + +func (m MinProperties) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + if schema.Type != "object" { + return fmt.Errorf("must apply minproperties to an object") + } + val := int64(m) + schema.MinProperties = &val + return nil +} + +func (m MaxProperties) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + if schema.Type != "object" { + return fmt.Errorf("must apply maxproperties to an object") + } + val := int64(m) + schema.MaxProperties = &val + return nil +} + +func (m Enum) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + // TODO(directxman12): this is a bit hacky -- we should + // probably support AnyType better + using the schema structure + vals := make([]apiext.JSON, len(m)) + for i, val := range m { + // TODO(directxman12): check actual type with schema type? + // if we're expecting a string, marshal the string properly... + // NB(directxman12): we use json.Marshal to ensure we handle JSON escaping properly + valMarshalled, err := json.Marshal(val) + if err != nil { + return err + } + vals[i] = apiext.JSON{Raw: valMarshalled} + } + schema.Enum = vals + return nil +} + +func (m Format) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + schema.Format = string(m) + return nil +} + +// NB(directxman12): we "typecheck" on target schema properties here, +// which means the "Type" marker *must* be applied first. +// TODO(directxman12): find a less hacky way to do this +// (we could preserve ordering of markers, but that feels bad in its own right). + +func (m Type) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + schema.Type = string(m) + return nil +} + +func (m Type) ApplyFirst() {} + +func (m Nullable) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + schema.Nullable = true + return nil +} + +// Defaults are only valid CRDs created with the v1 API +func (m Default) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + marshalledDefault, err := json.Marshal(m.Value) + if err != nil { + return err + } + schema.Default = &apiext.JSON{Raw: marshalledDefault} + return nil +} + +func (m Example) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + marshalledExample, err := json.Marshal(m.Value) + if err != nil { + return err + } + schema.Example = &apiext.JSON{Raw: marshalledExample} + return nil +} + +func (m XPreserveUnknownFields) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + defTrue := true + schema.XPreserveUnknownFields = &defTrue + return nil +} + +func (m XEmbeddedResource) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + schema.XEmbeddedResource = true + return nil +} + +// NB(JoelSpeed): we use this property in other markers here, +// which means the "XIntOrString" marker *must* be applied first. + +func (m XIntOrString) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + schema.XIntOrString = true + return nil +} + +func (m XIntOrString) ApplyFirst() {} + +func (m XValidation) ApplyToSchema(schema *apiext.JSONSchemaProps) error { + schema.XValidations = append(schema.XValidations, apiext.ValidationRule{ + Rule: m.Rule, + Message: m.Message, + }) + return nil +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/zz_generated.markerhelp.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/zz_generated.markerhelp.go new file mode 100644 index 0000000000..1884bc35ff --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/markers/zz_generated.markerhelp.go @@ -0,0 +1,525 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by helpgen. DO NOT EDIT. + +package markers + +import ( + "sigs.k8s.io/controller-tools/pkg/markers" +) + +func (Default) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "sets the default value for this field. ", + Details: "A default value will be accepted as any value valid for the field. Formatting for common types include: boolean: `true`, string: `Cluster`, numerical: `1.24`, array: `{1,2}`, object: `{policy: \"delete\"}`). Defaults should be defined in pruned form, and only best-effort validation will be performed. Full validation of a default requires submission of the containing CRD to an apiserver.", + }, + FieldHelp: map[string]markers.DetailedHelp{ + "Value": { + Summary: "", + Details: "", + }, + }, + } +} + +func (DeprecatedVersion) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD", + DetailedHelp: markers.DetailedHelp{ + Summary: "marks this version as deprecated.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{ + "Warning": { + Summary: "message to be shown on the deprecated version", + Details: "", + }, + }, + } +} + +func (Enum) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "specifies that this (scalar) field is restricted to the *exact* values specified here.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (Example) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "sets the example value for this field. ", + Details: "An example value will be accepted as any value valid for the field. Formatting for common types include: boolean: `true`, string: `Cluster`, numerical: `1.24`, array: `{1,2}`, object: `{policy: \"delete\"}`). Examples should be defined in pruned form, and only best-effort validation will be performed. Full validation of an example requires submission of the containing CRD to an apiserver.", + }, + FieldHelp: map[string]markers.DetailedHelp{ + "Value": { + Summary: "", + Details: "", + }, + }, + } +} + +func (ExclusiveMaximum) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "indicates that the maximum is \"up to\" but not including that value.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (ExclusiveMinimum) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "indicates that the minimum is \"up to\" but not including that value.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (Format) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "specifies additional \"complex\" formatting for this field. ", + Details: "For example, a date-time field would be marked as \"type: string\" and \"format: date-time\".", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (ListMapKey) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD processing", + DetailedHelp: markers.DetailedHelp{ + Summary: "specifies the keys to map listTypes. ", + Details: "It indicates the index of a map list. They can be repeated if multiple keys must be used. It can only be used when ListType is set to map, and the keys should be scalar types.", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (ListType) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD processing", + DetailedHelp: markers.DetailedHelp{ + Summary: "specifies the type of data-structure that the list represents (map, set, atomic). ", + Details: "Possible data-structure types of a list are: \n - \"map\": it needs to have a key field, which will be used to build an associative list. A typical example is a the pod container list, which is indexed by the container name. \n - \"set\": Fields need to be \"scalar\", and there can be only one occurrence of each. \n - \"atomic\": All the fields in the list are treated as a single value, are typically manipulated together by the same actor.", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (MapType) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD processing", + DetailedHelp: markers.DetailedHelp{ + Summary: "specifies the level of atomicity of the map; i.e. whether each item in the map is independent of the others, or all fields are treated as a single unit. ", + Details: "Possible values: \n - \"granular\": items in the map are independent of each other, and can be manipulated by different actors. This is the default behavior. \n - \"atomic\": all fields are treated as one unit. Any changes have to replace the entire map.", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (MaxItems) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "specifies the maximum length for this list.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (MaxLength) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "specifies the maximum length for this string.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (MaxProperties) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "restricts the number of keys in an object", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (Maximum) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "specifies the maximum numeric value that this field can have.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (Metadata) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD", + DetailedHelp: markers.DetailedHelp{ + Summary: "configures the additional annotations or labels for this CRD. For example adding annotation \"api-approved.kubernetes.io\" for a CRD with Kubernetes groups, or annotation \"cert-manager.io/inject-ca-from-secret\" for a CRD that needs CA injection.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{ + "Annotations": { + Summary: "will be added into the annotations of this CRD.", + Details: "", + }, + "Labels": { + Summary: "will be added into the labels of this CRD.", + Details: "", + }, + }, + } +} + +func (MinItems) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "specifies the minimun length for this list.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (MinLength) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "specifies the minimum length for this string.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (MinProperties) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "restricts the number of keys in an object", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (Minimum) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "specifies the minimum numeric value that this field can have. Negative numbers are supported.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (MultipleOf) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "specifies that this field must have a numeric value that's a multiple of this one.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (Nullable) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "marks this field as allowing the \"null\" value. ", + Details: "This is often not necessary, but may be helpful with custom serialization.", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (Pattern) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "specifies that this string must match the given regular expression.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (PrintColumn) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD", + DetailedHelp: markers.DetailedHelp{ + Summary: "adds a column to \"kubectl get\" output for this CRD.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{ + "Name": { + Summary: "specifies the name of the column.", + Details: "", + }, + "Type": { + Summary: "indicates the type of the column. ", + Details: "It may be any OpenAPI data type listed at https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types.", + }, + "JSONPath": { + Summary: "specifies the jsonpath expression used to extract the value of the column.", + Details: "", + }, + "Description": { + Summary: "specifies the help/description for this column.", + Details: "", + }, + "Format": { + Summary: "specifies the format of the column. ", + Details: "It may be any OpenAPI data format corresponding to the type, listed at https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types.", + }, + "Priority": { + Summary: "indicates how important it is that this column be displayed. ", + Details: "Lower priority (*higher* numbered) columns will be hidden if the terminal width is too small.", + }, + }, + } +} + +func (Resource) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD", + DetailedHelp: markers.DetailedHelp{ + Summary: "configures naming and scope for a CRD.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{ + "Path": { + Summary: "specifies the plural \"resource\" for this CRD. ", + Details: "It generally corresponds to a plural, lower-cased version of the Kind. See https://book.kubebuilder.io/cronjob-tutorial/gvks.html.", + }, + "ShortName": { + Summary: "specifies aliases for this CRD. ", + Details: "Short names are often used when people have work with your resource over and over again. For instance, \"rs\" for \"replicaset\" or \"crd\" for customresourcedefinition.", + }, + "Categories": { + Summary: "specifies which group aliases this resource is part of. ", + Details: "Group aliases are used to work with groups of resources at once. The most common one is \"all\" which covers about a third of the base resources in Kubernetes, and is generally used for \"user-facing\" resources.", + }, + "Singular": { + Summary: "overrides the singular form of your resource. ", + Details: "The singular form is otherwise defaulted off the plural (path).", + }, + "Scope": { + Summary: "overrides the scope of the CRD (Cluster vs Namespaced). ", + Details: "Scope defaults to \"Namespaced\". Cluster-scoped (\"Cluster\") resources don't exist in namespaces.", + }, + }, + } +} + +func (Schemaless) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "marks a field as being a schemaless object. ", + Details: "Schemaless objects are not introspected, so you must provide any type and validation information yourself. One use for this tag is for embedding fields that hold JSONSchema typed objects. Because this field disables all type checking, it is recommended to be used only as a last resort.", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (SkipVersion) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD", + DetailedHelp: markers.DetailedHelp{ + Summary: "removes the particular version of the CRD from the CRDs spec. ", + Details: "This is useful if you need to skip generating and listing version entries for 'internal' resource versions, which typically exist if using the Kubernetes upstream conversion-gen tool.", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (StorageVersion) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD", + DetailedHelp: markers.DetailedHelp{ + Summary: "marks this version as the \"storage version\" for the CRD for conversion. ", + Details: "When conversion is enabled for a CRD (i.e. it's not a trivial-versions/single-version CRD), one version is set as the \"storage version\" to be stored in etcd. Attempting to store any other version will result in conversion to the storage version via a conversion webhook.", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (StructType) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD processing", + DetailedHelp: markers.DetailedHelp{ + Summary: "specifies the level of atomicity of the struct; i.e. whether each field in the struct is independent of the others, or all fields are treated as a single unit. ", + Details: "Possible values: \n - \"granular\": fields in the struct are independent of each other, and can be manipulated by different actors. This is the default behavior. \n - \"atomic\": all fields are treated as one unit. Any changes have to replace the entire struct.", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (SubresourceScale) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD", + DetailedHelp: markers.DetailedHelp{ + Summary: "enables the \"/scale\" subresource on a CRD.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{ + "SpecPath": { + Summary: "specifies the jsonpath to the replicas field for the scale's spec.", + Details: "", + }, + "StatusPath": { + Summary: "specifies the jsonpath to the replicas field for the scale's status.", + Details: "", + }, + "SelectorPath": { + Summary: "specifies the jsonpath to the pod label selector field for the scale's status. ", + Details: "The selector field must be the *string* form (serialized form) of a selector. Setting a pod label selector is necessary for your type to work with the HorizontalPodAutoscaler.", + }, + }, + } +} + +func (SubresourceStatus) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD", + DetailedHelp: markers.DetailedHelp{ + Summary: "enables the \"/status\" subresource on a CRD.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (Type) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "overrides the type for this field (which defaults to the equivalent of the Go type). ", + Details: "This generally must be paired with custom serialization. For example, the metav1.Time field would be marked as \"type: string\" and \"format: date-time\".", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (UniqueItems) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "specifies that all items in this list must be unique.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (UnservedVersion) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD", + DetailedHelp: markers.DetailedHelp{ + Summary: "does not serve this version. ", + Details: "This is useful if you need to drop support for a version in favor of a newer version.", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (XEmbeddedResource) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "EmbeddedResource marks a fields as an embedded resource with apiVersion, kind and metadata fields. ", + Details: "An embedded resource is a value that has apiVersion, kind and metadata fields. They are validated implicitly according to the semantics of the currently running apiserver. It is not necessary to add any additional schema for these field, yet it is possible. This can be combined with PreserveUnknownFields.", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (XIntOrString) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "IntOrString marks a fields as an IntOrString. ", + Details: "This is required when applying patterns or other validations to an IntOrString field. Knwon information about the type is applied during the collapse phase and as such is not normally available during marker application.", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (XPreserveUnknownFields) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD processing", + DetailedHelp: markers.DetailedHelp{ + Summary: "PreserveUnknownFields stops the apiserver from pruning fields which are not specified. ", + Details: "By default the apiserver drops unknown fields from the request payload during the decoding step. This marker stops the API server from doing so. It affects fields recursively, but switches back to normal pruning behaviour if nested properties or additionalProperties are specified in the schema. This can either be true or undefined. False is forbidden. \n NB: The kubebuilder:validation:XPreserveUnknownFields variant is deprecated in favor of the kubebuilder:pruning:PreserveUnknownFields variant. They function identically.", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (XValidation) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "CRD validation", + DetailedHelp: markers.DetailedHelp{ + Summary: "marks a field as requiring a value for which a given expression evaluates to true. ", + Details: "This marker may be repeated to specify multiple expressions, all of which must evaluate to true.", + }, + FieldHelp: map[string]markers.DetailedHelp{ + "Rule": { + Summary: "", + Details: "", + }, + "Message": { + Summary: "", + Details: "", + }, + }, + } +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/parser.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/parser.go new file mode 100644 index 0000000000..4c15de9072 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/parser.go @@ -0,0 +1,243 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package crd + +import ( + "fmt" + + apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + "sigs.k8s.io/controller-tools/pkg/loader" + "sigs.k8s.io/controller-tools/pkg/markers" +) + +// TypeIdent represents some type in a Package. +type TypeIdent struct { + Package *loader.Package + Name string +} + +func (t TypeIdent) String() string { + return fmt.Sprintf("%q.%s", t.Package.ID, t.Name) +} + +// PackageOverride overrides the loading of some package +// (potentially setting custom schemata, etc). It must +// call AddPackage if it wants to continue with the default +// loading behavior. +type PackageOverride func(p *Parser, pkg *loader.Package) + +// Parser knows how to parse out CRD information and generate +// OpenAPI schemata from some collection of types and markers. +// Most methods on Parser cache their results automatically, +// and thus may be called any number of times. +type Parser struct { + Collector *markers.Collector + + // Types contains the known TypeInfo for this parser. + Types map[TypeIdent]*markers.TypeInfo + // Schemata contains the known OpenAPI JSONSchemata for this parser. + Schemata map[TypeIdent]apiext.JSONSchemaProps + // GroupVersions contains the known group-versions of each package in this parser. + GroupVersions map[*loader.Package]schema.GroupVersion + // CustomResourceDefinitions contains the known CustomResourceDefinitions for types in this parser. + CustomResourceDefinitions map[schema.GroupKind]apiext.CustomResourceDefinition + // FlattenedSchemata contains fully flattened schemata for use in building + // CustomResourceDefinition validation. Each schema has been flattened by the flattener, + // and then embedded fields have been flattened with FlattenEmbedded. + FlattenedSchemata map[TypeIdent]apiext.JSONSchemaProps + + // PackageOverrides indicates that the loading of any package with + // the given path should be handled by the given overrider. + PackageOverrides map[string]PackageOverride + + // checker stores persistent partial type-checking/reference-traversal information. + Checker *loader.TypeChecker + // packages marks packages as loaded, to avoid re-loading them. + packages map[*loader.Package]struct{} + + flattener *Flattener + + // AllowDangerousTypes controls the handling of non-recommended types such as float. If + // false (the default), these types are not supported. + // There is a continuum here: + // 1. Types that are always supported. + // 2. Types that are allowed by default, but not recommended (warning emitted when they are encountered as per PR #443). + // Possibly they are allowed by default for historical reasons and may even be "on their way out" at some point in the future. + // 3. Types that are not allowed by default, not recommended, but there are some legitimate reasons to need them in certain corner cases. + // Possibly these types should also emit a warning as per PR #443 even when they are "switched on" (an integration point between + // this feature and #443 if desired). This is the category that this flag deals with. + // 4. Types that are not allowed and will not be allowed, possibly because it just "doesn't make sense" or possibly + // because the implementation is too difficult/clunky to promote them to category 3. + // TODO: Should we have a more formal mechanism for putting "type patterns" in each of the above categories? + AllowDangerousTypes bool + + // IgnoreUnexportedFields specifies if unexported fields on the struct should be skipped + IgnoreUnexportedFields bool + + // GenerateEmbeddedObjectMeta specifies if any embedded ObjectMeta should be generated + GenerateEmbeddedObjectMeta bool +} + +func (p *Parser) init() { + if p.packages == nil { + p.packages = make(map[*loader.Package]struct{}) + } + if p.flattener == nil { + p.flattener = &Flattener{ + Parser: p, + } + } + if p.Schemata == nil { + p.Schemata = make(map[TypeIdent]apiext.JSONSchemaProps) + } + if p.Types == nil { + p.Types = make(map[TypeIdent]*markers.TypeInfo) + } + if p.PackageOverrides == nil { + p.PackageOverrides = make(map[string]PackageOverride) + } + if p.GroupVersions == nil { + p.GroupVersions = make(map[*loader.Package]schema.GroupVersion) + } + if p.CustomResourceDefinitions == nil { + p.CustomResourceDefinitions = make(map[schema.GroupKind]apiext.CustomResourceDefinition) + } + if p.FlattenedSchemata == nil { + p.FlattenedSchemata = make(map[TypeIdent]apiext.JSONSchemaProps) + } +} + +// indexTypes loads all types in the package into Types. +func (p *Parser) indexTypes(pkg *loader.Package) { + // autodetect + pkgMarkers, err := markers.PackageMarkers(p.Collector, pkg) + if err != nil { + pkg.AddError(err) + } else { + if skipPkg := pkgMarkers.Get("kubebuilder:skip"); skipPkg != nil { + return + } + if nameVal := pkgMarkers.Get("groupName"); nameVal != nil { + versionVal := pkg.Name // a reasonable guess + if versionMarker := pkgMarkers.Get("versionName"); versionMarker != nil { + versionVal = versionMarker.(string) + } + + p.GroupVersions[pkg] = schema.GroupVersion{ + Version: versionVal, + Group: nameVal.(string), + } + } + } + + if err := markers.EachType(p.Collector, pkg, func(info *markers.TypeInfo) { + ident := TypeIdent{ + Package: pkg, + Name: info.Name, + } + + p.Types[ident] = info + }); err != nil { + pkg.AddError(err) + } +} + +// LookupType fetches type info from Types. +func (p *Parser) LookupType(pkg *loader.Package, name string) *markers.TypeInfo { + return p.Types[TypeIdent{Package: pkg, Name: name}] +} + +// NeedSchemaFor indicates that a schema should be generated for the given type. +func (p *Parser) NeedSchemaFor(typ TypeIdent) { + p.init() + + p.NeedPackage(typ.Package) + if _, knownSchema := p.Schemata[typ]; knownSchema { + return + } + + info, knownInfo := p.Types[typ] + if !knownInfo { + typ.Package.AddError(fmt.Errorf("unknown type %s", typ)) + return + } + + // avoid tripping recursive schemata, like ManagedFields, by adding an empty WIP schema + p.Schemata[typ] = apiext.JSONSchemaProps{} + + schemaCtx := newSchemaContext(typ.Package, p, p.AllowDangerousTypes, p.IgnoreUnexportedFields) + ctxForInfo := schemaCtx.ForInfo(info) + + pkgMarkers, err := markers.PackageMarkers(p.Collector, typ.Package) + if err != nil { + typ.Package.AddError(err) + } + ctxForInfo.PackageMarkers = pkgMarkers + + schema := infoToSchema(ctxForInfo) + + p.Schemata[typ] = *schema +} + +func (p *Parser) NeedFlattenedSchemaFor(typ TypeIdent) { + p.init() + + if _, knownSchema := p.FlattenedSchemata[typ]; knownSchema { + return + } + + p.NeedSchemaFor(typ) + partialFlattened := p.flattener.FlattenType(typ) + fullyFlattened := FlattenEmbedded(partialFlattened, typ.Package) + + p.FlattenedSchemata[typ] = *fullyFlattened +} + +// NeedCRDFor lives off in spec.go + +// AddPackage indicates that types and type-checking information is needed +// for the the given package, *ignoring* overrides. +// Generally, consumers should call NeedPackage, while PackageOverrides should +// call AddPackage to continue with the normal loading procedure. +func (p *Parser) AddPackage(pkg *loader.Package) { + p.init() + if _, checked := p.packages[pkg]; checked { + return + } + p.indexTypes(pkg) + p.Checker.Check(pkg) + p.packages[pkg] = struct{}{} +} + +// NeedPackage indicates that types and type-checking information +// is needed for the given package. +func (p *Parser) NeedPackage(pkg *loader.Package) { + p.init() + if _, checked := p.packages[pkg]; checked { + return + } + // overrides are going to be written without vendor. This is why we index by the actual + // object when we can. + if override, overridden := p.PackageOverrides[loader.NonVendorPath(pkg.PkgPath)]; overridden { + override(p, pkg) + p.packages[pkg] = struct{}{} + return + } + p.AddPackage(pkg) +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/schema.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/schema.go new file mode 100644 index 0000000000..e76d3ea88c --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/schema.go @@ -0,0 +1,464 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package crd + +import ( + "errors" + "fmt" + "go/ast" + "go/token" + "go/types" + "strings" + + apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + crdmarkers "sigs.k8s.io/controller-tools/pkg/crd/markers" + + "sigs.k8s.io/controller-tools/pkg/loader" + "sigs.k8s.io/controller-tools/pkg/markers" +) + +// Schema flattening is done in a recursive mapping method. +// Start reading at infoToSchema. + +const ( + // defPrefix is the prefix used to link to definitions in the OpenAPI schema. + defPrefix = "#/definitions/" +) + +// byteType is the types.Type for byte (see the types documention +// for why we need to look this up in the Universe), saved +// for quick comparison. +var byteType = types.Universe.Lookup("byte").Type() + +// SchemaMarker is any marker that needs to modify the schema of the underlying type or field. +type SchemaMarker interface { + // ApplyToSchema is called after the rest of the schema for a given type + // or field is generated, to modify the schema appropriately. + ApplyToSchema(*apiext.JSONSchemaProps) error +} + +// applyFirstMarker is applied before any other markers. It's a bit of a hack. +type applyFirstMarker interface { + ApplyFirst() +} + +// schemaRequester knows how to marker that another schema (e.g. via an external reference) is necessary. +type schemaRequester interface { + NeedSchemaFor(typ TypeIdent) +} + +// schemaContext stores and provides information across a hierarchy of schema generation. +type schemaContext struct { + pkg *loader.Package + info *markers.TypeInfo + + schemaRequester schemaRequester + PackageMarkers markers.MarkerValues + + allowDangerousTypes bool + ignoreUnexportedFields bool +} + +// newSchemaContext constructs a new schemaContext for the given package and schema requester. +// It must have type info added before use via ForInfo. +func newSchemaContext(pkg *loader.Package, req schemaRequester, allowDangerousTypes, ignoreUnexportedFields bool) *schemaContext { + pkg.NeedTypesInfo() + return &schemaContext{ + pkg: pkg, + schemaRequester: req, + allowDangerousTypes: allowDangerousTypes, + ignoreUnexportedFields: ignoreUnexportedFields, + } +} + +// ForInfo produces a new schemaContext with containing the same information +// as this one, except with the given type information. +func (c *schemaContext) ForInfo(info *markers.TypeInfo) *schemaContext { + return &schemaContext{ + pkg: c.pkg, + info: info, + schemaRequester: c.schemaRequester, + allowDangerousTypes: c.allowDangerousTypes, + ignoreUnexportedFields: c.ignoreUnexportedFields, + } +} + +// requestSchema asks for the schema for a type in the package with the +// given import path. +func (c *schemaContext) requestSchema(pkgPath, typeName string) { + pkg := c.pkg + if pkgPath != "" { + pkg = c.pkg.Imports()[pkgPath] + } + c.schemaRequester.NeedSchemaFor(TypeIdent{ + Package: pkg, + Name: typeName, + }) +} + +// infoToSchema creates a schema for the type in the given set of type information. +func infoToSchema(ctx *schemaContext) *apiext.JSONSchemaProps { + // If the obj implements a JSON marshaler and has a marker, use the markers value and do not traverse as + // the marshaler could be doing anything. If there is no marker, fall back to traversing. + if obj := ctx.pkg.Types.Scope().Lookup(ctx.info.Name); obj != nil && implementsJSONMarshaler(obj.Type()) { + schema := &apiext.JSONSchemaProps{} + applyMarkers(ctx, ctx.info.Markers, schema, ctx.info.RawSpec.Type) + if schema.Type != "" { + return schema + } + } + return typeToSchema(ctx, ctx.info.RawSpec.Type) +} + +// applyMarkers applies schema markers to the given schema, respecting "apply first" markers. +func applyMarkers(ctx *schemaContext, markerSet markers.MarkerValues, props *apiext.JSONSchemaProps, node ast.Node) { + // apply "apply first" markers first... + for _, markerValues := range markerSet { + for _, markerValue := range markerValues { + if _, isApplyFirst := markerValue.(applyFirstMarker); !isApplyFirst { + continue + } + + schemaMarker, isSchemaMarker := markerValue.(SchemaMarker) + if !isSchemaMarker { + continue + } + + if err := schemaMarker.ApplyToSchema(props); err != nil { + ctx.pkg.AddError(loader.ErrFromNode(err /* an okay guess */, node)) + } + } + } + + // ...then the rest of the markers + for _, markerValues := range markerSet { + for _, markerValue := range markerValues { + if _, isApplyFirst := markerValue.(applyFirstMarker); isApplyFirst { + // skip apply-first markers, which were already applied + continue + } + + schemaMarker, isSchemaMarker := markerValue.(SchemaMarker) + if !isSchemaMarker { + continue + } + if err := schemaMarker.ApplyToSchema(props); err != nil { + ctx.pkg.AddError(loader.ErrFromNode(err /* an okay guess */, node)) + } + } + } +} + +// typeToSchema creates a schema for the given AST type. +func typeToSchema(ctx *schemaContext, rawType ast.Expr) *apiext.JSONSchemaProps { + var props *apiext.JSONSchemaProps + switch expr := rawType.(type) { + case *ast.Ident: + props = localNamedToSchema(ctx, expr) + case *ast.SelectorExpr: + props = namedToSchema(ctx, expr) + case *ast.ArrayType: + props = arrayToSchema(ctx, expr) + case *ast.MapType: + props = mapToSchema(ctx, expr) + case *ast.StarExpr: + props = typeToSchema(ctx, expr.X) + case *ast.StructType: + props = structToSchema(ctx, expr) + default: + ctx.pkg.AddError(loader.ErrFromNode(fmt.Errorf("unsupported AST kind %T", expr), rawType)) + // NB(directxman12): we explicitly don't handle interfaces + return &apiext.JSONSchemaProps{} + } + + props.Description = ctx.info.Doc + + applyMarkers(ctx, ctx.info.Markers, props, rawType) + + return props +} + +// qualifiedName constructs a JSONSchema-safe qualified name for a type +// (`` or `~0`, where `` +// is the package path with `/` replaced by `~1`, according to JSONPointer +// escapes). +func qualifiedName(pkgName, typeName string) string { + if pkgName != "" { + return strings.Replace(pkgName, "/", "~1", -1) + "~0" + typeName + } + return typeName +} + +// TypeRefLink creates a definition link for the given type and package. +func TypeRefLink(pkgName, typeName string) string { + return defPrefix + qualifiedName(pkgName, typeName) +} + +// localNamedToSchema creates a schema (ref) for a *potentially* local type reference +// (could be external from a dot-import). +func localNamedToSchema(ctx *schemaContext, ident *ast.Ident) *apiext.JSONSchemaProps { + typeInfo := ctx.pkg.TypesInfo.TypeOf(ident) + if typeInfo == types.Typ[types.Invalid] { + ctx.pkg.AddError(loader.ErrFromNode(fmt.Errorf("unknown type %s", ident.Name), ident)) + return &apiext.JSONSchemaProps{} + } + if basicInfo, isBasic := typeInfo.(*types.Basic); isBasic { + typ, fmt, err := builtinToType(basicInfo, ctx.allowDangerousTypes) + if err != nil { + ctx.pkg.AddError(loader.ErrFromNode(err, ident)) + } + return &apiext.JSONSchemaProps{ + Type: typ, + Format: fmt, + } + } + // NB(directxman12): if there are dot imports, this might be an external reference, + // so use typechecking info to get the actual object + typeNameInfo := typeInfo.(*types.Named).Obj() + pkg := typeNameInfo.Pkg() + pkgPath := loader.NonVendorPath(pkg.Path()) + if pkg == ctx.pkg.Types { + pkgPath = "" + } + ctx.requestSchema(pkgPath, typeNameInfo.Name()) + link := TypeRefLink(pkgPath, typeNameInfo.Name()) + return &apiext.JSONSchemaProps{ + Ref: &link, + } +} + +// namedSchema creates a schema (ref) for an explicitly external type reference. +func namedToSchema(ctx *schemaContext, named *ast.SelectorExpr) *apiext.JSONSchemaProps { + typeInfoRaw := ctx.pkg.TypesInfo.TypeOf(named) + if typeInfoRaw == types.Typ[types.Invalid] { + ctx.pkg.AddError(loader.ErrFromNode(fmt.Errorf("unknown type %v.%s", named.X, named.Sel.Name), named)) + return &apiext.JSONSchemaProps{} + } + typeInfo := typeInfoRaw.(*types.Named) + typeNameInfo := typeInfo.Obj() + nonVendorPath := loader.NonVendorPath(typeNameInfo.Pkg().Path()) + ctx.requestSchema(nonVendorPath, typeNameInfo.Name()) + link := TypeRefLink(nonVendorPath, typeNameInfo.Name()) + return &apiext.JSONSchemaProps{ + Ref: &link, + } + // NB(directxman12): we special-case things like resource.Quantity during the "collapse" phase. +} + +// arrayToSchema creates a schema for the items of the given array, dealing appropriately +// with the special `[]byte` type (according to OpenAPI standards). +func arrayToSchema(ctx *schemaContext, array *ast.ArrayType) *apiext.JSONSchemaProps { + eltType := ctx.pkg.TypesInfo.TypeOf(array.Elt) + if eltType == byteType && array.Len == nil { + // byte slices are represented as base64-encoded strings + // (the format is defined in OpenAPI v3, but not JSON Schema) + return &apiext.JSONSchemaProps{ + Type: "string", + Format: "byte", + } + } + // TODO(directxman12): backwards-compat would require access to markers from base info + items := typeToSchema(ctx.ForInfo(&markers.TypeInfo{}), array.Elt) + + return &apiext.JSONSchemaProps{ + Type: "array", + Items: &apiext.JSONSchemaPropsOrArray{Schema: items}, + } +} + +// mapToSchema creates a schema for items of the given map. Key types must eventually resolve +// to string (other types aren't allowed by JSON, and thus the kubernetes API standards). +func mapToSchema(ctx *schemaContext, mapType *ast.MapType) *apiext.JSONSchemaProps { + keyInfo := ctx.pkg.TypesInfo.TypeOf(mapType.Key) + // check that we've got a type that actually corresponds to a string + for keyInfo != nil { + switch typedKey := keyInfo.(type) { + case *types.Basic: + if typedKey.Info()&types.IsString == 0 { + ctx.pkg.AddError(loader.ErrFromNode(fmt.Errorf("map keys must be strings, not %s", keyInfo.String()), mapType.Key)) + return &apiext.JSONSchemaProps{} + } + keyInfo = nil // stop iterating + case *types.Named: + keyInfo = typedKey.Underlying() + default: + ctx.pkg.AddError(loader.ErrFromNode(fmt.Errorf("map keys must be strings, not %s", keyInfo.String()), mapType.Key)) + return &apiext.JSONSchemaProps{} + } + } + + // TODO(directxman12): backwards-compat would require access to markers from base info + var valSchema *apiext.JSONSchemaProps + switch val := mapType.Value.(type) { + case *ast.Ident: + valSchema = localNamedToSchema(ctx.ForInfo(&markers.TypeInfo{}), val) + case *ast.SelectorExpr: + valSchema = namedToSchema(ctx.ForInfo(&markers.TypeInfo{}), val) + case *ast.ArrayType: + valSchema = arrayToSchema(ctx.ForInfo(&markers.TypeInfo{}), val) + case *ast.StarExpr: + valSchema = typeToSchema(ctx.ForInfo(&markers.TypeInfo{}), val) + case *ast.MapType: + valSchema = typeToSchema(ctx.ForInfo(&markers.TypeInfo{}), val) + default: + ctx.pkg.AddError(loader.ErrFromNode(fmt.Errorf("not a supported map value type: %T", mapType.Value), mapType.Value)) + return &apiext.JSONSchemaProps{} + } + + return &apiext.JSONSchemaProps{ + Type: "object", + AdditionalProperties: &apiext.JSONSchemaPropsOrBool{ + Schema: valSchema, + Allows: true, /* set automatically by serialization, but useful for testing */ + }, + } +} + +// structToSchema creates a schema for the given struct. Embedded fields are placed in AllOf, +// and can be flattened later with a Flattener. +func structToSchema(ctx *schemaContext, structType *ast.StructType) *apiext.JSONSchemaProps { + props := &apiext.JSONSchemaProps{ + Type: "object", + Properties: make(map[string]apiext.JSONSchemaProps), + } + + if ctx.info.RawSpec.Type != structType { + ctx.pkg.AddError(loader.ErrFromNode(fmt.Errorf("encountered non-top-level struct (possibly embedded), those aren't allowed"), structType)) + return props + } + + for _, field := range ctx.info.Fields { + // Skip if the field is not an inline field, ignoreUnexportedFields is true, and the field is not exported + if field.Name != "" && ctx.ignoreUnexportedFields && !ast.IsExported(field.Name) { + continue + } + + jsonTag, hasTag := field.Tag.Lookup("json") + if !hasTag { + // if the field doesn't have a JSON tag, it doesn't belong in output (and shouldn't exist in a serialized type) + ctx.pkg.AddError(loader.ErrFromNode(fmt.Errorf("encountered struct field %q without JSON tag in type %q", field.Name, ctx.info.Name), field.RawField)) + continue + } + jsonOpts := strings.Split(jsonTag, ",") + if len(jsonOpts) == 1 && jsonOpts[0] == "-" { + // skipped fields have the tag "-" (note that "-," means the field is named "-") + continue + } + + inline := false + omitEmpty := false + for _, opt := range jsonOpts[1:] { + switch opt { + case "inline": + inline = true + case "omitempty": + omitEmpty = true + } + } + fieldName := jsonOpts[0] + inline = inline || fieldName == "" // anonymous fields are inline fields in YAML/JSON + + // if no default required mode is set, default to required + defaultMode := "required" + if ctx.PackageMarkers.Get("kubebuilder:validation:Optional") != nil { + defaultMode = "optional" + } + + switch defaultMode { + // if this package isn't set to optional default... + case "required": + // ...everything that's not inline, omitempty, or explicitly optional is required + if !inline && !omitEmpty && field.Markers.Get("kubebuilder:validation:Optional") == nil && field.Markers.Get("optional") == nil { + props.Required = append(props.Required, fieldName) + } + + // if this package isn't set to required default... + case "optional": + // ...everything that isn't explicitly required is optional + if field.Markers.Get("kubebuilder:validation:Required") != nil { + props.Required = append(props.Required, fieldName) + } + } + + var propSchema *apiext.JSONSchemaProps + if field.Markers.Get(crdmarkers.SchemalessName) != nil { + propSchema = &apiext.JSONSchemaProps{} + } else { + propSchema = typeToSchema(ctx.ForInfo(&markers.TypeInfo{}), field.RawField.Type) + } + propSchema.Description = field.Doc + + applyMarkers(ctx, field.Markers, propSchema, field.RawField) + + if inline { + props.AllOf = append(props.AllOf, *propSchema) + continue + } + + props.Properties[fieldName] = *propSchema + } + + return props +} + +// builtinToType converts builtin basic types to their equivalent JSON schema form. +// It *only* handles types allowed by the kubernetes API standards. Floats are not +// allowed unless allowDangerousTypes is true +func builtinToType(basic *types.Basic, allowDangerousTypes bool) (typ string, format string, err error) { + // NB(directxman12): formats from OpenAPI v3 are slightly different than those defined + // in JSONSchema. This'll use the OpenAPI v3 ones, since they're useful for bounding our + // non-string types. + basicInfo := basic.Info() + switch { + case basicInfo&types.IsBoolean != 0: + typ = "boolean" + case basicInfo&types.IsString != 0: + typ = "string" + case basicInfo&types.IsInteger != 0: + typ = "integer" + case basicInfo&types.IsFloat != 0: + if allowDangerousTypes { + typ = "number" + } else { + return "", "", errors.New("found float, the usage of which is highly discouraged, as support for them varies across languages. Please consider serializing your float as string instead. If you are really sure you want to use them, re-run with crd:allowDangerousTypes=true") + } + default: + return "", "", fmt.Errorf("unsupported type %q", basic.String()) + } + + switch basic.Kind() { + case types.Int32, types.Uint32: + format = "int32" + case types.Int64, types.Uint64: + format = "int64" + } + + return typ, format, nil +} + +// Open coded go/types representation of encoding/json.Marshaller +var jsonMarshaler = types.NewInterfaceType([]*types.Func{ + types.NewFunc(token.NoPos, nil, "MarshalJSON", + types.NewSignature(nil, nil, + types.NewTuple( + types.NewVar(token.NoPos, nil, "", types.NewSlice(types.Universe.Lookup("byte").Type())), + types.NewVar(token.NoPos, nil, "", types.Universe.Lookup("error").Type())), false)), +}, nil).Complete() + +func implementsJSONMarshaler(typ types.Type) bool { + return types.Implements(typ, jsonMarshaler) || types.Implements(types.NewPointer(typ), jsonMarshaler) +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/schema_visitor.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/schema_visitor.go new file mode 100644 index 0000000000..2604d739b6 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/schema_visitor.go @@ -0,0 +1,131 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package crd + +import ( + apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" +) + +// SchemaVisitor walks the nodes of a schema. +type SchemaVisitor interface { + // Visit is called for each schema node. If it returns a visitor, + // the visitor will be called on each direct child node, and then + // this visitor will be called again with `nil` to indicate that + // all children have been visited. If a nil visitor is returned, + // children are not visited. + // + // It is *NOT* safe to save references to the given schema. + // Make deepcopies if you need to keep things around beyond + // the lifetime of the call. + Visit(schema *apiext.JSONSchemaProps) SchemaVisitor +} + +// EditSchema walks the given schema using the given visitor. Actual +// pointers to each schema node are passed to the visitor, so any changes +// made by the visitor will be reflected to the passed-in schema. +func EditSchema(schema *apiext.JSONSchemaProps, visitor SchemaVisitor) { + walker := schemaWalker{visitor: visitor} + walker.walkSchema(schema) +} + +// schemaWalker knows how to walk the schema, saving modifications +// made by the given visitor. +type schemaWalker struct { + visitor SchemaVisitor +} + +// walkSchema walks the given schema, saving modifications made by the visitor +// (this is as simple as passing a pointer in most cases, but special care +// needs to be taken to persist with maps). It also visits referenced +// schemata, dealing with circular references appropriately. The returned +// visitor will be used to visit all "children" of the current schema, followed +// by a nil schema with the returned visitor to mark completion. If a nil visitor +// is returned, traversal will no continue into the children of the current schema. +func (w schemaWalker) walkSchema(schema *apiext.JSONSchemaProps) { + // Walk a potential chain of schema references, keeping track of seen + // references to avoid circular references + subVisitor := w.visitor + seenRefs := map[string]bool{} + if schema.Ref != nil { + seenRefs[*schema.Ref] = true + } + for { + subVisitor = subVisitor.Visit(schema) + if subVisitor == nil { + return + } + // mark completion of the visitor + defer subVisitor.Visit(nil) + + // Break if schema is not a reference or a cycle is detected + if schema.Ref == nil || len(*schema.Ref) == 0 || seenRefs[*schema.Ref] { + break + } + seenRefs[*schema.Ref] = true + } + + // walk sub-schemata + subWalker := schemaWalker{visitor: subVisitor} + if schema.Items != nil { + subWalker.walkPtr(schema.Items.Schema) + subWalker.walkSlice(schema.Items.JSONSchemas) + } + subWalker.walkSlice(schema.AllOf) + subWalker.walkSlice(schema.OneOf) + subWalker.walkSlice(schema.AnyOf) + subWalker.walkPtr(schema.Not) + subWalker.walkMap(schema.Properties) + if schema.AdditionalProperties != nil { + subWalker.walkPtr(schema.AdditionalProperties.Schema) + } + subWalker.walkMap(schema.PatternProperties) + for name, dep := range schema.Dependencies { + subWalker.walkPtr(dep.Schema) + schema.Dependencies[name] = dep + } + if schema.AdditionalItems != nil { + subWalker.walkPtr(schema.AdditionalItems.Schema) + } + subWalker.walkMap(schema.Definitions) +} + +// walkMap walks over values of the given map, saving changes to them. +func (w schemaWalker) walkMap(defs map[string]apiext.JSONSchemaProps) { + for name, def := range defs { + // this is iter var reference is because we immediately preseve it below + //nolint:gosec + w.walkSchema(&def) + // make sure the edits actually go through since we can't + // take a reference to the value in the map + defs[name] = def + } +} + +// walkSlice walks over items of the given slice. +func (w schemaWalker) walkSlice(defs []apiext.JSONSchemaProps) { + for i := range defs { + w.walkSchema(&defs[i]) + } +} + +// walkPtr walks over the contents of the given pointer, if it's not nil. +func (w schemaWalker) walkPtr(def *apiext.JSONSchemaProps) { + if def == nil { + return + } + w.walkSchema(def) +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/spec.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/spec.go new file mode 100644 index 0000000000..5fd246c3fc --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/spec.go @@ -0,0 +1,178 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package crd + +import ( + "fmt" + "sort" + "strings" + + "github.com/gobuffalo/flect" + + apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + "sigs.k8s.io/controller-tools/pkg/loader" +) + +// SpecMarker is a marker that knows how to apply itself to a particular +// version in a CRD Spec. +type SpecMarker interface { + // ApplyToCRD applies this marker to the given CRD, in the given version + // within that CRD. It's called after everything else in the CRD is populated. + ApplyToCRD(crd *apiext.CustomResourceDefinitionSpec, version string) error +} + +// Marker is a marker that knows how to apply itself to a particular +// version in a CRD. +type Marker interface { + // ApplyToCRD applies this marker to the given CRD, in the given version + // within that CRD. It's called after everything else in the CRD is populated. + ApplyToCRD(crd *apiext.CustomResourceDefinition, version string) error +} + +// NeedCRDFor requests the full CRD for the given group-kind. It requires +// that the packages containing the Go structs for that CRD have already +// been loaded with NeedPackage. +func (p *Parser) NeedCRDFor(groupKind schema.GroupKind, maxDescLen *int) { + p.init() + + if _, exists := p.CustomResourceDefinitions[groupKind]; exists { + return + } + + var packages []*loader.Package + for pkg, gv := range p.GroupVersions { + if gv.Group != groupKind.Group { + continue + } + packages = append(packages, pkg) + } + + defaultPlural := strings.ToLower(flect.Pluralize(groupKind.Kind)) + crd := apiext.CustomResourceDefinition{ + TypeMeta: metav1.TypeMeta{ + APIVersion: apiext.SchemeGroupVersion.String(), + Kind: "CustomResourceDefinition", + }, + ObjectMeta: metav1.ObjectMeta{ + Name: defaultPlural + "." + groupKind.Group, + }, + Spec: apiext.CustomResourceDefinitionSpec{ + Group: groupKind.Group, + Names: apiext.CustomResourceDefinitionNames{ + Kind: groupKind.Kind, + ListKind: groupKind.Kind + "List", + Plural: defaultPlural, + Singular: strings.ToLower(groupKind.Kind), + }, + Scope: apiext.NamespaceScoped, + }, + } + + for _, pkg := range packages { + typeIdent := TypeIdent{Package: pkg, Name: groupKind.Kind} + typeInfo := p.Types[typeIdent] + if typeInfo == nil { + continue + } + p.NeedFlattenedSchemaFor(typeIdent) + fullSchema := p.FlattenedSchemata[typeIdent] + fullSchema = *fullSchema.DeepCopy() // don't mutate the cache (we might be truncating description, etc) + if maxDescLen != nil { + TruncateDescription(&fullSchema, *maxDescLen) + } + ver := apiext.CustomResourceDefinitionVersion{ + Name: p.GroupVersions[pkg].Version, + Served: true, + Schema: &apiext.CustomResourceValidation{ + OpenAPIV3Schema: &fullSchema, // fine to take a reference since we deepcopy above + }, + } + crd.Spec.Versions = append(crd.Spec.Versions, ver) + } + + // markers are applied *after* initial generation of objects + for _, pkg := range packages { + typeIdent := TypeIdent{Package: pkg, Name: groupKind.Kind} + typeInfo := p.Types[typeIdent] + if typeInfo == nil { + continue + } + ver := p.GroupVersions[pkg].Version + + for _, markerVals := range typeInfo.Markers { + for _, val := range markerVals { + if specMarker, isSpecMarker := val.(SpecMarker); isSpecMarker { + if err := specMarker.ApplyToCRD(&crd.Spec, ver); err != nil { + pkg.AddError(loader.ErrFromNode(err /* an okay guess */, typeInfo.RawSpec)) + } + } else if crdMarker, isCRDMarker := val.(Marker); isCRDMarker { + if err := crdMarker.ApplyToCRD(&crd, ver); err != nil { + pkg.AddError(loader.ErrFromNode(err /* an okay guess */, typeInfo.RawSpec)) + } + } + } + } + } + + // fix the name if the plural was changed (this is the form the name *has* to take, so no harm in changing it). + crd.Name = crd.Spec.Names.Plural + "." + groupKind.Group + + // nothing to actually write + if len(crd.Spec.Versions) == 0 { + return + } + + // it is necessary to make sure the order of CRD versions in crd.Spec.Versions is stable and explicitly set crd.Spec.Version. + // Otherwise, crd.Spec.Version may point to different CRD versions across different runs. + sort.Slice(crd.Spec.Versions, func(i, j int) bool { return crd.Spec.Versions[i].Name < crd.Spec.Versions[j].Name }) + + // make sure we have *a* storage version + // (default it if we only have one, otherwise, bail) + if len(crd.Spec.Versions) == 1 { + crd.Spec.Versions[0].Storage = true + } + + hasStorage := false + for _, ver := range crd.Spec.Versions { + if ver.Storage { + hasStorage = true + break + } + } + if !hasStorage { + // just add the error to the first relevant package for this CRD, + // since there's no specific error location + packages[0].AddError(fmt.Errorf("CRD for %s has no storage version", groupKind)) + } + + served := false + for _, ver := range crd.Spec.Versions { + if ver.Served { + served = true + break + } + } + if !served { + // just add the error to the first relevant package for this CRD, + // since there's no specific error location + packages[0].AddError(fmt.Errorf("CRD for %s with version(s) %v does not serve any version", groupKind, crd.Spec.Versions)) + } + + p.CustomResourceDefinitions[groupKind] = crd +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/crd/zz_generated.markerhelp.go b/vendor/sigs.k8s.io/controller-tools/pkg/crd/zz_generated.markerhelp.go new file mode 100644 index 0000000000..15f2a85c37 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/crd/zz_generated.markerhelp.go @@ -0,0 +1,66 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by helpgen. DO NOT EDIT. + +package crd + +import ( + "sigs.k8s.io/controller-tools/pkg/markers" +) + +func (Generator) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "", + DetailedHelp: markers.DetailedHelp{ + Summary: "generates CustomResourceDefinition objects.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{ + "IgnoreUnexportedFields": { + Summary: "indicates that we should skip unexported fields. ", + Details: "Left unspecified, the default is false.", + }, + "AllowDangerousTypes": { + Summary: "allows types which are usually omitted from CRD generation because they are not recommended. ", + Details: "Currently the following additional types are allowed when this is true: float32 float64 \n Left unspecified, the default is false", + }, + "MaxDescLen": { + Summary: "specifies the maximum description length for fields in CRD's OpenAPI schema. ", + Details: "0 indicates drop the description for all fields completely. n indicates limit the description to at most n characters and truncate the description to closest sentence boundary if it exceeds n characters.", + }, + "CRDVersions": { + Summary: "specifies the target API versions of the CRD type itself to generate. Defaults to v1. ", + Details: "Currently, the only supported value is v1. \n The first version listed will be assumed to be the \"default\" version and will not get a version suffix in the output filename. \n You'll need to use \"v1\" to get support for features like defaulting, along with an API server that supports it (Kubernetes 1.16+).", + }, + "GenerateEmbeddedObjectMeta": { + Summary: "specifies if any embedded ObjectMeta in the CRD should be generated", + Details: "", + }, + "HeaderFile": { + Summary: "specifies the header text (e.g. license) to prepend to generated files.", + Details: "", + }, + "Year": { + Summary: "specifies the year to substitute for \" YEAR\" in the header file.", + Details: "", + }, + }, + } +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/deepcopy/doc.go b/vendor/sigs.k8s.io/controller-tools/pkg/deepcopy/doc.go new file mode 100644 index 0000000000..f4200f2fc1 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/deepcopy/doc.go @@ -0,0 +1,23 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package deepcopy generates DeepCopy, DeepCopyInto, and DeepCopyObject +// implementations for types. +// +// It's ported from k8s.io/code-generator's / k8s.io/gengo's deepcopy-gen, +// but it's scoped specifically to runtime.Object and skips support for +// deepcopying interfaces, which aren't handled in CRDs anyway. +package deepcopy diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/deepcopy/gen.go b/vendor/sigs.k8s.io/controller-tools/pkg/deepcopy/gen.go new file mode 100644 index 0000000000..7e674a80aa --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/deepcopy/gen.go @@ -0,0 +1,305 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package deepcopy + +import ( + "bytes" + "fmt" + "go/ast" + "go/format" + "io" + "sort" + "strings" + + "sigs.k8s.io/controller-tools/pkg/genall" + "sigs.k8s.io/controller-tools/pkg/loader" + "sigs.k8s.io/controller-tools/pkg/markers" +) + +// NB(directxman12): markers.LoadRoots ignores autogenerated code via a build tag +// so any time we check for existing deepcopy functions, we only seen manually written ones. + +const ( + runtimeObjPath = "k8s.io/apimachinery/pkg/runtime.Object" +) + +var ( + enablePkgMarker = markers.Must(markers.MakeDefinition("kubebuilder:object:generate", markers.DescribesPackage, false)) + enableTypeMarker = markers.Must(markers.MakeDefinition("kubebuilder:object:generate", markers.DescribesType, false)) + isObjectMarker = markers.Must(markers.MakeDefinition("kubebuilder:object:root", markers.DescribesType, false)) + + legacyEnablePkgMarker = markers.Must(markers.MakeDefinition("k8s:deepcopy-gen", markers.DescribesPackage, markers.RawArguments(nil))) + legacyEnableTypeMarker = markers.Must(markers.MakeDefinition("k8s:deepcopy-gen", markers.DescribesType, markers.RawArguments(nil))) + legacyIsObjectMarker = markers.Must(markers.MakeDefinition("k8s:deepcopy-gen:interfaces", markers.DescribesType, "")) +) + +// +controllertools:marker:generateHelp + +// Generator generates code containing DeepCopy, DeepCopyInto, and +// DeepCopyObject method implementations. +type Generator struct { + // HeaderFile specifies the header text (e.g. license) to prepend to generated files. + HeaderFile string `marker:",optional"` + // Year specifies the year to substitute for " YEAR" in the header file. + Year string `marker:",optional"` +} + +func (Generator) CheckFilter() loader.NodeFilter { + return func(node ast.Node) bool { + // ignore interfaces + _, isIface := node.(*ast.InterfaceType) + return !isIface + } +} + +func (Generator) RegisterMarkers(into *markers.Registry) error { + if err := markers.RegisterAll(into, + enablePkgMarker, legacyEnablePkgMarker, enableTypeMarker, + legacyEnableTypeMarker, isObjectMarker, legacyIsObjectMarker); err != nil { + return err + } + into.AddHelp(enablePkgMarker, + markers.SimpleHelp("object", "enables or disables object interface & deepcopy implementation generation for this package")) + into.AddHelp( + enableTypeMarker, markers.SimpleHelp("object", "overrides enabling or disabling deepcopy generation for this type")) + into.AddHelp(isObjectMarker, + markers.SimpleHelp("object", "enables object interface implementation generation for this type")) + + into.AddHelp(legacyEnablePkgMarker, + markers.DeprecatedHelp(enablePkgMarker.Name, "object", "enables or disables object interface & deepcopy implementation generation for this package")) + into.AddHelp(legacyEnableTypeMarker, + markers.DeprecatedHelp(enableTypeMarker.Name, "object", "overrides enabling or disabling deepcopy generation for this type")) + into.AddHelp(legacyIsObjectMarker, + markers.DeprecatedHelp(isObjectMarker.Name, "object", "enables object interface implementation generation for this type")) + return nil +} + +func enabledOnPackage(col *markers.Collector, pkg *loader.Package) (bool, error) { + pkgMarkers, err := markers.PackageMarkers(col, pkg) + if err != nil { + return false, err + } + pkgMarker := pkgMarkers.Get(enablePkgMarker.Name) + if pkgMarker != nil { + return pkgMarker.(bool), nil + } + legacyMarker := pkgMarkers.Get(legacyEnablePkgMarker.Name) + if legacyMarker != nil { + legacyMarkerVal := string(legacyMarker.(markers.RawArguments)) + firstArg := strings.Split(legacyMarkerVal, ",")[0] + return firstArg == "package", nil + } + + return false, nil +} + +func enabledOnType(allTypes bool, info *markers.TypeInfo) bool { + if typeMarker := info.Markers.Get(enableTypeMarker.Name); typeMarker != nil { + return typeMarker.(bool) + } + legacyMarker := info.Markers.Get(legacyEnableTypeMarker.Name) + if legacyMarker != nil { + legacyMarkerVal := string(legacyMarker.(markers.RawArguments)) + return legacyMarkerVal == "true" + } + return allTypes || genObjectInterface(info) +} + +func genObjectInterface(info *markers.TypeInfo) bool { + objectEnabled := info.Markers.Get(isObjectMarker.Name) + if objectEnabled != nil { + return objectEnabled.(bool) + } + + for _, legacyEnabled := range info.Markers[legacyIsObjectMarker.Name] { + if legacyEnabled == runtimeObjPath { + return true + } + } + return false +} + +func (d Generator) Generate(ctx *genall.GenerationContext) error { + var headerText string + + if d.HeaderFile != "" { + headerBytes, err := ctx.ReadFile(d.HeaderFile) + if err != nil { + return err + } + headerText = string(headerBytes) + } + headerText = strings.ReplaceAll(headerText, " YEAR", " "+d.Year) + + objGenCtx := ObjectGenCtx{ + Collector: ctx.Collector, + Checker: ctx.Checker, + HeaderText: headerText, + } + + for _, root := range ctx.Roots { + outContents := objGenCtx.generateForPackage(root) + if outContents == nil { + continue + } + + writeOut(ctx, root, outContents) + } + + return nil +} + +// ObjectGenCtx contains the common info for generating deepcopy implementations. +// It mostly exists so that generating for a package can be easily tested without +// requiring a full set of output rules, etc. +type ObjectGenCtx struct { + Collector *markers.Collector + Checker *loader.TypeChecker + HeaderText string +} + +// writeHeader writes out the build tag, package declaration, and imports +func writeHeader(pkg *loader.Package, out io.Writer, packageName string, imports *importsList, headerText string) { + // NB(directxman12): blank line after build tags to distinguish them from comments + _, err := fmt.Fprintf(out, `//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +%[3]s + +// Code generated by controller-gen. DO NOT EDIT. + +package %[1]s + +import ( +%[2]s +) + +`, packageName, strings.Join(imports.ImportSpecs(), "\n"), headerText) + if err != nil { + pkg.AddError(err) + } + +} + +// generateForPackage generates DeepCopy and runtime.Object implementations for +// types in the given package, writing the formatted result to given writer. +// May return nil if source could not be generated. +func (ctx *ObjectGenCtx) generateForPackage(root *loader.Package) []byte { + allTypes, err := enabledOnPackage(ctx.Collector, root) + if err != nil { + root.AddError(err) + return nil + } + + ctx.Checker.Check(root) + + root.NeedTypesInfo() + + byType := make(map[string][]byte) + imports := &importsList{ + byPath: make(map[string]string), + byAlias: make(map[string]string), + pkg: root, + } + // avoid confusing aliases by "reserving" the root package's name as an alias + imports.byAlias[root.Name] = "" + + if err := markers.EachType(ctx.Collector, root, func(info *markers.TypeInfo) { + outContent := new(bytes.Buffer) + + // copy when nabled for all types and not disabled, or enabled + // specifically on this type + if !enabledOnType(allTypes, info) { + return + } + + // avoid copying non-exported types, etc + if !shouldBeCopied(root, info) { + return + } + + copyCtx := ©MethodMaker{ + pkg: root, + importsList: imports, + codeWriter: &codeWriter{out: outContent}, + } + + copyCtx.GenerateMethodsFor(root, info) + + outBytes := outContent.Bytes() + if len(outBytes) > 0 { + byType[info.Name] = outBytes + } + }); err != nil { + root.AddError(err) + return nil + } + + if len(byType) == 0 { + return nil + } + + outContent := new(bytes.Buffer) + writeHeader(root, outContent, root.Name, imports, ctx.HeaderText) + writeMethods(root, outContent, byType) + + outBytes := outContent.Bytes() + formattedBytes, err := format.Source(outBytes) + if err != nil { + root.AddError(err) + // we still write the invalid source to disk to figure out what went wrong + } else { + outBytes = formattedBytes + } + + return outBytes +} + +// writeMethods writes each method to the file, sorted by type name. +func writeMethods(pkg *loader.Package, out io.Writer, byType map[string][]byte) { + sortedNames := make([]string, 0, len(byType)) + for name := range byType { + sortedNames = append(sortedNames, name) + } + sort.Strings(sortedNames) + + for _, name := range sortedNames { + _, err := out.Write(byType[name]) + if err != nil { + pkg.AddError(err) + } + } +} + +// writeFormatted outputs the given code, after gofmt-ing it. If we couldn't gofmt, +// we write the unformatted code for debugging purposes. +func writeOut(ctx *genall.GenerationContext, root *loader.Package, outBytes []byte) { + outputFile, err := ctx.Open(root, "zz_generated.deepcopy.go") + if err != nil { + root.AddError(err) + return + } + defer outputFile.Close() + n, err := outputFile.Write(outBytes) + if err != nil { + root.AddError(err) + return + } + if n < len(outBytes) { + root.AddError(io.ErrShortWrite) + } +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/deepcopy/traverse.go b/vendor/sigs.k8s.io/controller-tools/pkg/deepcopy/traverse.go new file mode 100644 index 0000000000..3a751757d5 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/deepcopy/traverse.go @@ -0,0 +1,829 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package deepcopy + +import ( + "fmt" + "go/ast" + "go/types" + "io" + "path" + "strings" + "unicode" + "unicode/utf8" + + "sigs.k8s.io/controller-tools/pkg/loader" + "sigs.k8s.io/controller-tools/pkg/markers" +) + +// NB(directxman12): This code is a bit of a byzantine mess. +// I've tried to clean it up a bit from the original in deepcopy-gen, +// but parts remain a bit convoluted. Exercise caution when changing. +// It's perhaps a tad over-commented now, but better safe than sorry. +// It also seriously needs auditing for sanity -- there's parts where we +// copy the original deepcopy-gen's output just to be safe, but some of that +// could be simplified away if we're careful. + +// codeWriter assists in writing out Go code lines and blocks to a writer. +type codeWriter struct { + out io.Writer +} + +// Line writes a single line. +func (c *codeWriter) Line(line string) { + fmt.Fprintln(c.out, line) +} + +// Linef writes a single line with formatting (as per fmt.Sprintf). +func (c *codeWriter) Linef(line string, args ...interface{}) { + fmt.Fprintf(c.out, line+"\n", args...) +} + +// If writes an if statement with the given setup/condition clause, executing +// the given function to write the contents of the block. +func (c *codeWriter) If(setup string, block func()) { + c.Linef("if %s {", setup) + block() + c.Line("}") +} + +// If writes if and else statements with the given setup/condition clause, executing +// the given functions to write the contents of the blocks. +func (c *codeWriter) IfElse(setup string, ifBlock func(), elseBlock func()) { + c.Linef("if %s {", setup) + ifBlock() + c.Line("} else {") + elseBlock() + c.Line("}") +} + +// For writes an for statement with the given setup/condition clause, executing +// the given function to write the contents of the block. +func (c *codeWriter) For(setup string, block func()) { + c.Linef("for %s {", setup) + block() + c.Line("}") +} + +// importsList keeps track of required imports, automatically assigning aliases +// to import statement. +type importsList struct { + byPath map[string]string + byAlias map[string]string + + pkg *loader.Package +} + +// NeedImport marks that the given package is needed in the list of imports, +// returning the ident (import alias) that should be used to reference the package. +func (l *importsList) NeedImport(importPath string) string { + // we get an actual path from Package, which might include venddored + // packages if running on a package in vendor. + if ind := strings.LastIndex(importPath, "/vendor/"); ind != -1 { + importPath = importPath[ind+8: /* len("/vendor/") */] + } + + // check to see if we've already assigned an alias, and just return that. + alias, exists := l.byPath[importPath] + if exists { + return alias + } + + // otherwise, calculate an import alias by joining path parts till we get something unique + restPath, nextWord := path.Split(importPath) + + for otherPath, exists := "", true; exists && otherPath != importPath; otherPath, exists = l.byAlias[alias] { + if restPath == "" { + // do something else to disambiguate if we're run out of parts and + // still have duplicates, somehow + alias += "x" + } + + // can't have a first digit, per Go identifier rules, so just skip them + for firstRune, runeLen := utf8.DecodeRuneInString(nextWord); unicode.IsDigit(firstRune); firstRune, runeLen = utf8.DecodeRuneInString(nextWord) { + nextWord = nextWord[runeLen:] + } + + // make a valid identifier by replacing "bad" characters with underscores + nextWord = strings.Map(func(r rune) rune { + if unicode.IsLetter(r) || unicode.IsDigit(r) || r == '_' { + return r + } + return '_' + }, nextWord) + + alias = nextWord + alias + if len(restPath) > 0 { + restPath, nextWord = path.Split(restPath[:len(restPath)-1] /* chop off final slash */) + } + } + + l.byPath[importPath] = alias + l.byAlias[alias] = importPath + return alias +} + +// ImportSpecs returns a string form of each import spec +// (i.e. `alias "path/to/import"). Aliases are only present +// when they don't match the package name. +func (l *importsList) ImportSpecs() []string { + res := make([]string, 0, len(l.byPath)) + for importPath, alias := range l.byPath { + pkg := l.pkg.Imports()[importPath] + if pkg != nil && pkg.Name == alias { + // don't print if alias is the same as package name + // (we've already taken care of duplicates). + res = append(res, fmt.Sprintf("%q", importPath)) + } else { + res = append(res, fmt.Sprintf("%s %q", alias, importPath)) + } + } + return res +} + +// namingInfo holds package and syntax for referencing a field, type, +// etc. It's used to allow lazily marking import usage. +// You should generally retrieve the syntax using Syntax. +type namingInfo struct { + // typeInfo is the type being named. + typeInfo types.Type + nameOverride string +} + +// Syntax calculates the code representation of the given type or name, +// and marks that is used (potentially marking an import as used). +func (n *namingInfo) Syntax(basePkg *loader.Package, imports *importsList) string { + if n.nameOverride != "" { + return n.nameOverride + } + + // NB(directxman12): typeInfo.String gets us most of the way there, + // but fails (for us) on named imports, since it uses the full package path. + switch typeInfo := n.typeInfo.(type) { + case *types.Named: + // register that we need an import for this type, + // so we can get the appropriate alias to use. + typeName := typeInfo.Obj() + otherPkg := typeName.Pkg() + if otherPkg == basePkg.Types { + // local import + return typeName.Name() + } + alias := imports.NeedImport(loader.NonVendorPath(otherPkg.Path())) + return alias + "." + typeName.Name() + case *types.Basic: + return typeInfo.String() + case *types.Pointer: + return "*" + (&namingInfo{typeInfo: typeInfo.Elem()}).Syntax(basePkg, imports) + case *types.Slice: + return "[]" + (&namingInfo{typeInfo: typeInfo.Elem()}).Syntax(basePkg, imports) + case *types.Map: + return fmt.Sprintf( + "map[%s]%s", + (&namingInfo{typeInfo: typeInfo.Key()}).Syntax(basePkg, imports), + (&namingInfo{typeInfo: typeInfo.Elem()}).Syntax(basePkg, imports)) + default: + basePkg.AddError(fmt.Errorf("name requested for invalid type: %s", typeInfo)) + return typeInfo.String() + } +} + +// copyMethodMakers makes DeepCopy (and related) methods for Go types, +// writing them to its codeWriter. +type copyMethodMaker struct { + pkg *loader.Package + *importsList + *codeWriter +} + +// GenerateMethodsFor makes DeepCopy, DeepCopyInto, and DeepCopyObject methods +// for the given type, when appropriate +func (c *copyMethodMaker) GenerateMethodsFor(root *loader.Package, info *markers.TypeInfo) { + typeInfo := root.TypesInfo.TypeOf(info.RawSpec.Name) + if typeInfo == types.Typ[types.Invalid] { + root.AddError(loader.ErrFromNode(fmt.Errorf("unknown type: %s", info.Name), info.RawSpec)) + } + + // figure out if we need to use a pointer receiver -- most types get a pointer receiver, + // except those that are aliases to types that are already pass-by-reference (pointers, + // interfaces. maps, slices). + ptrReceiver := usePtrReceiver(typeInfo) + + hasManualDeepCopyInto := hasDeepCopyIntoMethod(root, typeInfo) + hasManualDeepCopy, deepCopyOnPtr := hasDeepCopyMethod(root, typeInfo) + + // only generate each method if it hasn't been implemented. + if !hasManualDeepCopyInto { + c.Line("// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.") + if ptrReceiver { + c.Linef("func (in *%s) DeepCopyInto(out *%s) {", info.Name, info.Name) + } else { + c.Linef("func (in %s) DeepCopyInto(out *%s) {", info.Name, info.Name) + c.Line("{in := &in") // add an extra block so that we can redefine `in` without type issues + } + + // just wrap the existing deepcopy if present + if hasManualDeepCopy { + if deepCopyOnPtr { + c.Line("clone := in.DeepCopy()") + c.Line("*out = *clone") + } else { + c.Line("*out = in.DeepCopy()") + } + } else { + c.genDeepCopyIntoBlock(&namingInfo{nameOverride: info.Name}, typeInfo) + } + + if !ptrReceiver { + c.Line("}") // close our extra "in redefinition" block + } + c.Line("}") + } + + if !hasManualDeepCopy { + // these are both straightforward, so we just template them out. + if ptrReceiver { + c.Linef(ptrDeepCopy, info.Name) + } else { + c.Linef(bareDeepCopy, info.Name) + } + + // maybe also generate DeepCopyObject, if asked. + if genObjectInterface(info) { + // we always need runtime.Object for DeepCopyObject + runtimeAlias := c.NeedImport("k8s.io/apimachinery/pkg/runtime") + if ptrReceiver { + c.Linef(ptrDeepCopyObj, info.Name, runtimeAlias) + } else { + c.Linef(bareDeepCopyObj, info.Name, runtimeAlias) + } + } + } +} + +// genDeepCopyBody generates a DeepCopyInto block for the given type. The +// block is *not* wrapped in curly braces. +func (c *copyMethodMaker) genDeepCopyIntoBlock(actualName *namingInfo, typeInfo types.Type) { + // we calculate *how* we should copy mostly based on the "eventual" type of + // a given type (i.e. the type that results from following all aliases) + last := eventualUnderlyingType(typeInfo) + + // we might hit a type that has a manual deepcopy method written on non-root types + // (this case is handled for root types in GenerateMethodFor). + // In that case (when we're not dealing with a pointer, since those need special handling + // to match 1-to-1 with k8s deepcopy-gen), just use that. + if _, isPtr := last.(*types.Pointer); !isPtr && hasAnyDeepCopyMethod(c.pkg, typeInfo) { + c.Line("*out = in.DeepCopy()") + return + } + + switch last := last.(type) { + case *types.Basic: + switch last.Kind() { + case types.Invalid, types.UnsafePointer: + c.pkg.AddError(fmt.Errorf("invalid type: %s", last)) + default: + // basic types themselves can be "shallow" copied, so all we need + // to do is check if our *actual* type (not the underlying one) has + // a custom method implemented. + if hasMethod, _ := hasDeepCopyMethod(c.pkg, typeInfo); hasMethod { + c.Line("*out = in.DeepCopy()") + } + c.Line("*out = *in") + } + case *types.Map: + c.genMapDeepCopy(actualName, last) + case *types.Slice: + c.genSliceDeepCopy(actualName, last) + case *types.Struct: + c.genStructDeepCopy(actualName, last) + case *types.Pointer: + c.genPointerDeepCopy(actualName, last) + case *types.Named: + // handled via the above loop, should never happen + c.pkg.AddError(fmt.Errorf("interface type %s encountered directly, invalid condition", last)) + default: + c.pkg.AddError(fmt.Errorf("invalid type: %s", last)) + } +} + +// genMapDeepCopy generates DeepCopy code for the given named type whose eventual +// type is the given map type. +func (c *copyMethodMaker) genMapDeepCopy(actualName *namingInfo, mapType *types.Map) { + // maps *must* have shallow-copiable types, since we just iterate + // through the keys, only trying to deepcopy the values. + if !fineToShallowCopy(mapType.Key()) { + c.pkg.AddError(fmt.Errorf("invalid map key type: %s", mapType.Key())) + return + } + + // make our actual type (not the underlying one)... + c.Linef("*out = make(%[1]s, len(*in))", actualName.Syntax(c.pkg, c.importsList)) + + // ...and copy each element appropriately + c.For("key, val := range *in", func() { + // check if we have manually written methods, + // in which case we'll just try and use those + hasDeepCopy, copyOnPtr := hasDeepCopyMethod(c.pkg, mapType.Elem()) + hasDeepCopyInto := hasDeepCopyIntoMethod(c.pkg, mapType.Elem()) + switch { + case hasDeepCopyInto || hasDeepCopy: + // use the manually-written methods + _, fieldIsPtr := mapType.Elem().(*types.Pointer) // is "out" actually a pointer + inIsPtr := resultWillBePointer(mapType.Elem(), hasDeepCopy, copyOnPtr) // does copying "in" produce a pointer + if hasDeepCopy { + // If we're calling DeepCopy, check if it's receiver needs a pointer + inIsPtr = copyOnPtr + } + if inIsPtr == fieldIsPtr { + c.Line("(*out)[key] = val.DeepCopy()") + } else if fieldIsPtr { + c.Line("{") // use a block because we use `x` as a temporary + c.Line("x := val.DeepCopy()") + c.Line("(*out)[key] = &x") + c.Line("}") + } else { + c.Line("(*out)[key] = *val.DeepCopy()") + } + case fineToShallowCopy(mapType.Elem()): + // just shallow copy types for which it's safe to do so + c.Line("(*out)[key] = val") + default: + // otherwise, we've got some kind-specific actions, + // based on the element's eventual type. + + underlyingElem := eventualUnderlyingType(mapType.Elem()) + + // if it passes by reference, let the main switch handle it + if passesByReference(underlyingElem) { + c.Linef("var outVal %[1]s", (&namingInfo{typeInfo: underlyingElem}).Syntax(c.pkg, c.importsList)) + c.IfElse("val == nil", func() { + c.Line("(*out)[key] = nil") + }, func() { + c.Line("in, out := &val, &outVal") + c.genDeepCopyIntoBlock(&namingInfo{typeInfo: mapType.Elem()}, mapType.Elem()) + }) + c.Line("(*out)[key] = outVal") + + return + } + + // otherwise... + switch underlyingElem := underlyingElem.(type) { + case *types.Struct: + // structs will have deepcopy generated for them, so use that + c.Line("(*out)[key] = *val.DeepCopy()") + default: + c.pkg.AddError(fmt.Errorf("invalid map value type: %s", underlyingElem)) + return + } + } + }) +} + +// genSliceDeepCopy generates DeepCopy code for the given named type whose +// underlying type is the given slice. +func (c *copyMethodMaker) genSliceDeepCopy(actualName *namingInfo, sliceType *types.Slice) { + underlyingElem := eventualUnderlyingType(sliceType.Elem()) + + // make the actual type (not the underlying) + c.Linef("*out = make(%[1]s, len(*in))", actualName.Syntax(c.pkg, c.importsList)) + + // check if we need to do anything special, or just copy each element appropriately + switch { + case hasAnyDeepCopyMethod(c.pkg, sliceType.Elem()): + // just use deepcopy if it's present (deepcopyinto will be filled in by our code) + c.For("i := range *in", func() { + c.Line("(*in)[i].DeepCopyInto(&(*out)[i])") + }) + case fineToShallowCopy(underlyingElem): + // shallow copy if ok + c.Line("copy(*out, *in)") + default: + // copy each element appropriately + c.For("i := range *in", func() { + // fall back to normal code for reference types or those with custom logic + if passesByReference(underlyingElem) || hasAnyDeepCopyMethod(c.pkg, sliceType.Elem()) { + c.If("(*in)[i] != nil", func() { + c.Line("in, out := &(*in)[i], &(*out)[i]") + c.genDeepCopyIntoBlock(&namingInfo{typeInfo: sliceType.Elem()}, sliceType.Elem()) + }) + return + } + + switch underlyingElem.(type) { + case *types.Struct: + // structs will always have deepcopy + c.Linef("(*in)[i].DeepCopyInto(&(*out)[i])") + default: + c.pkg.AddError(fmt.Errorf("invalid slice element type: %s", underlyingElem)) + } + }) + } +} + +// genStructDeepCopy generates DeepCopy code for the given named type whose +// underlying type is the given struct. +func (c *copyMethodMaker) genStructDeepCopy(_ *namingInfo, structType *types.Struct) { + c.Line("*out = *in") + + for i := 0; i < structType.NumFields(); i++ { + field := structType.Field(i) + + // if we have a manual deepcopy, use that + hasDeepCopy, copyOnPtr := hasDeepCopyMethod(c.pkg, field.Type()) + hasDeepCopyInto := hasDeepCopyIntoMethod(c.pkg, field.Type()) + if hasDeepCopyInto || hasDeepCopy { + // NB(directxman12): yes, I know this is kind-of weird that we + // have all this special-casing here, but it's nice for testing + // purposes to be 1-to-1 with deepcopy-gen, which does all sorts of + // stuff like this (I'm pretty sure I found some codepaths that + // never execute there, because they're pretty clearly invalid + // syntax). + + _, fieldIsPtr := field.Type().(*types.Pointer) + inIsPtr := resultWillBePointer(field.Type(), hasDeepCopy, copyOnPtr) + if fieldIsPtr { + // we'll need a if block to check for nilness + // we'll let genDeepCopyIntoBlock handle the details, we just needed the setup + c.If(fmt.Sprintf("in.%s != nil", field.Name()), func() { + c.Linef("in, out := &in.%[1]s, &out.%[1]s", field.Name()) + c.genDeepCopyIntoBlock(&namingInfo{typeInfo: field.Type()}, field.Type()) + }) + } else { + // special-case for compatibility with deepcopy-gen + if inIsPtr == fieldIsPtr { + c.Linef("out.%[1]s = in.%[1]s.DeepCopy()", field.Name()) + } else { + c.Linef("in.%[1]s.DeepCopyInto(&out.%[1]s)", field.Name()) + } + } + continue + } + + // pass-by-reference fields get delegated to the main type + underlyingField := eventualUnderlyingType(field.Type()) + if passesByReference(underlyingField) { + c.If(fmt.Sprintf("in.%s != nil", field.Name()), func() { + c.Linef("in, out := &in.%[1]s, &out.%[1]s", field.Name()) + c.genDeepCopyIntoBlock(&namingInfo{typeInfo: field.Type()}, field.Type()) + }) + continue + } + + // otherwise... + switch underlyingField := underlyingField.(type) { + case *types.Basic: + switch underlyingField.Kind() { + case types.Invalid, types.UnsafePointer: + c.pkg.AddError(loader.ErrFromNode(fmt.Errorf("invalid field type: %s", underlyingField), field)) + return + default: + // nothing to do, initial assignment copied this + } + case *types.Struct: + if fineToShallowCopy(field.Type()) { + c.Linef("out.%[1]s = in.%[1]s", field.Name()) + } else { + c.Linef("in.%[1]s.DeepCopyInto(&out.%[1]s)", field.Name()) + } + default: + c.pkg.AddError(loader.ErrFromNode(fmt.Errorf("invalid field type: %s", underlyingField), field)) + return + } + } +} + +// genPointerDeepCopy generates DeepCopy code for the given named type whose +// underlying type is the given struct. +func (c *copyMethodMaker) genPointerDeepCopy(_ *namingInfo, pointerType *types.Pointer) { + underlyingElem := eventualUnderlyingType(pointerType.Elem()) + + // if we have a manually written deepcopy, just use that + hasDeepCopy, copyOnPtr := hasDeepCopyMethod(c.pkg, pointerType.Elem()) + hasDeepCopyInto := hasDeepCopyIntoMethod(c.pkg, pointerType.Elem()) + if hasDeepCopyInto || hasDeepCopy { + outNeedsPtr := resultWillBePointer(pointerType.Elem(), hasDeepCopy, copyOnPtr) + if hasDeepCopy { + outNeedsPtr = copyOnPtr + } + if outNeedsPtr { + c.Line("*out = (*in).DeepCopy()") + } else { + c.Line("x := (*in).DeepCopy()") + c.Line("*out = &x") + } + return + } + + // shallow-copiable types are pretty easy + if fineToShallowCopy(underlyingElem) { + c.Linef("*out = new(%[1]s)", (&namingInfo{typeInfo: pointerType.Elem()}).Syntax(c.pkg, c.importsList)) + c.Line("**out = **in") + return + } + + // pass-by-reference types get delegated to the main switch + if passesByReference(underlyingElem) { + c.Linef("*out = new(%s)", (&namingInfo{typeInfo: underlyingElem}).Syntax(c.pkg, c.importsList)) + c.If("**in != nil", func() { + c.Line("in, out := *in, *out") + c.genDeepCopyIntoBlock(&namingInfo{typeInfo: underlyingElem}, eventualUnderlyingType(underlyingElem)) + }) + return + } + + // otherwise... + switch underlyingElem := underlyingElem.(type) { + case *types.Struct: + c.Linef("*out = new(%[1]s)", (&namingInfo{typeInfo: pointerType.Elem()}).Syntax(c.pkg, c.importsList)) + c.Line("(*in).DeepCopyInto(*out)") + default: + c.pkg.AddError(fmt.Errorf("invalid pointer element type: %s", underlyingElem)) + return + } +} + +// usePtrReceiver checks if we need a pointer receiver on methods for the given type +// Pass-by-reference types don't get pointer receivers. +func usePtrReceiver(typeInfo types.Type) bool { + switch typeInfo.(type) { + case *types.Pointer: + return false + case *types.Map: + return false + case *types.Slice: + return false + case *types.Named: + return usePtrReceiver(typeInfo.Underlying()) + default: + return true + } +} + +func resultWillBePointer(typeInfo types.Type, hasDeepCopy, deepCopyOnPtr bool) bool { + // if we have a manual deepcopy, we can just check what that returns + if hasDeepCopy { + return deepCopyOnPtr + } + + // otherwise, we'll need to check its type + switch typeInfo := typeInfo.(type) { + case *types.Pointer: + // NB(directxman12): we don't have to worry about the elem having a deepcopy, + // since hasManualDeepCopy would've caught that. + + // we'll be calling on the elem, so check that + return resultWillBePointer(typeInfo.Elem(), false, false) + case *types.Map: + return false + case *types.Slice: + return false + case *types.Named: + return resultWillBePointer(typeInfo.Underlying(), false, false) + default: + return true + } +} + +// shouldBeCopied checks if we're supposed to make deepcopy methods the given type. +// +// This is the case if it's exported *and* either: +// - has a partial manual DeepCopy implementation (in which case we fill in the rest) +// - aliases to a non-basic type eventually +// - is a struct +func shouldBeCopied(pkg *loader.Package, info *markers.TypeInfo) bool { + if !ast.IsExported(info.Name) { + return false + } + + typeInfo := pkg.TypesInfo.TypeOf(info.RawSpec.Name) + if typeInfo == types.Typ[types.Invalid] { + pkg.AddError(loader.ErrFromNode(fmt.Errorf("unknown type: %s", info.Name), info.RawSpec)) + return false + } + + // according to gengo, everything named is an alias, except for an alias to a pointer, + // which is just a pointer, afaict. Just roll with it. + if asPtr, isPtr := typeInfo.(*types.Named).Underlying().(*types.Pointer); isPtr { + typeInfo = asPtr + } + + lastType := typeInfo + if _, isNamed := typeInfo.(*types.Named); isNamed { + // if it has a manual deepcopy or deepcopyinto, we're fine + if hasAnyDeepCopyMethod(pkg, typeInfo) { + return true + } + + for underlyingType := typeInfo.Underlying(); underlyingType != lastType; lastType, underlyingType = underlyingType, underlyingType.Underlying() { + // if it has a manual deepcopy or deepcopyinto, we're fine + if hasAnyDeepCopyMethod(pkg, underlyingType) { + return true + } + + // aliases to other things besides basics need copy methods + // (basics can be straight-up shallow-copied) + if _, isBasic := underlyingType.(*types.Basic); !isBasic { + return true + } + } + } + + // structs are the only thing that's not a basic that's copiable by default + _, isStruct := lastType.(*types.Struct) + return isStruct +} + +// hasDeepCopyMethod checks if this type has a manual DeepCopy method and if +// the method has a pointer receiver. +func hasDeepCopyMethod(pkg *loader.Package, typeInfo types.Type) (bool, bool) { + deepCopyMethod, ind, _ := types.LookupFieldOrMethod(typeInfo, true /* check pointers too */, pkg.Types, "DeepCopy") + if len(ind) != 1 { + // ignore embedded methods + return false, false + } + if deepCopyMethod == nil { + return false, false + } + + methodSig := deepCopyMethod.Type().(*types.Signature) + if methodSig.Params() != nil && methodSig.Params().Len() != 0 { + return false, false + } + if methodSig.Results() == nil || methodSig.Results().Len() != 1 { + return false, false + } + + recvAsPtr, recvIsPtr := methodSig.Recv().Type().(*types.Pointer) + if recvIsPtr { + // NB(directxman12): the pointer type returned here isn't comparable even though they + // have the same underlying type, for some reason (probably that + // LookupFieldOrMethod calls types.NewPointer for us), so check the + // underlying values. + + resultPtr, resultIsPtr := methodSig.Results().At(0).Type().(*types.Pointer) + if !resultIsPtr { + // pointer vs non-pointer are different types + return false, false + } + + if recvAsPtr.Elem() != resultPtr.Elem() { + return false, false + } + } else if methodSig.Results().At(0).Type() != methodSig.Recv().Type() { + return false, false + } + + return true, recvIsPtr +} + +// hasDeepCopyIntoMethod checks if this type has a manual DeepCopyInto method. +func hasDeepCopyIntoMethod(pkg *loader.Package, typeInfo types.Type) bool { + deepCopyMethod, ind, _ := types.LookupFieldOrMethod(typeInfo, true /* check pointers too */, pkg.Types, "DeepCopyInto") + if len(ind) != 1 { + // ignore embedded methods + return false + } + if deepCopyMethod == nil { + return false + } + + methodSig := deepCopyMethod.Type().(*types.Signature) + if methodSig.Params() == nil || methodSig.Params().Len() != 1 { + return false + } + paramPtr, isPtr := methodSig.Params().At(0).Type().(*types.Pointer) + if !isPtr { + return false + } + if methodSig.Results() != nil && methodSig.Results().Len() != 0 { + return false + } + + if recvPtr, recvIsPtr := methodSig.Recv().Type().(*types.Pointer); recvIsPtr { + // NB(directxman12): the pointer type returned here isn't comparable even though they + // have the same underlying type, for some reason (probably that + // LookupFieldOrMethod calls types.NewPointer for us), so check the + // underlying values. + return paramPtr.Elem() == recvPtr.Elem() + } + return methodSig.Recv().Type() == paramPtr.Elem() +} + +// hasAnyDeepCopyMethod checks if the given method has DeepCopy or DeepCopyInto +// (either of which implies the other will exist eventually). +func hasAnyDeepCopyMethod(pkg *loader.Package, typeInfo types.Type) bool { + hasDeepCopy, _ := hasDeepCopyMethod(pkg, typeInfo) + return hasDeepCopy || hasDeepCopyIntoMethod(pkg, typeInfo) +} + +// eventualUnderlyingType gets the "final" type in a sequence of named aliases. +// It's effectively a shortcut for calling Underlying in a loop. +func eventualUnderlyingType(typeInfo types.Type) types.Type { + last := typeInfo + for underlying := typeInfo.Underlying(); underlying != last; last, underlying = underlying, underlying.Underlying() { + // get the actual underlying type + } + return last +} + +// fineToShallowCopy checks if a shallow-copying a type is equivalent to deepcopy-ing it. +func fineToShallowCopy(typeInfo types.Type) bool { + switch typeInfo := typeInfo.(type) { + case *types.Basic: + // basic types (int, string, etc) are always fine to shallow-copy, + // except for Invalid and UnsafePointer, which can't be copied at all. + switch typeInfo.Kind() { + case types.Invalid, types.UnsafePointer: + return false + default: + return true + } + case *types.Named: + // aliases are fine to shallow-copy as long as they resolve to a shallow-copyable type + return fineToShallowCopy(typeInfo.Underlying()) + case *types.Struct: + // structs are fine to shallow-copy if they have all shallow-copyable fields + for i := 0; i < typeInfo.NumFields(); i++ { + field := typeInfo.Field(i) + if !fineToShallowCopy(field.Type()) { + return false + } + } + return true + default: + return false + } +} + +// passesByReference checks if the given type passesByReference +// (except for interfaces, which are handled separately). +func passesByReference(typeInfo types.Type) bool { + switch typeInfo.(type) { + case *types.Slice: + return true + case *types.Map: + return true + case *types.Pointer: + return true + default: + return false + } +} + +var ( + // ptrDeepCopy is a DeepCopy for a type with an existing DeepCopyInto and a pointer receiver. + ptrDeepCopy = ` +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new %[1]s. +func (in *%[1]s) DeepCopy() *%[1]s { + if in == nil { return nil } + out := new(%[1]s) + in.DeepCopyInto(out) + return out +} +` + + // ptrDeepCopy is a DeepCopy for a type with an existing DeepCopyInto and a non-pointer receiver. + bareDeepCopy = ` +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new %[1]s. +func (in %[1]s) DeepCopy() %[1]s { + if in == nil { return nil } + out := new(%[1]s) + in.DeepCopyInto(out) + return *out +} +` + + // ptrDeepCopy is a DeepCopyObject for a type with an existing DeepCopyInto and a pointer receiver. + ptrDeepCopyObj = ` +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *%[1]s) DeepCopyObject() %[2]s.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} +` + // ptrDeepCopy is a DeepCopyObject for a type with an existing DeepCopyInto and a non-pointer receiver. + bareDeepCopyObj = ` +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in %[1]s) DeepCopyObject() %[2]s.Object { + return in.DeepCopy() +} +` +) diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/deepcopy/zz_generated.markerhelp.go b/vendor/sigs.k8s.io/controller-tools/pkg/deepcopy/zz_generated.markerhelp.go new file mode 100644 index 0000000000..913bc1fb7f --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/deepcopy/zz_generated.markerhelp.go @@ -0,0 +1,46 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by helpgen. DO NOT EDIT. + +package deepcopy + +import ( + "sigs.k8s.io/controller-tools/pkg/markers" +) + +func (Generator) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "", + DetailedHelp: markers.DetailedHelp{ + Summary: "generates code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{ + "HeaderFile": { + Summary: "specifies the header text (e.g. license) to prepend to generated files.", + Details: "", + }, + "Year": { + Summary: "specifies the year to substitute for \" YEAR\" in the header file.", + Details: "", + }, + }, + } +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/genall/doc.go b/vendor/sigs.k8s.io/controller-tools/pkg/genall/doc.go new file mode 100644 index 0000000000..af67402e68 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/genall/doc.go @@ -0,0 +1,58 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package genall defines entrypoints for generation tools to hook into and +// share the same set of parsing, typechecking, and marker information. +// +// # Generators +// +// Each Generator knows how to register its markers into a central Registry, +// and then how to generate output using a Collector and some root packages. +// Each generator can be considered to be the output type of a marker, for easy +// command line parsing. +// +// # Output and Input +// +// Generators output artifacts via an OutputRule. OutputRules know how to +// write output for different package-associated (code) files, as well as +// config files. Each OutputRule should also be considered to be the output +// type as a marker, for easy command-line parsing. +// +// OutputRules groups together an OutputRule per generator, plus a default +// output rule for any not explicitly specified. +// +// OutputRules are defined for stdout, file writing, and sending to /dev/null +// (useful for doing "type-checking" without actually saving the results). +// +// InputRule defines custom input loading, but its shared across all +// Generators. There's currently only a filesystem implementation. +// +// # Runtime and Context +// +// Runtime maps together Generators, and constructs "contexts" which provide +// the common collector and roots, plus the output rule for that generator, and +// a handle for reading files (like boilerplate headers). +// +// It will run all associated generators, printing errors and automatically +// skipping type-checking errors (since those are commonly caused by the +// partial type-checking of loader.TypeChecker). +// +// # Options +// +// The FromOptions (and associated helpers) function makes it easy to use generators +// and output rules as markers that can be parsed from the command line, producing +// a registry from command line args. +package genall diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/genall/genall.go b/vendor/sigs.k8s.io/controller-tools/pkg/genall/genall.go new file mode 100644 index 0000000000..63afbac07c --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/genall/genall.go @@ -0,0 +1,269 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package genall + +import ( + "encoding/json" + "fmt" + "io" + "io/ioutil" + "os" + + "golang.org/x/tools/go/packages" + rawyaml "gopkg.in/yaml.v2" + + "sigs.k8s.io/controller-tools/pkg/loader" + "sigs.k8s.io/controller-tools/pkg/markers" +) + +// Generators are a list of Generators. +// NB(directxman12): this is a pointer so that we can uniquely identify each +// instance of a generator, even if it's not hashable. Different *instances* +// of a generator are treated differently. +type Generators []*Generator + +// RegisterMarkers registers all markers defined by each of the Generators in +// this list into the given registry. +func (g Generators) RegisterMarkers(reg *markers.Registry) error { + for _, gen := range g { + if err := (*gen).RegisterMarkers(reg); err != nil { + return err + } + } + return nil +} + +// CheckFilters returns the set of NodeFilters for all Generators that +// implement NeedsTypeChecking. +func (g Generators) CheckFilters() []loader.NodeFilter { + var filters []loader.NodeFilter + for _, gen := range g { + withFilter, needsChecking := (*gen).(NeedsTypeChecking) + if !needsChecking { + continue + } + filters = append(filters, withFilter.CheckFilter()) + } + return filters +} + +// NeedsTypeChecking indicates that a particular generator needs & has opinions +// on typechecking. If this is not implemented, a generator will be given a +// context with a nil typechecker. +type NeedsTypeChecking interface { + // CheckFilter indicates the loader.NodeFilter (if any) that should be used + // to prune out unused types/packages when type-checking (nodes for which + // the filter returns true are considered "interesting"). This filter acts + // as a baseline -- all types the pass through this filter will be checked, + // but more than that may also be checked due to other generators' filters. + CheckFilter() loader.NodeFilter +} + +// Generator knows how to register some set of markers, and then produce +// output artifacts based on loaded code containing those markers, +// sharing common loaded data. +type Generator interface { + // RegisterMarkers registers all markers needed by this Generator + // into the given registry. + RegisterMarkers(into *markers.Registry) error + // Generate generates artifacts produced by this marker. + // It's called *after* RegisterMarkers has been called. + Generate(*GenerationContext) error +} + +// HasHelp is some Generator, OutputRule, etc with a help method. +type HasHelp interface { + // Help returns help for this generator. + Help() *markers.DefinitionHelp +} + +// Runtime collects generators, loaded program data (Collector, root Packages), +// and I/O rules, running them together. +type Runtime struct { + // Generators are the Generators to be run by this Runtime. + Generators Generators + // GenerationContext is the base generation context that's copied + // to produce the context for each Generator. + GenerationContext + // OutputRules defines how to output artifacts for each Generator. + OutputRules OutputRules + // ErrorWriter defines where to write error messages. + ErrorWriter io.Writer +} + +// GenerationContext defines the common information needed for each Generator +// to run. +type GenerationContext struct { + // Collector is the shared marker collector. + Collector *markers.Collector + // Roots are the base packages to be processed. + Roots []*loader.Package + // Checker is the shared partial type-checker. + Checker *loader.TypeChecker + // OutputRule describes how to output artifacts. + OutputRule + // InputRule describes how to load associated boilerplate artifacts. + // It should *not* be used to load source files. + InputRule +} + +// WriteYAMLOptions implements the Options Pattern for WriteYAML. +type WriteYAMLOptions struct { + transform func(obj map[string]interface{}) error +} + +// WithTransform applies a transformation to objects just before writing them. +func WithTransform(transform func(obj map[string]interface{}) error) *WriteYAMLOptions { + return &WriteYAMLOptions{ + transform: transform, + } +} + +// WriteYAML writes the given objects out, serialized as YAML, using the +// context's OutputRule. Objects are written as separate documents, separated +// from each other by `---` (as per the YAML spec). +func (g GenerationContext) WriteYAML(itemPath string, objs []interface{}, options ...*WriteYAMLOptions) error { + out, err := g.Open(nil, itemPath) + if err != nil { + return err + } + defer out.Close() + + for _, obj := range objs { + yamlContent, err := yamlMarshal(obj, options...) + if err != nil { + return err + } + n, err := out.Write(append([]byte("---\n"), yamlContent...)) + if err != nil { + return err + } + if n < len(yamlContent) { + return io.ErrShortWrite + } + } + + return nil +} + +// yamlMarshal is based on sigs.k8s.io/yaml.Marshal, but allows for transforming the final data before writing. +func yamlMarshal(o interface{}, options ...*WriteYAMLOptions) ([]byte, error) { + j, err := json.Marshal(o) + if err != nil { + return nil, fmt.Errorf("error marshaling into JSON: %v", err) + } + + return yamlJSONToYAMLWithFilter(j, options...) +} + +// yamlJSONToYAMLWithFilter is based on sigs.k8s.io/yaml.JSONToYAML, but allows for transforming the final data before writing. +func yamlJSONToYAMLWithFilter(j []byte, options ...*WriteYAMLOptions) ([]byte, error) { + // Convert the JSON to an object. + var jsonObj map[string]interface{} + // We are using yaml.Unmarshal here (instead of json.Unmarshal) because the + // Go JSON library doesn't try to pick the right number type (int, float, + // etc.) when unmarshalling to interface{}, it just picks float64 + // universally. go-yaml does go through the effort of picking the right + // number type, so we can preserve number type throughout this process. + if err := rawyaml.Unmarshal(j, &jsonObj); err != nil { + return nil, err + } + + for _, option := range options { + if option.transform != nil { + if err := option.transform(jsonObj); err != nil { + return nil, err + } + } + } + + // Marshal this object into YAML. + return rawyaml.Marshal(jsonObj) +} + +// ReadFile reads the given boilerplate artifact using the context's InputRule. +func (g GenerationContext) ReadFile(path string) ([]byte, error) { + file, err := g.OpenForRead(path) + if err != nil { + return nil, err + } + defer file.Close() + return ioutil.ReadAll(file) +} + +// ForRoots produces a Runtime to run the given generators against the +// given packages. It outputs to /dev/null by default. +func (g Generators) ForRoots(rootPaths ...string) (*Runtime, error) { + roots, err := loader.LoadRoots(rootPaths...) + if err != nil { + return nil, err + } + rt := &Runtime{ + Generators: g, + GenerationContext: GenerationContext{ + Collector: &markers.Collector{ + Registry: &markers.Registry{}, + }, + Roots: roots, + InputRule: InputFromFileSystem, + Checker: &loader.TypeChecker{ + NodeFilters: g.CheckFilters(), + }, + }, + OutputRules: OutputRules{Default: OutputToNothing}, + } + if err := rt.Generators.RegisterMarkers(rt.Collector.Registry); err != nil { + return nil, err + } + return rt, nil +} + +// Run runs the Generators in this Runtime against its packages, printing +// errors (except type errors, which common result from using TypeChecker with +// filters), returning true if errors were found. +func (r *Runtime) Run() bool { + // TODO(directxman12): we could make this parallel, + // but we'd need to ensure all underlying machinery is threadsafe + + if r.ErrorWriter == nil { + r.ErrorWriter = os.Stderr + } + if len(r.Generators) == 0 { + fmt.Fprintln(r.ErrorWriter, "no generators to run") + return true + } + + hadErrs := false + for _, gen := range r.Generators { + ctx := r.GenerationContext // make a shallow copy + ctx.OutputRule = r.OutputRules.ForGenerator(gen) + + // don't pass a typechecker to generators that don't provide a filter + // to avoid accidents + if _, needsChecking := (*gen).(NeedsTypeChecking); !needsChecking { + ctx.Checker = nil + } + + if err := (*gen).Generate(&ctx); err != nil { + fmt.Fprintln(r.ErrorWriter, err) + hadErrs = true + } + } + + // skip TypeErrors -- they're probably just from partial typechecking in crd-gen + return loader.PrintErrors(r.Roots, packages.TypeError) || hadErrs +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/doc.go b/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/doc.go new file mode 100644 index 0000000000..d84d1798b4 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/doc.go @@ -0,0 +1,23 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package help contains utilities for actually writing out marker help. +// +// Namely, it contains a series of structs (and helpers for producing them) +// that represent a merged view of marker definition and help that can be used +// for consumption by the pretty subpackage (for terminal help) or serialized +// as JSON (e.g. for generating HTML help). +package help diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/pretty/doc.go b/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/pretty/doc.go new file mode 100644 index 0000000000..bc99e9ba99 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/pretty/doc.go @@ -0,0 +1,30 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package pretty contains utilities for formatting terminal help output, +// and a use of those to display marker help. +// +// # Terminal Output +// +// The Span interface and Table struct allow you to construct tables with +// colored formatting, without causing ANSI formatting characters to mess up width +// calculations. +// +// # Marker Help +// +// The MarkersSummary prints a summary table for marker help, while the MarkersDetails +// prints out more detailed information, with explainations of the individual marker fields. +package pretty diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/pretty/help.go b/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/pretty/help.go new file mode 100644 index 0000000000..3e34cc0d6c --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/pretty/help.go @@ -0,0 +1,171 @@ +package pretty + +import ( + "fmt" + "io" + + "sigs.k8s.io/controller-tools/pkg/genall/help" + + "github.com/fatih/color" +) + +var ( + headingStyle = Decoration(*color.New(color.Bold, color.Underline)) + markerNameStyle = Decoration(*color.New(color.Bold)) + fieldSummaryStyle = Decoration(*color.New(color.FgGreen, color.Italic)) + markerTargetStyle = Decoration(*color.New(color.Faint)) + fieldDetailStyle = Decoration(*color.New(color.Italic, color.FgGreen)) + deprecatedStyle = Decoration(*color.New(color.CrossedOut)) +) + +// MarkersSummary returns a condensed summary of help for the given markers. +func MarkersSummary(groupName string, markers []help.MarkerDoc) Span { + out := new(SpanWriter) + + out.Print(Text("\n")) + out.Print(headingStyle.Containing(Text(groupName))) + out.Print(Text("\n\n")) + + table := &Table{Sizing: &TableCalculator{Padding: 2}} + for _, marker := range markers { + table.StartRow() + table.Column(MarkerSyntaxHelp(marker)) + table.Column(markerTargetStyle.Containing(Text(marker.Target))) + + summary := new(SpanWriter) + if marker.DeprecatedInFavorOf != nil && len(*marker.DeprecatedInFavorOf) > 0 { + summary.Print(markerNameStyle.Containing(Text("(use "))) + summary.Print(markerNameStyle.Containing(Text(*marker.DeprecatedInFavorOf))) + summary.Print(markerNameStyle.Containing(Text(") "))) + } + summary.Print(Text(marker.Summary)) + table.Column(summary) + + table.EndRow() + } + out.Print(table) + + out.Print(Text("\n")) + + return out +} + +// MarkersDetails returns detailed help for the given markers, including detailed field help. +func MarkersDetails(fullDetail bool, groupName string, markers []help.MarkerDoc) Span { + out := new(SpanWriter) + + out.Print(Line(headingStyle.Containing(Text(groupName)))) + out.Print(Newlines(2)) + + for _, marker := range markers { + out.Print(Line(markerName(marker))) + out.Print(Text(" ")) + out.Print(markerTargetStyle.Containing(Text(marker.Target))) + + summary := new(SpanWriter) + if marker.DeprecatedInFavorOf != nil && len(*marker.DeprecatedInFavorOf) > 0 { + summary.Print(markerNameStyle.Containing(Text("(use "))) + summary.Print(markerNameStyle.Containing(Text(*marker.DeprecatedInFavorOf))) + summary.Print(markerNameStyle.Containing(Text(") "))) + } + summary.Print(Text(marker.Summary)) + + if !marker.AnonymousField() { + out.Print(Indented(1, Line(summary))) + if len(marker.Details) > 0 && fullDetail { + out.Print(Indented(1, Line(Text(marker.Details)))) + } + } + + if marker.AnonymousField() { + out.Print(Indented(1, Line(fieldDetailStyle.Containing(FieldSyntaxHelp(marker.Fields[0]))))) + out.Print(Text(" ")) + out.Print(summary) + if len(marker.Details) > 0 && fullDetail { + out.Print(Indented(2, Line(Text(marker.Details)))) + } + out.Print(Newlines(1)) + } else if !marker.Empty() { + out.Print(Newlines(1)) + if fullDetail { + for _, arg := range marker.Fields { + out.Print(Indented(1, Line(fieldDetailStyle.Containing(FieldSyntaxHelp(arg))))) + out.Print(Indented(2, Line(Text(arg.Summary)))) + if len(arg.Details) > 0 && fullDetail { + out.Print(Indented(2, Line(Text(arg.Details)))) + out.Print(Newlines(1)) + } + } + out.Print(Newlines(1)) + } else { + table := &Table{Sizing: &TableCalculator{Padding: 2}} + for _, arg := range marker.Fields { + table.StartRow() + table.Column(fieldDetailStyle.Containing(FieldSyntaxHelp(arg))) + table.Column(Text(arg.Summary)) + table.EndRow() + } + + out.Print(Indented(1, table)) + } + } else { + out.Print(Newlines(1)) + } + } + + return out +} + +func FieldSyntaxHelp(arg help.FieldHelp) Span { + return fieldSyntaxHelp(arg, "") +} + +// fieldSyntaxHelp prints the syntax help for a particular marker argument. +func fieldSyntaxHelp(arg help.FieldHelp, sep string) Span { + if arg.Optional { + return FromWriter(func(out io.Writer) error { + _, err := fmt.Fprintf(out, "[%s%s=<%s>]", sep, arg.Name, arg.TypeString()) + return err + }) + } + return FromWriter(func(out io.Writer) error { + _, err := fmt.Fprintf(out, "%s%s=<%s>", sep, arg.Name, arg.TypeString()) + return err + }) +} + +// markerName returns a span containing just the appropriately-formatted marker name. +func markerName(def help.MarkerDoc) Span { + if def.DeprecatedInFavorOf != nil { + return deprecatedStyle.Containing(Text("+" + def.Name)) + } + return markerNameStyle.Containing(Text("+" + def.Name)) +} + +// MarkerSyntaxHelp assembles syntax help for a given marker. +func MarkerSyntaxHelp(def help.MarkerDoc) Span { + out := new(SpanWriter) + + out.Print(markerName(def)) + + if def.Empty() { + return out + } + + sep := ":" + if def.AnonymousField() { + sep = "" + } + + fieldStyle := fieldSummaryStyle + if def.DeprecatedInFavorOf != nil { + fieldStyle = deprecatedStyle + } + + for _, arg := range def.Fields { + out.Print(fieldStyle.Containing(fieldSyntaxHelp(arg, sep))) + sep = "," + } + + return out +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/pretty/print.go b/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/pretty/print.go new file mode 100644 index 0000000000..8d7452a0b2 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/pretty/print.go @@ -0,0 +1,304 @@ +package pretty + +import ( + "bytes" + "fmt" + "io" + + "github.com/fatih/color" +) + +// NB(directxman12): this isn't particularly elegant, but it's also +// sufficiently simple as to be maintained here. Man (roff) would've +// probably worked, but it's not necessarily on Windows by default. + +// Span is a chunk of content that is writable to an output, but knows how to +// calculate its apparent visual "width" on the terminal (not to be confused +// with the raw length, which may include zero-width coloring sequences). +type Span interface { + // VisualLength reports the "width" as perceived by the user on the terminal + // (i.e. widest line, ignoring ANSI escape characters). + VisualLength() int + // WriteTo writes the full span contents to the given writer. + WriteTo(io.Writer) error +} + +// Table is a Span that writes its data in table form, with sizing controlled +// by the given table calculator. Rows are started with StartRow, followed by +// some calls to Column, followed by a call to EndRow. Once all rows are +// added, the table can be used as a Span. +type Table struct { + Sizing *TableCalculator + + cellsByRow [][]Span + colSizes []int +} + +// StartRow starts a new row. +// It must eventually be followed by EndRow. +func (t *Table) StartRow() { + t.cellsByRow = append(t.cellsByRow, []Span(nil)) +} + +// EndRow ends the currently started row. +func (t *Table) EndRow() { + lastRow := t.cellsByRow[len(t.cellsByRow)-1] + sizes := make([]int, len(lastRow)) + for i, cell := range lastRow { + sizes[i] = cell.VisualLength() + } + t.Sizing.AddRowSizes(sizes...) +} + +// Column adds the given span as a new column to the current row. +func (t *Table) Column(contents Span) { + currentRowInd := len(t.cellsByRow) - 1 + t.cellsByRow[currentRowInd] = append(t.cellsByRow[currentRowInd], contents) +} + +// SkipRow prints a span without having it contribute to the table calculation. +func (t *Table) SkipRow(contents Span) { + t.cellsByRow = append(t.cellsByRow, []Span{contents}) +} + +func (t *Table) WriteTo(out io.Writer) error { + if t.colSizes == nil { + t.colSizes = t.Sizing.ColumnWidths() + } + + for _, cells := range t.cellsByRow { + currentPosition := 0 + for colInd, cell := range cells { + colSize := t.colSizes[colInd] + diff := colSize - cell.VisualLength() + + if err := cell.WriteTo(out); err != nil { + return err + } + + if diff > 0 { + if err := writePadding(out, columnPadding, diff); err != nil { + return err + } + } + currentPosition += colSize + } + + if _, err := fmt.Fprint(out, "\n"); err != nil { + return err + } + } + + return nil +} + +func (t *Table) VisualLength() int { + if t.colSizes == nil { + t.colSizes = t.Sizing.ColumnWidths() + } + + res := 0 + for _, colSize := range t.colSizes { + res += colSize + } + return res +} + +// Text is a span that simply contains raw text. It's a good starting point. +type Text string + +func (t Text) VisualLength() int { return len(t) } +func (t Text) WriteTo(w io.Writer) error { + _, err := w.Write([]byte(t)) + return err +} + +// indented is a span that indents all lines by the given number of tabs. +type indented struct { + Amount int + Content Span +} + +func (i *indented) VisualLength() int { return i.Content.VisualLength() } +func (i *indented) WriteTo(w io.Writer) error { + var out bytes.Buffer + if err := i.Content.WriteTo(&out); err != nil { + return err + } + + lines := bytes.Split(out.Bytes(), []byte("\n")) + for lineInd, line := range lines { + if lineInd != 0 { + if _, err := w.Write([]byte("\n")); err != nil { + return err + } + } + if len(line) == 0 { + continue + } + + if err := writePadding(w, indentPadding, i.Amount); err != nil { + return err + } + if _, err := w.Write(line); err != nil { + return err + } + } + return nil +} + +// Indented returns a span that indents all lines by the given number of tabs. +func Indented(amt int, content Span) Span { + return &indented{Amount: amt, Content: content} +} + +// fromWriter is a span that takes content from a function expecting a Writer. +type fromWriter struct { + cache []byte + cacheError error + run func(io.Writer) error +} + +func (f *fromWriter) VisualLength() int { + if f.cache == nil { + var buf bytes.Buffer + if err := f.run(&buf); err != nil { + f.cacheError = err + } + f.cache = buf.Bytes() + } + return len(f.cache) +} +func (f *fromWriter) WriteTo(w io.Writer) error { + if f.cache != nil { + if f.cacheError != nil { + return f.cacheError + } + _, err := w.Write(f.cache) + return err + } + return f.run(w) +} + +// FromWriter returns a span that takes content from a function expecting a Writer. +func FromWriter(run func(io.Writer) error) Span { + return &fromWriter{run: run} +} + +// Decoration represents a terminal decoration. +type Decoration color.Color + +// Containing returns a Span that has the given decoration applied. +func (d Decoration) Containing(contents Span) Span { + return &decorated{ + Contents: contents, + Attributes: color.Color(d), + } +} + +// decorated is a span that has some terminal decoration applied. +type decorated struct { + Contents Span + Attributes color.Color +} + +func (d *decorated) VisualLength() int { return d.Contents.VisualLength() } +func (d *decorated) WriteTo(w io.Writer) error { + oldOut := color.Output + color.Output = w + defer func() { color.Output = oldOut }() + + d.Attributes.Set() + defer color.Unset() + + return d.Contents.WriteTo(w) +} + +// SpanWriter is a span that contains multiple sub-spans. +type SpanWriter struct { + contents []Span +} + +func (m *SpanWriter) VisualLength() int { + res := 0 + for _, span := range m.contents { + res += span.VisualLength() + } + return res +} +func (m *SpanWriter) WriteTo(w io.Writer) error { + for _, span := range m.contents { + if err := span.WriteTo(w); err != nil { + return err + } + } + return nil +} + +// Print adds a new span to this SpanWriter. +func (m *SpanWriter) Print(s Span) { + m.contents = append(m.contents, s) +} + +// lines is a span that adds some newlines, optionally followed by some content. +type lines struct { + content Span + amountBefore int +} + +func (l *lines) VisualLength() int { + if l.content == nil { + return 0 + } + return l.content.VisualLength() +} +func (l *lines) WriteTo(w io.Writer) error { + if err := writePadding(w, linesPadding, l.amountBefore); err != nil { + return err + } + if l.content != nil { + if err := l.content.WriteTo(w); err != nil { + return err + } + } + return nil +} + +// Newlines returns a span just containing some newlines. +func Newlines(amt int) Span { + return &lines{amountBefore: amt} +} + +// Line returns a span that emits a newline, followed by the given content. +func Line(content Span) Span { + return &lines{amountBefore: 1, content: content} +} + +var ( + columnPadding = []byte(" ") + indentPadding = []byte("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t") + linesPadding = []byte("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n") +) + +// writePadding writes out padding of the given type in the given amount to the writer. +// Each byte in the padding buffer contributes 1 to the amount -- the padding being +// a buffer is just for efficiency. +func writePadding(out io.Writer, typ []byte, amt int) error { + if amt <= len(typ) { + _, err := out.Write(typ[:amt]) + return err + } + + num := amt / len(typ) + rem := amt % len(typ) + for i := 0; i < num; i++ { + if _, err := out.Write(typ); err != nil { + return err + } + } + + if _, err := out.Write(typ[:rem]); err != nil { + return err + } + return nil +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/pretty/table.go b/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/pretty/table.go new file mode 100644 index 0000000000..5a0b4752af --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/pretty/table.go @@ -0,0 +1,64 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package pretty + +// TableCalculator calculates column widths (with optional padding) +// for a table based on the maximum required column width. +type TableCalculator struct { + cellSizesByCol [][]int + + Padding int + MaxWidth int +} + +// AddRowSizes registers a new row with cells of the given sizes. +func (c *TableCalculator) AddRowSizes(cellSizes ...int) { + if len(cellSizes) > len(c.cellSizesByCol) { + for range cellSizes[len(c.cellSizesByCol):] { + c.cellSizesByCol = append(c.cellSizesByCol, []int(nil)) + } + } + for i, size := range cellSizes { + c.cellSizesByCol[i] = append(c.cellSizesByCol[i], size) + } +} + +// ColumnWidths calculates the appropriate column sizes given the +// previously registered rows. +func (c *TableCalculator) ColumnWidths() []int { + maxColWidths := make([]int, len(c.cellSizesByCol)) + + for colInd, cellSizes := range c.cellSizesByCol { + max := 0 + for _, cellSize := range cellSizes { + if max < cellSize { + max = cellSize + } + } + maxColWidths[colInd] = max + } + + actualMaxWidth := c.MaxWidth - c.Padding + for i, width := range maxColWidths { + if actualMaxWidth > 0 && width > actualMaxWidth { + maxColWidths[i] = actualMaxWidth + } + maxColWidths[i] += c.Padding + } + + return maxColWidths +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/sort.go b/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/sort.go new file mode 100644 index 0000000000..53c923e34b --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/sort.go @@ -0,0 +1,106 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package help + +import ( + "strings" + + "sigs.k8s.io/controller-tools/pkg/markers" +) + +// SortGroup knows how to sort and group marker definitions. +type SortGroup interface { + // Less is equivalent to the Less function from sort, and is used to sort the markers. + Less(*markers.Definition, *markers.Definition) bool + // Group returns the "group" that a given marker belongs to. + Group(*markers.Definition, *markers.DefinitionHelp) string +} + +var ( + // SortByCategory sorts the markers by name and groups them by their help category. + SortByCategory = sortByCategory{} + + // SortByOption sorts by the generator that the option belongs to. + SortByOption = optionsSort{} +) + +type sortByCategory struct{} + +func (sortByCategory) Group(_ *markers.Definition, help *markers.DefinitionHelp) string { + if help == nil { + return "" + } + return help.Category +} +func (sortByCategory) Less(i, j *markers.Definition) bool { + return i.Name < j.Name +} + +type optionsSort struct{} + +func (optionsSort) Less(i, j *markers.Definition) bool { + iParts := strings.Split(i.Name, ":") + jParts := strings.Split(j.Name, ":") + + iGen := "" + iRule := "" + jGen := "" + jRule := "" + + switch len(iParts) { + case 1: + iGen = iParts[0] + // two means a default output rule, so ignore + case 2: + iRule = iParts[1] + case 3: + iGen = iParts[1] + iRule = iParts[2] + } + switch len(jParts) { + case 1: + jGen = jParts[0] + // two means a default output rule, so ignore + case 2: + jRule = jParts[1] + case 3: + jGen = jParts[1] + jRule = jParts[2] + } + + if iGen != jGen { + return iGen > jGen + } + + return iRule < jRule +} +func (optionsSort) Group(def *markers.Definition, _ *markers.DefinitionHelp) string { + parts := strings.Split(def.Name, ":") + + switch len(parts) { + case 1: + if parts[0] == "paths" { + return "generic" + } + return "generators" + case 2: + return "output rules (optionally as output::...)" + default: + return "" + // three means a marker-specific output rule, ignore + } +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/types.go b/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/types.go new file mode 100644 index 0000000000..be11104324 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/genall/help/types.go @@ -0,0 +1,215 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package help + +import ( + "sort" + "strings" + + "sigs.k8s.io/controller-tools/pkg/markers" +) + +// DetailedHelp contains both a summary and further details. +type DetailedHelp struct { + // Summary contains a one-line description. + Summary string `json:"summary"` + // Details contains further information. + Details string `json:"details,omitempty"` +} + +// Argument is the type data for a marker argument. +type Argument struct { + // Type is the data type of the argument (string, bool, int, slice, any, raw, invalid) + Type string `json:"type"` + // Optional marks this argument as optional. + Optional bool `json:"optional"` + // ItemType contains the type of the slice item, if this is a slice + ItemType *Argument `json:"itemType,omitempty"` +} + +func (a Argument) typeString(out *strings.Builder) { + if a.Type == "slice" { + out.WriteString("[]") + a.ItemType.typeString(out) + return + } + + out.WriteString(a.Type) +} + +// TypeString returns a string roughly equivalent +// (but not identical) to the underlying Go type that +// this argument would parse to. It's mainly useful +// for user-friendly formatting of this argument (e.g. +// help strings). +func (a Argument) TypeString() string { + out := &strings.Builder{} + a.typeString(out) + return out.String() +} + +// FieldHelp contains information required to print documentation for a marker field. +type FieldHelp struct { + // Name is the field name. + Name string `json:"name"` + // Argument is the type of the field. + Argument `json:",inline"` + + // DetailedHelp contains the textual help for the field. + DetailedHelp `json:",inline"` +} + +// MarkerDoc contains information required to print documentation for a marker. +type MarkerDoc struct { + // definition + + // Name is the name of the marker. + Name string `json:"name"` + // Target is the target (field, package, type) of the marker. + Target string `json:"target"` + + // help + + // DetailedHelp is the textual help for the marker. + DetailedHelp `json:",inline"` + // Category is the general "category" that this marker belongs to. + Category string `json:"category"` + // DeprecatedInFavorOf marks that this marker shouldn't be used when + // non-nil. If also non-empty, another marker should be used instead. + DeprecatedInFavorOf *string `json:"deprecatedInFavorOf,omitempty"` + // Fields is the type and help data for each field of this marker. + Fields []FieldHelp `json:"fields,omitempty"` +} + +// Empty checks if this marker has any arguments, returning true if not. +func (m MarkerDoc) Empty() bool { + return len(m.Fields) == 0 +} + +// AnonymousField chekcs if this is an single-valued marker +// (as opposed to having named fields). +func (m MarkerDoc) AnonymousField() bool { + return len(m.Fields) == 1 && m.Fields[0].Name == "" +} + +// ForArgument returns the equivalent documentation for a marker argument. +func ForArgument(argRaw markers.Argument) Argument { + res := Argument{ + Optional: argRaw.Optional, + } + + if argRaw.ItemType != nil { + itemType := ForArgument(*argRaw.ItemType) + res.ItemType = &itemType + } + + switch argRaw.Type { + case markers.IntType: + res.Type = "int" + case markers.StringType: + res.Type = "string" + case markers.BoolType: + res.Type = "bool" + case markers.AnyType: + res.Type = "any" + case markers.SliceType: + res.Type = "slice" + case markers.RawType: + res.Type = "raw" + case markers.InvalidType: + res.Type = "invalid" + } + + return res +} + +// ForDefinition returns the equivalent marker documentation for a given marker definition and spearate help. +func ForDefinition(defn *markers.Definition, maybeHelp *markers.DefinitionHelp) MarkerDoc { + var help markers.DefinitionHelp + if maybeHelp != nil { + help = *maybeHelp + } + + res := MarkerDoc{ + Name: defn.Name, + Category: help.Category, + DeprecatedInFavorOf: help.DeprecatedInFavorOf, + Target: defn.Target.String(), + DetailedHelp: DetailedHelp{Summary: help.Summary, Details: help.Details}, + } + + helpByField := help.FieldsHelp(defn) + + // TODO(directxman12): deterministic ordering + for fieldName, fieldHelpRaw := range helpByField { + fieldInfo := defn.Fields[fieldName] + fieldHelp := FieldHelp{ + Name: fieldName, + DetailedHelp: DetailedHelp{Summary: fieldHelpRaw.Summary, Details: fieldHelpRaw.Details}, + Argument: ForArgument(fieldInfo), + } + + res.Fields = append(res.Fields, fieldHelp) + } + + sort.Slice(res.Fields, func(i, j int) bool { return res.Fields[i].Name < res.Fields[j].Name }) + + return res +} + +// CategoryDoc contains help information for all markers in a Category. +type CategoryDoc struct { + Category string `json:"category"` + Markers []MarkerDoc `json:"markers"` +} + +// ByCategory returns the marker help for markers in the given +// registry, grouped and sorted according to the given method. +func ByCategory(reg *markers.Registry, sorter SortGroup) []CategoryDoc { + groupedMarkers := make(map[string][]*markers.Definition) + + for _, marker := range reg.AllDefinitions() { + group := sorter.Group(marker, reg.HelpFor(marker)) + groupedMarkers[group] = append(groupedMarkers[group], marker) + } + allGroups := make([]string, 0, len(groupedMarkers)) + for groupName := range groupedMarkers { + allGroups = append(allGroups, groupName) + } + + sort.Strings(allGroups) + + res := make([]CategoryDoc, len(allGroups)) + for i, groupName := range allGroups { + markers := groupedMarkers[groupName] + sort.Slice(markers, func(i, j int) bool { + return sorter.Less(markers[i], markers[j]) + }) + + markerDocs := make([]MarkerDoc, len(markers)) + for i, marker := range markers { + markerDocs[i] = ForDefinition(marker, reg.HelpFor(marker)) + } + + res[i] = CategoryDoc{ + Category: groupName, + Markers: markerDocs, + } + } + + return res +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/genall/input.go b/vendor/sigs.k8s.io/controller-tools/pkg/genall/input.go new file mode 100644 index 0000000000..46e191c0c2 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/genall/input.go @@ -0,0 +1,37 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package genall + +import ( + "io" + "os" +) + +// InputRule describes how to load non-code boilerplate artifacts. +// It's not used for loading code. +type InputRule interface { + // OpenForRead opens the given non-code artifact for reading. + OpenForRead(path string) (io.ReadCloser, error) +} +type inputFromFileSystem struct{} + +func (inputFromFileSystem) OpenForRead(path string) (io.ReadCloser, error) { + return os.Open(path) +} + +// InputFromFileSystem reads from the filesystem as normal. +var InputFromFileSystem = inputFromFileSystem{} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/genall/options.go b/vendor/sigs.k8s.io/controller-tools/pkg/genall/options.go new file mode 100644 index 0000000000..836b1617e6 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/genall/options.go @@ -0,0 +1,194 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package genall + +import ( + "fmt" + "strings" + + "sigs.k8s.io/controller-tools/pkg/markers" +) + +var ( + InputPathsMarker = markers.Must(markers.MakeDefinition("paths", markers.DescribesPackage, InputPaths(nil))) +) + +// +controllertools:marker:generateHelp:category="" + +// InputPaths represents paths and go-style path patterns to use as package roots. +// +// Multiple paths can be specified using "{path1, path2, path3}". +type InputPaths []string + +// RegisterOptionsMarkers registers "mandatory" options markers for FromOptions into the given registry. +// At this point, that's just InputPaths. +func RegisterOptionsMarkers(into *markers.Registry) error { + if err := into.Register(InputPathsMarker); err != nil { + return err + } + // NB(directxman12): we make this optional so we don't have a bootstrap problem with helpgen + if helpGiver, hasHelp := ((interface{})(InputPaths(nil))).(HasHelp); hasHelp { + into.AddHelp(InputPathsMarker, helpGiver.Help()) + } + return nil +} + +// RegistryFromOptions produces just the marker registry that would be used by FromOptions, without +// attempting to produce a full Runtime. This can be useful if you want to display help without +// trying to load roots. +func RegistryFromOptions(optionsRegistry *markers.Registry, options []string) (*markers.Registry, error) { + protoRt, err := protoFromOptions(optionsRegistry, options) + if err != nil { + return nil, err + } + reg := &markers.Registry{} + if err := protoRt.Generators.RegisterMarkers(reg); err != nil { + return nil, err + } + return reg, nil +} + +// FromOptions parses the options from markers stored in the given registry out into a runtime. +// The markers in the registry must be either +// +// a) Generators +// b) OutputRules +// c) InputPaths +// +// The paths specified in InputPaths are loaded as package roots, and the combined with +// the generators and the specified output rules to produce a runtime that can be run or +// further modified. Not default generators are used if none are specified -- you can check +// the output and rerun for that. +func FromOptions(optionsRegistry *markers.Registry, options []string) (*Runtime, error) { + + protoRt, err := protoFromOptions(optionsRegistry, options) + if err != nil { + return nil, err + } + + // make the runtime + genRuntime, err := protoRt.Generators.ForRoots(protoRt.Paths...) + if err != nil { + return nil, err + } + + // attempt to figure out what the user wants without a lot of verbose specificity: + // if the user specifies a default rule, assume that they probably want to fall back + // to that. Otherwise, assume that they just wanted to customize one option from the + // set, and leave the rest in the standard configuration. + if protoRt.OutputRules.Default != nil { + genRuntime.OutputRules = protoRt.OutputRules + return genRuntime, nil + } + + outRules := DirectoryPerGenerator("config", protoRt.GeneratorsByName) + for gen, rule := range protoRt.OutputRules.ByGenerator { + outRules.ByGenerator[gen] = rule + } + + genRuntime.OutputRules = outRules + return genRuntime, nil +} + +// protoFromOptions returns a proto-Runtime from the given options registry and +// options set. This can then be used to construct an actual Runtime. See the +// FromOptions function for more details about how the options work. +func protoFromOptions(optionsRegistry *markers.Registry, options []string) (protoRuntime, error) { + var gens Generators + rules := OutputRules{ + ByGenerator: make(map[*Generator]OutputRule), + } + var paths []string + + // collect the generators first, so that we can key the output on the actual + // generator, which matters if there's settings in the gen object and it's not a pointer. + outputByGen := make(map[string]OutputRule) + gensByName := make(map[string]*Generator) + + for _, rawOpt := range options { + if rawOpt[0] != '+' { + rawOpt = "+" + rawOpt // add a `+` to make it acceptable for usage with the registry + } + defn := optionsRegistry.Lookup(rawOpt, markers.DescribesPackage) + if defn == nil { + return protoRuntime{}, fmt.Errorf("unknown option %q", rawOpt[1:]) + } + + val, err := defn.Parse(rawOpt) + if err != nil { + return protoRuntime{}, fmt.Errorf("unable to parse option %q: %w", rawOpt[1:], err) + } + + switch val := val.(type) { + case Generator: + gens = append(gens, &val) + gensByName[defn.Name] = &val + case OutputRule: + _, genName := splitOutputRuleOption(defn.Name) + if genName == "" { + // it's a default rule + rules.Default = val + continue + } + + outputByGen[genName] = val + continue + case InputPaths: + paths = append(paths, val...) + default: + return protoRuntime{}, fmt.Errorf("unknown option marker %q", defn.Name) + } + } + + // actually associate the rules now that we know the generators + for genName, outputRule := range outputByGen { + gen, knownGen := gensByName[genName] + if !knownGen { + return protoRuntime{}, fmt.Errorf("non-invoked generator %q", genName) + } + + rules.ByGenerator[gen] = outputRule + } + + return protoRuntime{ + Paths: paths, + Generators: Generators(gens), + OutputRules: rules, + GeneratorsByName: gensByName, + }, nil +} + +// protoRuntime represents the raw pieces needed to compose a runtime, as +// parsed from some options. +type protoRuntime struct { + Paths []string + Generators Generators + OutputRules OutputRules + GeneratorsByName map[string]*Generator +} + +// splitOutputRuleOption splits a marker name of "output:rule:gen" or "output:rule" +// into its compontent rule and generator name. +func splitOutputRuleOption(name string) (ruleName string, genName string) { + parts := strings.SplitN(name, ":", 3) + if len(parts) == 3 { + // output:: + return parts[2], parts[1] + } + // output: + return parts[1], "" +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/genall/output.go b/vendor/sigs.k8s.io/controller-tools/pkg/genall/output.go new file mode 100644 index 0000000000..5dc3fe19cd --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/genall/output.go @@ -0,0 +1,160 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package genall + +import ( + "fmt" + "io" + "io/ioutil" + "os" + "path/filepath" + + "sigs.k8s.io/controller-tools/pkg/loader" +) + +// nopCloser is a WriteCloser whose Close +// is a no-op. +type nopCloser struct { + io.Writer +} + +func (n nopCloser) Close() error { + return nil +} + +// DirectoryPerGenerator produces output rules mapping output to a different subdirectory +// of the given base directory for each generator (with each subdirectory specified as +// the key in the input map). +func DirectoryPerGenerator(base string, generators map[string]*Generator) OutputRules { + rules := OutputRules{ + Default: OutputArtifacts{Config: OutputToDirectory(base)}, + ByGenerator: make(map[*Generator]OutputRule, len(generators)), + } + + for name, gen := range generators { + rules.ByGenerator[gen] = OutputArtifacts{ + Config: OutputToDirectory(filepath.Join(base, name)), + } + } + + return rules +} + +// OutputRules defines how to output artificats on a per-generator basis. +type OutputRules struct { + // Default is the output rule used when no specific per-generator overrides match. + Default OutputRule + // ByGenerator contains specific per-generator overrides. + // NB(directxman12): this is a pointer to avoid issues if a given Generator becomes unhashable + // (interface values compare by "dereferencing" their internal pointer first, whereas pointers + // compare by the actual pointer itself). + ByGenerator map[*Generator]OutputRule +} + +// ForGenerator returns the output rule that should be used +// by the given Generator. +func (o OutputRules) ForGenerator(gen *Generator) OutputRule { + if forGen, specific := o.ByGenerator[gen]; specific { + return forGen + } + return o.Default +} + +// OutputRule defines how to output artifacts from a generator. +type OutputRule interface { + // Open opens the given artifact path for writing. If a package is passed, + // the artifact is considered to be used as part of the package (e.g. + // generated code), while a nil package indicates that the artifact is + // config (or something else not involved in Go compilation). + Open(pkg *loader.Package, path string) (io.WriteCloser, error) +} + +// OutputToNothing skips outputting anything. +var OutputToNothing = outputToNothing{} + +// +controllertools:marker:generateHelp:category="" + +// outputToNothing skips outputting anything. +type outputToNothing struct{} + +func (o outputToNothing) Open(_ *loader.Package, _ string) (io.WriteCloser, error) { + return nopCloser{ioutil.Discard}, nil +} + +// +controllertools:marker:generateHelp:category="" + +// OutputToDirectory outputs each artifact to the given directory, regardless +// of if it's package-associated or not. +type OutputToDirectory string + +func (o OutputToDirectory) Open(_ *loader.Package, itemPath string) (io.WriteCloser, error) { + // ensure the directory exists + if err := os.MkdirAll(filepath.Dir(filepath.Join(string(o), itemPath)), os.ModePerm); err != nil { + return nil, err + } + path := filepath.Join(string(o), itemPath) + return os.Create(path) +} + +// OutputToStdout outputs everything to standard-out, with no separation. +// +// Generally useful for single-artifact outputs. +var OutputToStdout = outputToStdout{} + +// +controllertools:marker:generateHelp:category="" + +// outputToStdout outputs everything to standard-out, with no separation. +// +// Generally useful for single-artifact outputs. +type outputToStdout struct{} + +func (o outputToStdout) Open(_ *loader.Package, itemPath string) (io.WriteCloser, error) { + return nopCloser{os.Stdout}, nil +} + +// +controllertools:marker:generateHelp:category="" + +// OutputArtifacts outputs artifacts to different locations, depending on +// whether they're package-associated or not. +// +// Non-package associated artifacts +// are output to the Config directory, while package-associated ones are output +// to their package's source files' directory, unless an alternate path is +// specified in Code. +type OutputArtifacts struct { + // Config points to the directory to which to write configuration. + Config OutputToDirectory + // Code overrides the directory in which to write new code (defaults to where the existing code lives). + Code OutputToDirectory `marker:",optional"` +} + +func (o OutputArtifacts) Open(pkg *loader.Package, itemPath string) (io.WriteCloser, error) { + if pkg == nil { + return o.Config.Open(pkg, itemPath) + } + + if o.Code != "" { + return o.Code.Open(pkg, itemPath) + } + + if len(pkg.CompiledGoFiles) == 0 { + return nil, fmt.Errorf("cannot output to a package with no path on disk") + } + outDir := filepath.Dir(pkg.CompiledGoFiles[0]) + outPath := filepath.Join(outDir, itemPath) + return os.Create(outPath) +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/genall/zz_generated.markerhelp.go b/vendor/sigs.k8s.io/controller-tools/pkg/genall/zz_generated.markerhelp.go new file mode 100644 index 0000000000..6428f0ce28 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/genall/zz_generated.markerhelp.go @@ -0,0 +1,90 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by helpgen. DO NOT EDIT. + +package genall + +import ( + "sigs.k8s.io/controller-tools/pkg/markers" +) + +func (InputPaths) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "", + DetailedHelp: markers.DetailedHelp{ + Summary: "represents paths and go-style path patterns to use as package roots. ", + Details: "Multiple paths can be specified using \"{path1, path2, path3}\".", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (OutputArtifacts) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "", + DetailedHelp: markers.DetailedHelp{ + Summary: "outputs artifacts to different locations, depending on whether they're package-associated or not. ", + Details: "Non-package associated artifacts are output to the Config directory, while package-associated ones are output to their package's source files' directory, unless an alternate path is specified in Code.", + }, + FieldHelp: map[string]markers.DetailedHelp{ + "Config": { + Summary: "points to the directory to which to write configuration.", + Details: "", + }, + "Code": { + Summary: "overrides the directory in which to write new code (defaults to where the existing code lives).", + Details: "", + }, + }, + } +} + +func (OutputToDirectory) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "", + DetailedHelp: markers.DetailedHelp{ + Summary: "outputs each artifact to the given directory, regardless of if it's package-associated or not.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (outputToNothing) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "", + DetailedHelp: markers.DetailedHelp{ + Summary: "skips outputting anything.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} + +func (outputToStdout) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "", + DetailedHelp: markers.DetailedHelp{ + Summary: "outputs everything to standard-out, with no separation. ", + Details: "Generally useful for single-artifact outputs.", + }, + FieldHelp: map[string]markers.DetailedHelp{}, + } +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/loader/doc.go b/vendor/sigs.k8s.io/controller-tools/pkg/loader/doc.go new file mode 100644 index 0000000000..6853c062f4 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/loader/doc.go @@ -0,0 +1,60 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package loader defines helpers for loading packages from sources. It wraps +// go/packages, allow incremental loading of source code and manual control +// over which packages get type-checked. This allows for faster loading in +// cases where you don't actually care about certain imports. +// +// Because it uses go/packages, it's modules-aware, and works in both modules- +// and non-modules environments. +// +// # Loading +// +// The main entrypoint for loading is LoadRoots, which traverse the package +// graph starting at the given patterns (file, package, path, or ...-wildcard, +// as one might pass to go list). Packages beyond the roots can be accessed +// via the Imports() method. Packages are initially loaded with export data +// paths, filenames, and imports. +// +// Packages are suitable for comparison, as each unique package only ever has +// one *Package object returned. +// +// # Syntax and TypeChecking +// +// ASTs and type-checking information can be loaded with NeedSyntax and +// NeedTypesInfo, respectively. Both are idempotent -- repeated calls will +// simply re-use the cached contents. Note that NeedTypesInfo will *only* type +// check the current package -- if you want to type-check imports as well, +// you'll need to type-check them first. +// +// # Reference Pruning and Recursive Checking +// +// In order to type-check using only the packages you care about, you can use a +// TypeChecker. TypeChecker will visit each top-level type declaration, +// collect (optionally filtered) references, and type-check references +// packages. +// +// # Errors +// +// Errors can be added to each package. Use ErrFromNode to create an error +// from an AST node. Errors can then be printed (complete with file and +// position information) using PrintErrors, optionally filtered by error type. +// It's generally a good idea to filter out TypeErrors when doing incomplete +// type-checking with TypeChecker. You can use MaybeErrList to return multiple +// errors if you need to return an error instead of adding it to a package. +// AddError will later unroll it into individual errors. +package loader diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/loader/errors.go b/vendor/sigs.k8s.io/controller-tools/pkg/loader/errors.go new file mode 100644 index 0000000000..5a675798e2 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/loader/errors.go @@ -0,0 +1,67 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package loader + +import ( + "fmt" + "go/token" +) + +// PositionedError represents some error with an associated position. +// The position is tied to some external token.FileSet. +type PositionedError struct { + Pos token.Pos + error +} + +// Node is the intersection of go/ast.Node and go/types.Var. +type Node interface { + Pos() token.Pos // position of first character belonging to the node +} + +// ErrFromNode returns the given error, with additional information +// attaching it to the given AST node. It will automatically map +// over error lists. +func ErrFromNode(err error, node Node) error { + if asList, isList := err.(ErrList); isList { + resList := make(ErrList, len(asList)) + for i, baseErr := range asList { + resList[i] = ErrFromNode(baseErr, node) + } + return resList + } + return PositionedError{ + Pos: node.Pos(), + error: err, + } +} + +// MaybeErrList constructs an ErrList if the given list of +// errors has any errors, otherwise returning nil. +func MaybeErrList(errs []error) error { + if len(errs) == 0 { + return nil + } + return ErrList(errs) +} + +// ErrList is a list of errors aggregated together into a single error. +type ErrList []error + +func (l ErrList) Error() string { + return fmt.Sprintf("%v", []error(l)) +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/loader/loader.go b/vendor/sigs.k8s.io/controller-tools/pkg/loader/loader.go new file mode 100644 index 0000000000..2efa94c7d9 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/loader/loader.go @@ -0,0 +1,629 @@ +/* +Copyright 2019-2022 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package loader + +import ( + "fmt" + "go/ast" + "go/parser" + "go/scanner" + "go/token" + "go/types" + "io/ioutil" + "os" + "path/filepath" + "regexp" + "sync" + + "golang.org/x/tools/go/packages" + "k8s.io/apimachinery/pkg/util/sets" +) + +// Much of this is strongly inspired by the contents of go/packages, +// except that it allows for lazy loading of syntax and type-checking +// information to speed up cases where full traversal isn't needed. + +// PrintErrors print errors associated with all packages +// in the given package graph, starting at the given root +// packages and traversing through all imports. It will skip +// any errors of the kinds specified in filterKinds. It will +// return true if any errors were printed. +func PrintErrors(pkgs []*Package, filterKinds ...packages.ErrorKind) bool { + pkgsRaw := make([]*packages.Package, len(pkgs)) + for i, pkg := range pkgs { + pkgsRaw[i] = pkg.Package + } + toSkip := make(map[packages.ErrorKind]struct{}) + for _, errKind := range filterKinds { + toSkip[errKind] = struct{}{} + } + hadErrors := false + packages.Visit(pkgsRaw, nil, func(pkgRaw *packages.Package) { + for _, err := range pkgRaw.Errors { + if _, skip := toSkip[err.Kind]; skip { + continue + } + hadErrors = true + fmt.Fprintln(os.Stderr, err) + } + }) + return hadErrors +} + +// Package is a single, unique Go package that can be +// lazily parsed and type-checked. Packages should not +// be constructed directly -- instead, use LoadRoots. +// For a given call to LoadRoots, only a single instance +// of each package exists, and thus they may be used as keys +// and for comparison. +type Package struct { + *packages.Package + + imports map[string]*Package + + loader *loader + sync.Mutex +} + +// Imports returns the imports for the given package, indexed by +// package path (*not* name in any particular file). +func (p *Package) Imports() map[string]*Package { + if p.imports == nil { + p.imports = p.loader.packagesFor(p.Package.Imports) + } + + return p.imports +} + +// NeedTypesInfo indicates that type-checking information is needed for this package. +// Actual type-checking information can be accessed via the Types and TypesInfo fields. +func (p *Package) NeedTypesInfo() { + if p.TypesInfo != nil { + return + } + p.NeedSyntax() + p.loader.typeCheck(p) +} + +// NeedSyntax indicates that a parsed AST is needed for this package. +// Actual ASTs can be accessed via the Syntax field. +func (p *Package) NeedSyntax() { + if p.Syntax != nil { + return + } + out := make([]*ast.File, len(p.CompiledGoFiles)) + var wg sync.WaitGroup + wg.Add(len(p.CompiledGoFiles)) + for i, filename := range p.CompiledGoFiles { + go func(i int, filename string) { + defer wg.Done() + src, err := ioutil.ReadFile(filename) + if err != nil { + p.AddError(err) + return + } + out[i], err = p.loader.parseFile(filename, src) + if err != nil { + p.AddError(err) + return + } + }(i, filename) + } + wg.Wait() + for _, file := range out { + if file == nil { + return + } + } + p.Syntax = out +} + +// AddError adds an error to the errors associated with the given package. +func (p *Package) AddError(err error) { + switch typedErr := err.(type) { + case *os.PathError: + // file-reading errors + p.Errors = append(p.Errors, packages.Error{ + Pos: typedErr.Path + ":1", + Msg: typedErr.Err.Error(), + Kind: packages.ParseError, + }) + case scanner.ErrorList: + // parsing/scanning errors + for _, subErr := range typedErr { + p.Errors = append(p.Errors, packages.Error{ + Pos: subErr.Pos.String(), + Msg: subErr.Msg, + Kind: packages.ParseError, + }) + } + case types.Error: + // type-checking errors + p.Errors = append(p.Errors, packages.Error{ + Pos: typedErr.Fset.Position(typedErr.Pos).String(), + Msg: typedErr.Msg, + Kind: packages.TypeError, + }) + case ErrList: + for _, subErr := range typedErr { + p.AddError(subErr) + } + case PositionedError: + p.Errors = append(p.Errors, packages.Error{ + Pos: p.loader.cfg.Fset.Position(typedErr.Pos).String(), + Msg: typedErr.Error(), + Kind: packages.UnknownError, + }) + default: + // should only happen for external errors, like ref checking + p.Errors = append(p.Errors, packages.Error{ + Pos: p.ID + ":-", + Msg: err.Error(), + Kind: packages.UnknownError, + }) + } +} + +// loader loads packages and their imports. Loaded packages will have +// type size, imports, and exports file information populated. Additional +// information, like ASTs and type-checking information, can be accessed +// via methods on individual packages. +type loader struct { + // Roots are the loaded "root" packages in the package graph loaded via + // LoadRoots. + Roots []*Package + + // cfg contains the package loading config (initialized on demand) + cfg *packages.Config + // packages contains the cache of Packages indexed by the underlying + // package.Package, so that we don't ever produce two Packages with + // the same underlying packages.Package. + packages map[*packages.Package]*Package + packagesMu sync.Mutex +} + +// packageFor returns a wrapped Package for the given packages.Package, +// ensuring that there's a one-to-one mapping between the two. +// It's *not* threadsafe -- use packagesFor for that. +func (l *loader) packageFor(pkgRaw *packages.Package) *Package { + if l.packages[pkgRaw] == nil { + l.packages[pkgRaw] = &Package{ + Package: pkgRaw, + loader: l, + } + } + return l.packages[pkgRaw] +} + +// packagesFor returns a map of Package objects for each packages.Package in the input +// map, ensuring that there's a one-to-one mapping between package.Package and Package +// (as per packageFor). +func (l *loader) packagesFor(pkgsRaw map[string]*packages.Package) map[string]*Package { + l.packagesMu.Lock() + defer l.packagesMu.Unlock() + + out := make(map[string]*Package, len(pkgsRaw)) + for name, rawPkg := range pkgsRaw { + out[name] = l.packageFor(rawPkg) + } + return out +} + +// typeCheck type-checks the given package. +func (l *loader) typeCheck(pkg *Package) { + // don't conflict with typeCheckFromExportData + + pkg.TypesInfo = &types.Info{ + Types: make(map[ast.Expr]types.TypeAndValue), + Defs: make(map[*ast.Ident]types.Object), + Uses: make(map[*ast.Ident]types.Object), + Implicits: make(map[ast.Node]types.Object), + Scopes: make(map[ast.Node]*types.Scope), + Selections: make(map[*ast.SelectorExpr]*types.Selection), + } + + pkg.Fset = l.cfg.Fset + pkg.Types = types.NewPackage(pkg.PkgPath, pkg.Name) + + importer := importerFunc(func(path string) (*types.Package, error) { + if path == "unsafe" { + return types.Unsafe, nil + } + + // The imports map is keyed by import path. + importedPkg := pkg.Imports()[path] + if importedPkg == nil { + return nil, fmt.Errorf("package %q possibly creates an import loop", path) + } + + // it's possible to have a call to check in parallel to a call to this + // if one package in the package graph gets its dependency filtered out, + // but another doesn't (so one wants a "placeholder" package here, and another + // wants the full check). + // + // Thus, we need to lock here (at least for the time being) to avoid + // races between the above write to `pkg.Types` and this checking of + // importedPkg.Types. + importedPkg.Lock() + defer importedPkg.Unlock() + + if importedPkg.Types != nil && importedPkg.Types.Complete() { + return importedPkg.Types, nil + } + + // if we haven't already loaded typecheck data, we don't care about this package's types + return types.NewPackage(importedPkg.PkgPath, importedPkg.Name), nil + }) + + var errs []error + + // type-check + checkConfig := &types.Config{ + Importer: importer, + + IgnoreFuncBodies: true, // we only need decl-level info + + Error: func(err error) { + errs = append(errs, err) + }, + + Sizes: pkg.TypesSizes, + } + if err := types.NewChecker(checkConfig, l.cfg.Fset, pkg.Types, pkg.TypesInfo).Files(pkg.Syntax); err != nil { + errs = append(errs, err) + } + + // make sure that if a given sub-import is ill-typed, we mark this package as ill-typed as well. + illTyped := len(errs) > 0 + if !illTyped { + for _, importedPkg := range pkg.Imports() { + if importedPkg.IllTyped { + illTyped = true + break + } + } + } + pkg.IllTyped = illTyped + + // publish errors to the package error list. + for _, err := range errs { + pkg.AddError(err) + } +} + +// parseFile parses the given file, including comments. +func (l *loader) parseFile(filename string, src []byte) (*ast.File, error) { + // skip function bodies + file, err := parser.ParseFile(l.cfg.Fset, filename, src, parser.AllErrors|parser.ParseComments) + if err != nil { + return nil, err + } + + return file, nil +} + +// LoadRoots loads the given "root" packages by path, transitively loading +// and all imports as well. +// +// Loaded packages will have type size, imports, and exports file information +// populated. Additional information, like ASTs and type-checking information, +// can be accessed via methods on individual packages. +func LoadRoots(roots ...string) ([]*Package, error) { + return LoadRootsWithConfig(&packages.Config{}, roots...) +} + +// LoadRootsWithConfig functions like LoadRoots, except that it allows passing +// a custom loading config. The config will be modified to suit the needs of +// the loader. +// +// This is generally only useful for use in testing when you need to modify +// loading settings to load from a fake location. +// +// This function will traverse Go module boundaries for roots that are file- +// system paths and end with "...". Please note this feature currently only +// supports roots that are filesystem paths. For more information, please +// refer to the high-level outline of this function's logic: +// +// 1. If no roots are provided then load the working directory and return +// early. +// +// 2. Otherwise sort the provided roots into two, distinct buckets: +// +// a. package/module names +// b. filesystem paths +// +// A filesystem path is distinguished from a Go package/module name by +// the same rules as followed by the "go" command. At a high level, a +// root is a filesystem path IFF it meets ANY of the following criteria: +// +// * is absolute +// * begins with . +// * begins with .. +// +// For more information please refer to the output of the command +// "go help packages". +// +// 3. Load the package/module roots as a single call to packages.Load. If +// there are no filesystem path roots then return early. +// +// 4. For filesystem path roots ending with "...", check to see if its +// descendants include any nested, Go modules. If so, add the directory +// that contains the nested Go module to the filesystem path roots. +// +// 5. Load the filesystem path roots and return the load packages for the +// package/module roots AND the filesystem path roots. +func LoadRootsWithConfig(cfg *packages.Config, roots ...string) ([]*Package, error) { + l := &loader{ + cfg: cfg, + packages: make(map[*packages.Package]*Package), + } + l.cfg.Mode |= packages.LoadImports | packages.NeedTypesSizes + if l.cfg.Fset == nil { + l.cfg.Fset = token.NewFileSet() + } + // put our build flags first so that callers can override them + l.cfg.BuildFlags = append([]string{"-tags", "ignore_autogenerated"}, l.cfg.BuildFlags...) + + // Visit the import graphs of the loaded, root packages. If an imported + // package refers to another loaded, root package, then replace the + // instance of the imported package with a reference to the loaded, root + // package. This is required to make kubebuilder markers work correctly + // when multiple root paths are loaded and types from one path reference + // types from another root path. + defer func() { + for i := range l.Roots { + visitImports(l.Roots, l.Roots[i], nil) + } + }() + + // uniquePkgIDs is used to keep track of the discovered packages to be nice + // and try and prevent packages from showing up twice when nested module + // support is enabled. there is not harm that comes from this per se, but + // it makes testing easier when a known number of modules can be asserted + uniquePkgIDs := sets.String{} + + // loadPackages returns the Go packages for the provided roots + // + // if validatePkgFn is nil, a package will be returned in the slice, + // otherwise the package is only returned if the result of + // validatePkgFn(pkg.ID) is truthy + loadPackages := func(roots ...string) ([]*Package, error) { + rawPkgs, err := packages.Load(l.cfg, roots...) + if err != nil { + loadRoot := l.cfg.Dir + if l.cfg.Dir == "" { + loadRoot, _ = os.Getwd() + } + return nil, fmt.Errorf("load packages in root %q: %w", loadRoot, err) + } + var pkgs []*Package + for _, rp := range rawPkgs { + p := l.packageFor(rp) + if !uniquePkgIDs.Has(p.ID) { + pkgs = append(pkgs, p) + uniquePkgIDs.Insert(p.ID) + } + } + return pkgs, nil + } + + // if no roots were provided then load the current package and return early + if len(roots) == 0 { + pkgs, err := loadPackages() + if err != nil { + return nil, err + } + l.Roots = append(l.Roots, pkgs...) + return l.Roots, nil + } + + // pkgRoots is a slice of roots that are package/modules and fspRoots + // is a slice of roots that are local filesystem paths. + // + // please refer to this function's godoc comments for more information on + // how these two types of roots are distinguished from one another + var ( + pkgRoots []string + fspRoots []string + fspRootRx = regexp.MustCompile(`^\.{1,2}`) + ) + for _, r := range roots { + if filepath.IsAbs(r) || fspRootRx.MatchString(r) { + fspRoots = append(fspRoots, r) + } else { + pkgRoots = append(pkgRoots, r) + } + } + + // handle the package roots by sending them into the packages.Load function + // all at once. this is more efficient, but cannot be used for the file- + // system path roots due to them needing a custom, calculated value for the + // cfg.Dir field + if len(pkgRoots) > 0 { + pkgs, err := loadPackages(pkgRoots...) + if err != nil { + return nil, err + } + l.Roots = append(l.Roots, pkgs...) + } + + // if there are no filesystem path roots then go ahead and return early + if len(fspRoots) == 0 { + return l.Roots, nil + } + + // + // at this point we are handling filesystem path roots + // + + // ensure the cfg.Dir field is reset to its original value upon + // returning from this function. it should honestly be fine if it is + // not given most callers will not send in the cfg parameter directly, + // as it's largely for testing, but still, let's be good stewards. + defer func(d string) { + cfg.Dir = d + }(cfg.Dir) + + // store the value of cfg.Dir so we can use it later if it is non-empty. + // we need to store it now as the value of cfg.Dir will be updated by + // a loop below + cfgDir := cfg.Dir + + // addNestedGoModulesToRoots is given to filepath.WalkDir and adds the + // directory part of p to the list of filesystem path roots IFF p is the + // path to a file named "go.mod" + addNestedGoModulesToRoots := func( + p string, + d os.DirEntry, + e error) error { + + if e != nil { + return e + } + if !d.IsDir() && filepath.Base(p) == "go.mod" { + fspRoots = append(fspRoots, filepath.Join(filepath.Dir(p), "...")) + } + return nil + } + + // in the first pass over the filesystem path roots we: + // + // 1. make the root into an absolute path + // + // 2. check to see if a root uses the nested path syntax, ex. ... + // + // 3. if so, walk the root's descendants, searching for any nested Go + // modules + // + // 4. if found then the directory containing the Go module is added to + // the list of the filesystem path roots + for i := range fspRoots { + r := fspRoots[i] + + // clean up the root + r = filepath.Clean(r) + + // get the absolute path of the root + if !filepath.IsAbs(r) { + + // if the initial value of cfg.Dir was non-empty then use it when + // building the absolute path to this root. otherwise use the + // filepath.Abs function to get the absolute path of the root based + // on the working directory + if cfgDir != "" { + r = filepath.Join(cfgDir, r) + } else { + ar, err := filepath.Abs(r) + if err != nil { + return nil, err + } + r = ar + } + } + + // update the root to be an absolute path + fspRoots[i] = r + + b, d := filepath.Base(r), filepath.Dir(r) + + // if the base element is "..." then it means nested traversal is + // activated. this can be passed directly to the loader. however, if + // specified we also want to traverse the path manually to determine if + // there are any nested Go modules we want to add to the list of file- + // system path roots to process + if b == "..." { + if err := filepath.WalkDir( + d, + addNestedGoModulesToRoots); err != nil { + + return nil, err + } + } + } + + // in the second pass over the filesystem path roots we: + // + // 1. determine the directory from which to execute the loader + // + // 2. update the loader config's Dir property to be the directory from + // step one + // + // 3. determine whether the root passed to the loader should be "./." + // or "./..." + // + // 4. execute the loader with the value from step three + for _, r := range fspRoots { + b, d := filepath.Base(r), filepath.Dir(r) + + // we want the base part of the path to be either "..." or ".", except + // Go's filepath utilities clean paths during manipulation, removing the + // ".". thus, if not "...", let's update the path components so that: + // + // d = r + // b = "." + if b != "..." { + d = r + b = "." + } + + // update the loader configuration's Dir field to the directory part of + // the root + l.cfg.Dir = d + + // update the root to be "./..." or "./." + // (with OS-specific filepath separator). please note filepath.Join + // would clean up the trailing "." character that we want preserved, + // hence the more manual path concatenation logic + r = fmt.Sprintf(".%s%s", string(filepath.Separator), b) + + // load the packages from the roots + pkgs, err := loadPackages(r) + if err != nil { + return nil, err + } + l.Roots = append(l.Roots, pkgs...) + } + + return l.Roots, nil +} + +// visitImports walks a dependency graph, replacing imported package +// references with those from the rootPkgs list. This ensures the +// kubebuilder marker generation is handled correctly. For more info, +// please see issue 680. +func visitImports(rootPkgs []*Package, pkg *Package, seen sets.String) { + if seen == nil { + seen = sets.String{} + } + for importedPkgID, importedPkg := range pkg.Imports() { + for i := range rootPkgs { + if importedPkgID == rootPkgs[i].ID { + pkg.imports[importedPkgID] = rootPkgs[i] + } + } + if !seen.Has(importedPkgID) { + seen.Insert(importedPkgID) + visitImports(rootPkgs, importedPkg, seen) + } + } +} + +// importFunc is an implementation of the single-method +// types.Importer interface based on a function value. +type importerFunc func(path string) (*types.Package, error) + +func (f importerFunc) Import(path string) (*types.Package, error) { return f(path) } diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/loader/paths.go b/vendor/sigs.k8s.io/controller-tools/pkg/loader/paths.go new file mode 100644 index 0000000000..3b783e1685 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/loader/paths.go @@ -0,0 +1,32 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package loader + +import ( + "strings" +) + +// NonVendorPath returns a package path that does not include anything before the +// last vendor directory. This is useful for when using vendor directories, +// and using go/types.Package.Path(), which returns the full path including vendor. +// +// If you're using this, make sure you really need it -- it's better to index by +// the actual Package object when you can. +func NonVendorPath(rawPath string) string { + parts := strings.Split(rawPath, "/vendor/") + return parts[len(parts)-1] +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/loader/refs.go b/vendor/sigs.k8s.io/controller-tools/pkg/loader/refs.go new file mode 100644 index 0000000000..37c3295f14 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/loader/refs.go @@ -0,0 +1,273 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package loader + +import ( + "fmt" + + "go/ast" + "strconv" + "sync" +) + +// NB(directxman12): most of this is done by the typechecker, +// but it's a bit slow/heavyweight for what we want -- we want +// to resolve external imports *only* if we actually need them. + +// Basically, what we do is: +// 1. Map imports to names +// 2. Find all explicit external references (`name.type`) +// 3. Find all referenced packages by merging explicit references and dot imports +// 4. Only type-check those packages +// 5. Ignore type-checking errors from the missing packages, because we won't ever +// touch unloaded types (they're probably used in ignored fields/types, variables, or functions) +// (done using PrintErrors with an ignore argument from the caller). +// 6. Notice any actual type-checking errors via invalid types + +// importsMap saves import aliases, mapping them to underlying packages. +type importsMap struct { + // dotImports maps package IDs to packages for any packages that have/ been imported as `.` + dotImports map[string]*Package + // byName maps package aliases or names to the underlying package. + byName map[string]*Package +} + +// mapImports maps imports from the names they use in the given file to the underlying package, +// using a map of package import paths to packages (generally from Package.Imports()). +func mapImports(file *ast.File, importedPkgs map[string]*Package) (*importsMap, error) { + m := &importsMap{ + dotImports: make(map[string]*Package), + byName: make(map[string]*Package), + } + for _, importSpec := range file.Imports { + path, err := strconv.Unquote(importSpec.Path.Value) + if err != nil { + return nil, ErrFromNode(err, importSpec.Path) + } + importedPkg := importedPkgs[path] + if importedPkg == nil { + return nil, ErrFromNode(fmt.Errorf("no such package located"), importSpec.Path) + } + if importSpec.Name == nil { + m.byName[importedPkg.Name] = importedPkg + continue + } + if importSpec.Name.Name == "." { + m.dotImports[importedPkg.ID] = importedPkg + continue + } + m.byName[importSpec.Name.Name] = importedPkg + } + + return m, nil +} + +// referenceSet finds references to external packages' types in the given file, +// without otherwise calling into the type-checker. When checking structs, +// it only checks fields with JSON tags. +type referenceSet struct { + file *ast.File + imports *importsMap + pkg *Package + + externalRefs map[*Package]struct{} +} + +func (r *referenceSet) init() { + if r.externalRefs == nil { + r.externalRefs = make(map[*Package]struct{}) + } +} + +// NodeFilter filters nodes, accepting them for reference collection +// when true is returned and rejecting them when false is returned. +type NodeFilter func(ast.Node) bool + +// collectReferences saves all references to external types in the given info. +func (r *referenceSet) collectReferences(rawType ast.Expr, filterNode NodeFilter) { + r.init() + col := &referenceCollector{ + refs: r, + filterNode: filterNode, + } + ast.Walk(col, rawType) +} + +// external saves an external reference to the given named package. +func (r *referenceSet) external(pkgName string) { + pkg := r.imports.byName[pkgName] + if pkg == nil { + r.pkg.AddError(fmt.Errorf("use of unimported package %q", pkgName)) + return + } + r.externalRefs[pkg] = struct{}{} +} + +// referenceCollector visits nodes in an AST, adding external references to a +// referenceSet. +type referenceCollector struct { + refs *referenceSet + filterNode NodeFilter +} + +func (c *referenceCollector) Visit(node ast.Node) ast.Visitor { + if !c.filterNode(node) { + return nil + } + switch typedNode := node.(type) { + case *ast.Ident: + // local reference or dot-import, ignore + return nil + case *ast.SelectorExpr: + switch x := typedNode.X.(type) { + case *ast.Ident: + pkgName := x.Name + c.refs.external(pkgName) + return nil + default: + return c + } + default: + return c + } +} + +// allReferencedPackages finds all directly referenced packages in the given package. +func allReferencedPackages(pkg *Package, filterNodes NodeFilter) []*Package { + pkg.NeedSyntax() + refsByFile := make(map[*ast.File]*referenceSet) + for _, file := range pkg.Syntax { + imports, err := mapImports(file, pkg.Imports()) + if err != nil { + pkg.AddError(err) + return nil + } + refs := &referenceSet{ + file: file, + imports: imports, + pkg: pkg, + } + refsByFile[file] = refs + } + + EachType(pkg, func(file *ast.File, decl *ast.GenDecl, spec *ast.TypeSpec) { + refs := refsByFile[file] + refs.collectReferences(spec.Type, filterNodes) + }) + + allPackages := make(map[*Package]struct{}) + for _, refs := range refsByFile { + for _, pkg := range refs.imports.dotImports { + allPackages[pkg] = struct{}{} + } + for ref := range refs.externalRefs { + allPackages[ref] = struct{}{} + } + } + + res := make([]*Package, 0, len(allPackages)) + for pkg := range allPackages { + res = append(res, pkg) + } + return res +} + +// TypeChecker performs type-checking on a limitted subset of packages by +// checking each package's types' externally-referenced types, and only +// type-checking those packages. +type TypeChecker struct { + // NodeFilters are used to filter the set of references that are followed + // when typechecking. If any of the filters returns true for a given node, + // its package will be added to the set of packages to check. + // + // If no filters are specified, all references are followed (this may be slow). + // + // Modifying this after the first call to check may yield strange/invalid + // results. + NodeFilters []NodeFilter + + checkedPackages map[*Package]struct{} + sync.Mutex +} + +// Check type-checks the given package and all packages referenced by types +// that pass through (have true returned by) any of the NodeFilters. +func (c *TypeChecker) Check(root *Package) { + c.init() + + // use a sub-checker with the appropriate settings + (&TypeChecker{ + NodeFilters: c.NodeFilters, + checkedPackages: c.checkedPackages, + }).check(root) +} + +func (c *TypeChecker) isNodeInteresting(node ast.Node) bool { + // no filters --> everything is important + if len(c.NodeFilters) == 0 { + return true + } + + // otherwise, passing through any one filter means this node is important + for _, filter := range c.NodeFilters { + if filter(node) { + return true + } + } + return false +} + +func (c *TypeChecker) init() { + if c.checkedPackages == nil { + c.checkedPackages = make(map[*Package]struct{}) + } +} + +// check recursively type-checks the given package, only loading packages that +// are actually referenced by our types (it's the actual implementation of Check, +// without initialization). +func (c *TypeChecker) check(root *Package) { + root.Lock() + defer root.Unlock() + + c.Lock() + _, ok := c.checkedPackages[root] + c.Unlock() + if ok { + return + } + + refedPackages := allReferencedPackages(root, c.isNodeInteresting) + + // first, resolve imports for all leaf packages... + var wg sync.WaitGroup + for _, pkg := range refedPackages { + wg.Add(1) + go func(pkg *Package) { + defer wg.Done() + c.check(pkg) + }(pkg) + } + wg.Wait() + + // ...then, we can safely type-check ourself + root.NeedTypesInfo() + + c.Lock() + defer c.Unlock() + c.checkedPackages[root] = struct{}{} +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/loader/visit.go b/vendor/sigs.k8s.io/controller-tools/pkg/loader/visit.go new file mode 100644 index 0000000000..b5646fde1d --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/loader/visit.go @@ -0,0 +1,81 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package loader + +import ( + "go/ast" + "reflect" + "strconv" +) + +// TypeCallback is a callback called for each raw AST (gendecl, typespec) combo. +type TypeCallback func(file *ast.File, decl *ast.GenDecl, spec *ast.TypeSpec) + +// EachType calls the given callback for each (gendecl, typespec) combo in the +// given package. Generally, using markers.EachType is better when working +// with marker data, and has a more convinient representation. +func EachType(pkg *Package, cb TypeCallback) { + visitor := &typeVisitor{ + callback: cb, + } + pkg.NeedSyntax() + for _, file := range pkg.Syntax { + visitor.file = file + ast.Walk(visitor, file) + } +} + +// typeVisitor visits all TypeSpecs, calling the given callback for each. +type typeVisitor struct { + callback TypeCallback + decl *ast.GenDecl + file *ast.File +} + +// Visit visits all TypeSpecs. +func (v *typeVisitor) Visit(node ast.Node) ast.Visitor { + if node == nil { + v.decl = nil + return v + } + + switch typedNode := node.(type) { + case *ast.File: + v.file = typedNode + return v + case *ast.GenDecl: + v.decl = typedNode + return v + case *ast.TypeSpec: + v.callback(v.file, v.decl, typedNode) + return nil // don't recurse + default: + return nil + } +} + +// ParseAstTag parses the given raw tag literal into a reflect.StructTag. +func ParseAstTag(tag *ast.BasicLit) reflect.StructTag { + if tag == nil { + return reflect.StructTag("") + } + tagStr, err := strconv.Unquote(tag.Value) + if err != nil { + return reflect.StructTag("") + } + return reflect.StructTag(tagStr) +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/markers/collect.go b/vendor/sigs.k8s.io/controller-tools/pkg/markers/collect.go new file mode 100644 index 0000000000..b2f8219914 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/markers/collect.go @@ -0,0 +1,422 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package markers + +import ( + "go/ast" + "go/token" + "strings" + "sync" + + "sigs.k8s.io/controller-tools/pkg/loader" +) + +// Collector collects and parses marker comments defined in the registry +// from package source code. If no registry is provided, an empty one will +// be initialized on the first call to MarkersInPackage. +type Collector struct { + *Registry + + byPackage map[string]map[ast.Node]MarkerValues + mu sync.Mutex +} + +// MarkerValues are all the values for some set of markers. +type MarkerValues map[string][]interface{} + +// Get fetches the first value that for the given marker, returning +// nil if no values are available. +func (v MarkerValues) Get(name string) interface{} { + vals := v[name] + if len(vals) == 0 { + return nil + } + return vals[0] +} + +func (c *Collector) init() { + if c.Registry == nil { + c.Registry = &Registry{} + } + if c.byPackage == nil { + c.byPackage = make(map[string]map[ast.Node]MarkerValues) + } +} + +// MarkersInPackage computes the marker values by node for the given package. Results +// are cached by package ID, so this is safe to call repeatedly from different functions. +// Each file in the package is treated as a distinct node. +// +// We consider a marker to be associated with a given AST node if either of the following are true: +// +// - it's in the Godoc for that AST node +// +// - it's in the closest non-godoc comment group above that node, +// *and* that node is a type or field node, *and* [it's either +// registered as type-level *or* it's not registered as being +// package-level] +// +// - it's not in the Godoc of a node, doesn't meet the above criteria, and +// isn't in a struct definition (in which case it's package-level) +func (c *Collector) MarkersInPackage(pkg *loader.Package) (map[ast.Node]MarkerValues, error) { + c.mu.Lock() + c.init() + if markers, exist := c.byPackage[pkg.ID]; exist { + c.mu.Unlock() + return markers, nil + } + // unlock early, it's ok if we do a bit extra work rather than locking while we're working + c.mu.Unlock() + + pkg.NeedSyntax() + nodeMarkersRaw := c.associatePkgMarkers(pkg) + markers, err := c.parseMarkersInPackage(nodeMarkersRaw) + if err != nil { + return nil, err + } + + c.mu.Lock() + defer c.mu.Unlock() + c.byPackage[pkg.ID] = markers + + return markers, nil +} + +// parseMarkersInPackage parses the given raw marker comments into output values using the registry. +func (c *Collector) parseMarkersInPackage(nodeMarkersRaw map[ast.Node][]markerComment) (map[ast.Node]MarkerValues, error) { + var errors []error + nodeMarkerValues := make(map[ast.Node]MarkerValues) + for node, markersRaw := range nodeMarkersRaw { + var target TargetType + switch node.(type) { + case *ast.File: + target = DescribesPackage + case *ast.Field: + target = DescribesField + default: + target = DescribesType + } + markerVals := make(map[string][]interface{}) + for _, markerRaw := range markersRaw { + markerText := markerRaw.Text() + def := c.Registry.Lookup(markerText, target) + if def == nil { + continue + } + val, err := def.Parse(markerText) + if err != nil { + errors = append(errors, loader.ErrFromNode(err, markerRaw)) + continue + } + markerVals[def.Name] = append(markerVals[def.Name], val) + } + nodeMarkerValues[node] = markerVals + } + + return nodeMarkerValues, loader.MaybeErrList(errors) +} + +// associatePkgMarkers associates markers with AST nodes in the given package. +func (c *Collector) associatePkgMarkers(pkg *loader.Package) map[ast.Node][]markerComment { + nodeMarkers := make(map[ast.Node][]markerComment) + for _, file := range pkg.Syntax { + fileNodeMarkers := c.associateFileMarkers(file) + for node, markers := range fileNodeMarkers { + nodeMarkers[node] = append(nodeMarkers[node], markers...) + } + } + + return nodeMarkers +} + +// associateFileMarkers associates markers with AST nodes in the given file. +func (c *Collector) associateFileMarkers(file *ast.File) map[ast.Node][]markerComment { + // grab all the raw marker comments by node + visitor := markerSubVisitor{ + collectPackageLevel: true, + markerVisitor: &markerVisitor{ + nodeMarkers: make(map[ast.Node][]markerComment), + allComments: file.Comments, + }, + } + ast.Walk(visitor, file) + + // grab the last package-level comments at the end of the file (if any) + lastFileMarkers := visitor.markersBetween(false, visitor.commentInd, len(visitor.allComments)) + visitor.pkgMarkers = append(visitor.pkgMarkers, lastFileMarkers...) + + // figure out if any type-level markers are actually package-level markers + for node, markers := range visitor.nodeMarkers { + _, isType := node.(*ast.TypeSpec) + if !isType { + continue + } + endOfMarkers := 0 + for _, marker := range markers { + if marker.fromGodoc { + // markers from godoc are never package level + markers[endOfMarkers] = marker + endOfMarkers++ + continue + } + markerText := marker.Text() + typeDef := c.Registry.Lookup(markerText, DescribesType) + if typeDef != nil { + // prefer assuming type-level markers + markers[endOfMarkers] = marker + endOfMarkers++ + continue + } + def := c.Registry.Lookup(markerText, DescribesPackage) + if def == nil { + // assume type-level unless proven otherwise + markers[endOfMarkers] = marker + endOfMarkers++ + continue + } + // it's package-level, since a package-level definition exists + visitor.pkgMarkers = append(visitor.pkgMarkers, marker) + } + visitor.nodeMarkers[node] = markers[:endOfMarkers] // re-set after trimming the package markers + } + visitor.nodeMarkers[file] = visitor.pkgMarkers + + return visitor.nodeMarkers +} + +// markerComment is an AST comment that contains a marker. +// It may or may not be from a Godoc comment, which affects +// marker re-associated (from type-level to package-level) +type markerComment struct { + *ast.Comment + fromGodoc bool +} + +// Text returns the text of the marker, stripped of the comment +// marker and leading spaces, as should be passed to Registry.Lookup +// and Registry.Parse. +func (c markerComment) Text() string { + return strings.TrimSpace(c.Comment.Text[2:]) +} + +// markerVisistor visits AST nodes, recording markers associated with each node. +type markerVisitor struct { + allComments []*ast.CommentGroup + commentInd int + + declComments []markerComment + lastLineCommentGroup *ast.CommentGroup + + pkgMarkers []markerComment + nodeMarkers map[ast.Node][]markerComment +} + +// isMarkerComment checks that the given comment is a single-line (`//`) +// comment and it's first non-space content is `+`. +func isMarkerComment(comment string) bool { + if comment[0:2] != "//" { + return false + } + stripped := strings.TrimSpace(comment[2:]) + if len(stripped) < 1 || stripped[0] != '+' { + return false + } + return true +} + +// markersBetween grabs the markers between the given indicies in the list of all comments. +func (v *markerVisitor) markersBetween(fromGodoc bool, start, end int) []markerComment { + if start < 0 || end < 0 { + return nil + } + var res []markerComment + for i := start; i < end; i++ { + commentGroup := v.allComments[i] + for _, comment := range commentGroup.List { + if !isMarkerComment(comment.Text) { + continue + } + res = append(res, markerComment{Comment: comment, fromGodoc: fromGodoc}) + } + } + return res +} + +type markerSubVisitor struct { + *markerVisitor + node ast.Node + collectPackageLevel bool +} + +// Visit collects markers for each node in the AST, optionally +// collecting unassociated markers as package-level. +func (v markerSubVisitor) Visit(node ast.Node) ast.Visitor { + if node == nil { + // end of the node, so we might need to advance comments beyond the end + // of the block if we don't want to collect package-level markers in + // this block. + + if !v.collectPackageLevel { + if v.commentInd < len(v.allComments) { + lastCommentInd := v.commentInd + nextGroup := v.allComments[lastCommentInd] + for nextGroup.Pos() < v.node.End() { + lastCommentInd++ + if lastCommentInd >= len(v.allComments) { + // after the increment so our decrement below still makes sense + break + } + nextGroup = v.allComments[lastCommentInd] + } + v.commentInd = lastCommentInd + } + } + + return nil + } + + // skip comments on the same line as the previous node + // making sure to double-check for the case where we've gone past the end of the comments + // but still have to finish up typespec-gendecl association (see below). + if v.lastLineCommentGroup != nil && v.commentInd < len(v.allComments) && v.lastLineCommentGroup.Pos() == v.allComments[v.commentInd].Pos() { + v.commentInd++ + } + + // stop visiting if there are no more comments in the file + // NB(directxman12): we can't just stop immediately, because we + // still need to check if there are typespecs associated with gendecls. + var markerCommentBlock []markerComment + var docCommentBlock []markerComment + lastCommentInd := v.commentInd + if v.commentInd < len(v.allComments) { + // figure out the first comment after the node in question... + nextGroup := v.allComments[lastCommentInd] + for nextGroup.Pos() < node.Pos() { + lastCommentInd++ + if lastCommentInd >= len(v.allComments) { + // after the increment so our decrement below still makes sense + break + } + nextGroup = v.allComments[lastCommentInd] + } + lastCommentInd-- // ...then decrement to get the last comment before the node in question + + // figure out the godoc comment so we can deal with it separately + var docGroup *ast.CommentGroup + docGroup, v.lastLineCommentGroup = associatedCommentsFor(node) + + // find the last comment group that's not godoc + markerCommentInd := lastCommentInd + if docGroup != nil && v.allComments[markerCommentInd].Pos() == docGroup.Pos() { + markerCommentInd-- + } + + // check if we have freestanding package markers, + // and find the markers in our "closest non-godoc" comment block, + // plus our godoc comment block + if markerCommentInd >= v.commentInd { + if v.collectPackageLevel { + // assume anything between the comment ind and the marker ind (not including it) + // are package-level + v.pkgMarkers = append(v.pkgMarkers, v.markersBetween(false, v.commentInd, markerCommentInd)...) + } + markerCommentBlock = v.markersBetween(false, markerCommentInd, markerCommentInd+1) + docCommentBlock = v.markersBetween(true, markerCommentInd+1, lastCommentInd+1) + } else { + docCommentBlock = v.markersBetween(true, markerCommentInd+1, lastCommentInd+1) + } + } + + resVisitor := markerSubVisitor{ + collectPackageLevel: false, // don't collect package level by default + markerVisitor: v.markerVisitor, + node: node, + } + + // associate those markers with a node + switch typedNode := node.(type) { + case *ast.GenDecl: + // save the comments associated with the gen-decl if it's a single-line type decl + if typedNode.Lparen != token.NoPos || typedNode.Tok != token.TYPE { + // not a single-line type spec, treat them as free comments + v.pkgMarkers = append(v.pkgMarkers, markerCommentBlock...) + break + } + // save these, we'll need them when we encounter the actual type spec + v.declComments = append(v.declComments, markerCommentBlock...) + v.declComments = append(v.declComments, docCommentBlock...) + case *ast.TypeSpec: + // add in comments attributed to the gen-decl, if any, + // as well as comments associated with the actual type + v.nodeMarkers[node] = append(v.nodeMarkers[node], v.declComments...) + v.nodeMarkers[node] = append(v.nodeMarkers[node], markerCommentBlock...) + v.nodeMarkers[node] = append(v.nodeMarkers[node], docCommentBlock...) + + v.declComments = nil + v.collectPackageLevel = false // don't collect package-level inside type structs + case *ast.Field: + v.nodeMarkers[node] = append(v.nodeMarkers[node], markerCommentBlock...) + v.nodeMarkers[node] = append(v.nodeMarkers[node], docCommentBlock...) + case *ast.File: + v.pkgMarkers = append(v.pkgMarkers, markerCommentBlock...) + v.pkgMarkers = append(v.pkgMarkers, docCommentBlock...) + + // collect markers in root file scope + resVisitor.collectPackageLevel = true + default: + // assume markers before anything else are package-level markers, + // *but* don't include any markers in godoc + if v.collectPackageLevel { + v.pkgMarkers = append(v.pkgMarkers, markerCommentBlock...) + } + } + + // increment the comment ind so that we start at the right place for the next node + v.commentInd = lastCommentInd + 1 + + return resVisitor + +} + +// associatedCommentsFor returns the doc comment group (if relevant and present) and end-of-line comment +// (again if relevant and present) for the given AST node. +func associatedCommentsFor(node ast.Node) (docGroup *ast.CommentGroup, lastLineCommentGroup *ast.CommentGroup) { + switch typedNode := node.(type) { + case *ast.Field: + docGroup = typedNode.Doc + lastLineCommentGroup = typedNode.Comment + case *ast.File: + docGroup = typedNode.Doc + case *ast.FuncDecl: + docGroup = typedNode.Doc + case *ast.GenDecl: + docGroup = typedNode.Doc + case *ast.ImportSpec: + docGroup = typedNode.Doc + lastLineCommentGroup = typedNode.Comment + case *ast.TypeSpec: + docGroup = typedNode.Doc + lastLineCommentGroup = typedNode.Comment + case *ast.ValueSpec: + docGroup = typedNode.Doc + lastLineCommentGroup = typedNode.Comment + default: + lastLineCommentGroup = nil + } + + return docGroup, lastLineCommentGroup +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/markers/doc.go b/vendor/sigs.k8s.io/controller-tools/pkg/markers/doc.go new file mode 100644 index 0000000000..ab6947ccaf --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/markers/doc.go @@ -0,0 +1,113 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package markers contains utilities for defining and parsing "marker +// comments", also occasionally called tag comments (we use the term marker to +// avoid confusing with struct tags). Parsed result (output) values take the +// form of Go values, much like the "encoding/json" package. +// +// # Definitions and Parsing +// +// Markers are defined as structured Definitions which can be used to +// consistently parse marker comments. A Definition contains an concrete +// output type for the marker, which can be a simple type (like string), a +// struct, or a wrapper type (useful for defining additional methods on marker +// types). +// +// Markers take the general form +// +// +path:to:marker=val +// +// +path:to:marker:arg1=val,arg2=val2 +// +// +path:to:marker +// +// Arguments may be ints, bools, strings, and slices. Ints and bool take their +// standard form from Go. Strings may take any of their standard forms, or any +// sequence of unquoted characters up until a `,` or `;` is encountered. Lists +// take either of the following forms: +// +// val;val;val +// +// {val, val, val} +// +// Note that the first form will not properly parse nested slices, but is +// generally convenient and is the form used in many existing markers. +// +// Each of those argument types maps to the corresponding go type. Pointers +// mark optional fields (a struct tag, below, may also be used). The empty +// interface will match any type. +// +// Struct fields may optionally be annotated with the `marker` struct tag. The +// first argument is a name override. If it's left blank (or the tag isn't +// present), the camelCase version of the name will be used. The only +// additional argument defined is `optional`, which marks a field as optional +// without using a pointer. +// +// All parsed values are unmarshalled into the output type. If any +// non-optional fields aren't mentioned, an error will be raised unless +// `Strict` is set to false. +// +// # Registries and Lookup +// +// Definitions can be added to registries to facilitate lookups. Each +// definition is marked as either describing a type, struct field, or package +// (unassociated). The same marker name may be registered multiple times, as +// long as each describes a different construct (type, field, or package). +// Definitions can then be looked up by passing unparsed markers. +// +// # Collection and Extraction +// +// Markers can be collected from a loader.Package using a Collector. The +// Collector will read from a given Registry, collecting comments that look +// like markers and parsing them if they match some definition on the registry. +// +// Markers are considered associated with a particular field or type if they +// exist in the Godoc, or the closest non-godoc comment. Any other markers not +// inside a some other block (e.g. a struct definition, interface definition, +// etc) are considered package level. Markers in a "closest non-Go comment +// block" may also be considered package level if registered as such and no +// identical type-level definition exists. +// +// Like loader.Package, Collector's methods are idempotent and will not +// reperform work. +// +// # Traversal +// +// EachType function iterates over each type in a Package, providing +// conveniently structured type and field information with marker values +// associated. +// +// PackageMarkers can be used to fetch just package-level markers. +// +// # Help +// +// Help can be defined for each marker using the DefinitionHelp struct. It's +// mostly intended to be generated off of godocs using cmd/helpgen, which takes +// the first line as summary (removing the type/field name), and considers the +// rest as details. It looks for the +// +// +controllertools:generateHelp[:category=] +// +// marker to start generation. +// +// If you can't use godoc-based generation for whatever reasons (e.g. +// primitive-typed markers), you can use the SimpleHelp and DeprecatedHelp +// helper functions to generate help structs. +// +// Help is then registered into a registry as associated with the actual +// definition, and can then be later retrieved from the registry. +package markers diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/markers/help.go b/vendor/sigs.k8s.io/controller-tools/pkg/markers/help.go new file mode 100644 index 0000000000..26ca059bc8 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/markers/help.go @@ -0,0 +1,81 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package markers + +// You *probably* don't want to write these structs by hand +// -- use cmd/helpgen if you can write Godoc, and {Simple,Deprecated}Help +// otherwise. + +// DetailedHelp contains brief help, as well as more details. +// For the "full" help, join the two together. +type DetailedHelp struct { + Summary string + Details string +} + +// DefinitionHelp contains overall help for a marker Definition, +// as well as per-field help. +type DefinitionHelp struct { + // DetailedHelp contains the overall help for the marker. + DetailedHelp + // Category describes what kind of marker this is. + Category string + // DeprecatedInFavorOf marks the marker as deprecated. + // If non-nil & empty, it's assumed to just mean deprecated permanently. + // If non-empty, it's assumed to be a marker name. + DeprecatedInFavorOf *string + + // NB(directxman12): we make FieldHelp be in terms of the Go struct field + // names so that we don't have to know the conversion or processing rules + // for struct fields at compile-time for help generation. + + // FieldHelp defines the per-field help for this marker, *in terms of the + // go struct field names. Use the FieldsHelp method to map this to + // marker argument names. + FieldHelp map[string]DetailedHelp +} + +// FieldsHelp maps per-field help to the actual marker argument names from the +// given definition. +func (d *DefinitionHelp) FieldsHelp(def *Definition) map[string]DetailedHelp { + fieldsHelp := make(map[string]DetailedHelp, len(def.FieldNames)) + for fieldName, argName := range def.FieldNames { + fieldsHelp[fieldName] = d.FieldHelp[argName] + } + return fieldsHelp +} + +// SimpleHelp returns help that just has marker-level summary information +// (e.g. for use with empty or primitive-typed markers, where Godoc-based +// generation isn't possible). +func SimpleHelp(category, summary string) *DefinitionHelp { + return &DefinitionHelp{ + Category: category, + DetailedHelp: DetailedHelp{Summary: summary}, + } +} + +// DeprecatedHelp returns simple help (a la SimpleHelp), except marked as +// deprecated in favor of the given marker (or an empty string for just +// deprecated). +func DeprecatedHelp(inFavorOf, category, summary string) *DefinitionHelp { + return &DefinitionHelp{ + Category: category, + DetailedHelp: DetailedHelp{Summary: summary}, + DeprecatedInFavorOf: &inFavorOf, + } +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/markers/parse.go b/vendor/sigs.k8s.io/controller-tools/pkg/markers/parse.go new file mode 100644 index 0000000000..3e1d75a833 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/markers/parse.go @@ -0,0 +1,963 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package markers + +import ( + "bytes" + "fmt" + "reflect" + "strconv" + "strings" + sc "text/scanner" + "unicode" + + "sigs.k8s.io/controller-tools/pkg/loader" +) + +// expect checks that the next token of the scanner is the given token, adding an error +// to the scanner if not. It returns whether the token was as expected. +func expect(scanner *sc.Scanner, expected rune, errDesc string) bool { + tok := scanner.Scan() + if tok != expected { + scanner.Error(scanner, fmt.Sprintf("expected %s, got %q", errDesc, scanner.TokenText())) + return false + } + return true +} + +// peekNoSpace is equivalent to scanner.Peek, except that it will consume intervening whitespace. +func peekNoSpace(scanner *sc.Scanner) rune { + hint := scanner.Peek() + for ; hint <= rune(' ') && ((1<") + case IntType: + out.WriteString("int") + case NumberType: + out.WriteString("float64") + case StringType: + out.WriteString("string") + case BoolType: + out.WriteString("bool") + case AnyType: + out.WriteString("") + case SliceType: + out.WriteString("[]") + // arguments can't be non-pointer optional, so just call into typeString again. + a.ItemType.typeString(out) + case MapType: + out.WriteString("map[string]") + a.ItemType.typeString(out) + case RawType: + out.WriteString("") + } +} + +// TypeString returns a string roughly equivalent +// (but not identical) to the underlying Go type that +// this argument would parse to. It's mainly useful +// for user-friendly formatting of this argument (e.g. +// help strings). +func (a Argument) TypeString() string { + out := &strings.Builder{} + a.typeString(out) + return out.String() +} + +func (a Argument) String() string { + if a.Optional { + return fmt.Sprintf("", a.TypeString()) + } + return fmt.Sprintf("", a.TypeString()) +} + +// castAndSet casts val to out's type if needed, +// then sets out to val. +func castAndSet(out, val reflect.Value) { + outType := out.Type() + if outType != val.Type() { + val = val.Convert(outType) + } + out.Set(val) +} + +// makeSliceType makes a reflect.Type for a slice of the given type. +// Useful for constructing the out value for when AnyType's guess returns a slice. +func makeSliceType(itemType Argument) (reflect.Type, error) { + var itemReflectedType reflect.Type + switch itemType.Type { + case IntType: + itemReflectedType = reflect.TypeOf(int(0)) + case NumberType: + itemReflectedType = reflect.TypeOf(float64(0)) + case StringType: + itemReflectedType = reflect.TypeOf("") + case BoolType: + itemReflectedType = reflect.TypeOf(false) + case SliceType: + subItemType, err := makeSliceType(*itemType.ItemType) + if err != nil { + return nil, err + } + itemReflectedType = subItemType + case MapType: + subItemType, err := makeMapType(*itemType.ItemType) + if err != nil { + return nil, err + } + itemReflectedType = subItemType + // TODO(directxman12): support non-uniform slices? (probably not) + default: + return nil, fmt.Errorf("invalid type when constructing guessed slice out: %v", itemType.Type) + } + + if itemType.Pointer { + itemReflectedType = reflect.PtrTo(itemReflectedType) + } + + return reflect.SliceOf(itemReflectedType), nil +} + +// makeMapType makes a reflect.Type for a map of the given item type. +// Useful for constructing the out value for when AnyType's guess returns a map. +func makeMapType(itemType Argument) (reflect.Type, error) { + var itemReflectedType reflect.Type + switch itemType.Type { + case IntType: + itemReflectedType = reflect.TypeOf(int(0)) + case NumberType: + itemReflectedType = reflect.TypeOf(float64(0)) + case StringType: + itemReflectedType = reflect.TypeOf("") + case BoolType: + itemReflectedType = reflect.TypeOf(false) + case SliceType: + subItemType, err := makeSliceType(*itemType.ItemType) + if err != nil { + return nil, err + } + itemReflectedType = subItemType + // TODO(directxman12): support non-uniform slices? (probably not) + case MapType: + subItemType, err := makeMapType(*itemType.ItemType) + if err != nil { + return nil, err + } + itemReflectedType = subItemType + case AnyType: + // NB(directxman12): maps explicitly allow non-uniform item types, unlike slices at the moment + itemReflectedType = interfaceType + default: + return nil, fmt.Errorf("invalid type when constructing guessed slice out: %v", itemType.Type) + } + + if itemType.Pointer { + itemReflectedType = reflect.PtrTo(itemReflectedType) + } + + return reflect.MapOf(reflect.TypeOf(""), itemReflectedType), nil +} + +// guessType takes an educated guess about the type of the next field. If allowSlice +// is false, it will not guess slices. It's less efficient than parsing with actual +// type information, since we need to allocate to peek ahead full tokens, and the scanner +// only allows peeking ahead one character. +// Maps are *always* non-uniform (i.e. type the AnyType item type), since they're frequently +// used to represent things like defaults for an object in JSON. +func guessType(scanner *sc.Scanner, raw string, allowSlice bool) *Argument { + if allowSlice { + maybeItem := guessType(scanner, raw, false) + + subRaw := raw[scanner.Pos().Offset:] + subScanner := parserScanner(subRaw, scanner.Error) + + var tok rune + for tok = subScanner.Scan(); tok != ',' && tok != sc.EOF && tok != ';'; tok = subScanner.Scan() { + // wait till we get something interesting + } + + // semicolon means it's a legacy slice + if tok == ';' { + return &Argument{ + Type: SliceType, + ItemType: maybeItem, + } + } + + return maybeItem + } + + // everything else needs a duplicate scanner to scan properly + // (so we don't consume our scanner tokens until we actually + // go to use this -- Go doesn't like scanners that can be rewound). + subRaw := raw[scanner.Pos().Offset:] + subScanner := parserScanner(subRaw, scanner.Error) + + // skip whitespace + hint := peekNoSpace(subScanner) + + // first, try the easy case -- quoted strings strings + switch hint { + case '"', '\'', '`': + return &Argument{Type: StringType} + } + + // next, check for slices or maps + if hint == '{' { + subScanner.Scan() + + // TODO(directxman12): this can't guess at empty objects, but that's generally ok. + // We'll cross that bridge when we get there. + + // look ahead till we can figure out if this is a map or a slice + firstElemType := guessType(subScanner, subRaw, false) + if firstElemType.Type == StringType { + // might be a map or slice, parse the string and check for colon + // (blech, basically arbitrary look-ahead due to raw strings). + var keyVal string // just ignore this + (&Argument{Type: StringType}).parseString(subScanner, raw, reflect.Indirect(reflect.ValueOf(&keyVal))) + + if subScanner.Scan() == ':' { + // it's got a string followed by a colon -- it's a map + return &Argument{ + Type: MapType, + ItemType: &Argument{Type: AnyType}, + } + } + } + + // definitely a slice -- maps have to have string keys and have a value followed by a colon + return &Argument{ + Type: SliceType, + ItemType: firstElemType, + } + } + + // then, bools... + probablyString := false + if hint == 't' || hint == 'f' { + // maybe a bool + if nextTok := subScanner.Scan(); nextTok == sc.Ident { + switch subScanner.TokenText() { + case "true", "false": + // definitely a bool + return &Argument{Type: BoolType} + } + // probably a string + probablyString = true + } else { + // we shouldn't ever get here + scanner.Error(scanner, fmt.Sprintf("got a token (%q) that looked like an ident, but was not", scanner.TokenText())) + return &Argument{Type: InvalidType} + } + } + + // then, integers... + if !probablyString { + nextTok := subScanner.Scan() + if nextTok == '-' { + nextTok = subScanner.Scan() + } + + if nextTok == sc.Int { + return &Argument{Type: IntType} + } + if nextTok == sc.Float { + return &Argument{Type: NumberType} + } + } + + // otherwise assume bare strings + return &Argument{Type: StringType} +} + +// parseString parses either of the two accepted string forms (quoted, or bare tokens). +func (a *Argument) parseString(scanner *sc.Scanner, raw string, out reflect.Value) { + // strings are a bit weird -- the "easy" case is quoted strings (tokenized as strings), + // the "hard" case (present for backwards compat) is a bare sequence of tokens that aren't + // a comma. + tok := scanner.Scan() + if tok == sc.String || tok == sc.RawString { + // the easy case + val, err := strconv.Unquote(scanner.TokenText()) + if err != nil { + scanner.Error(scanner, fmt.Sprintf("unable to parse string: %v", err)) + return + } + castAndSet(out, reflect.ValueOf(val)) + return + } + + // the "hard" case -- bare tokens not including ',' (the argument + // separator), ';' (the slice separator), ':' (the map separator), or '}' + // (delimitted slice ender) + startPos := scanner.Position.Offset + for hint := peekNoSpace(scanner); hint != ',' && hint != ';' && hint != ':' && hint != '}' && hint != sc.EOF; hint = peekNoSpace(scanner) { + // skip this token + scanner.Scan() + } + endPos := scanner.Position.Offset + len(scanner.TokenText()) + castAndSet(out, reflect.ValueOf(raw[startPos:endPos])) +} + +// parseSlice parses either of the two slice forms (curly-brace-delimitted and semicolon-separated). +func (a *Argument) parseSlice(scanner *sc.Scanner, raw string, out reflect.Value) { + // slices have two supported formats, like string: + // - `{val, val, val}` (preferred) + // - `val;val;val` (legacy) + resSlice := reflect.Zero(out.Type()) + elem := reflect.Indirect(reflect.New(out.Type().Elem())) + + // preferred case + if peekNoSpace(scanner) == '{' { + // NB(directxman12): supporting delimitted slices in bare slices + // would require an extra look-ahead here :-/ + + scanner.Scan() // skip '{' + for hint := peekNoSpace(scanner); hint != '}' && hint != sc.EOF; hint = peekNoSpace(scanner) { + a.ItemType.parse(scanner, raw, elem, true /* parsing a slice */) + resSlice = reflect.Append(resSlice, elem) + tok := peekNoSpace(scanner) + if tok == '}' { + break + } + if !expect(scanner, ',', "comma") { + return + } + } + if !expect(scanner, '}', "close curly brace") { + return + } + castAndSet(out, resSlice) + return + } + + // legacy case + for hint := peekNoSpace(scanner); hint != ',' && hint != '}' && hint != sc.EOF; hint = peekNoSpace(scanner) { + a.ItemType.parse(scanner, raw, elem, true /* parsing a slice */) + resSlice = reflect.Append(resSlice, elem) + tok := peekNoSpace(scanner) + if tok == ',' || tok == '}' || tok == sc.EOF { + break + } + scanner.Scan() + if tok != ';' { + scanner.Error(scanner, fmt.Sprintf("expected comma, got %q", scanner.TokenText())) + return + } + } + castAndSet(out, resSlice) +} + +// parseMap parses a map of the form {string: val, string: val, string: val} +func (a *Argument) parseMap(scanner *sc.Scanner, raw string, out reflect.Value) { + resMap := reflect.MakeMap(out.Type()) + elem := reflect.Indirect(reflect.New(out.Type().Elem())) + key := reflect.Indirect(reflect.New(out.Type().Key())) + + if !expect(scanner, '{', "open curly brace") { + return + } + + for hint := peekNoSpace(scanner); hint != '}' && hint != sc.EOF; hint = peekNoSpace(scanner) { + a.parseString(scanner, raw, key) + if !expect(scanner, ':', "colon") { + return + } + a.ItemType.parse(scanner, raw, elem, false /* not in a slice */) + resMap.SetMapIndex(key, elem) + + if peekNoSpace(scanner) == '}' { + break + } + if !expect(scanner, ',', "comma") { + return + } + } + + if !expect(scanner, '}', "close curly brace") { + return + } + + castAndSet(out, resMap) +} + +// parse functions like Parse, except that it allows passing down whether or not we're +// already in a slice, to avoid duplicate legacy slice detection for AnyType +func (a *Argument) parse(scanner *sc.Scanner, raw string, out reflect.Value, inSlice bool) { + // nolint:gocyclo + if a.Type == InvalidType { + scanner.Error(scanner, "cannot parse invalid type") + return + } + if a.Pointer { + out.Set(reflect.New(out.Type().Elem())) + out = reflect.Indirect(out) + } + switch a.Type { + case RawType: + // raw consumes everything else + castAndSet(out, reflect.ValueOf(raw[scanner.Pos().Offset:])) + // consume everything else + for tok := scanner.Scan(); tok != sc.EOF; tok = scanner.Scan() { + } + case NumberType: + nextChar := scanner.Peek() + isNegative := false + if nextChar == '-' { + isNegative = true + scanner.Scan() // eat the '-' + } + + tok := scanner.Scan() + if tok != sc.Float && tok != sc.Int { + scanner.Error(scanner, fmt.Sprintf("expected integer or float, got %q", scanner.TokenText())) + return + } + + text := scanner.TokenText() + if isNegative { + text = "-" + text + } + + val, err := strconv.ParseFloat(text, 64) + if err != nil { + scanner.Error(scanner, fmt.Sprintf("unable to parse number: %v", err)) + return + } + + castAndSet(out, reflect.ValueOf(val)) + case IntType: + nextChar := scanner.Peek() + isNegative := false + if nextChar == '-' { + isNegative = true + scanner.Scan() // eat the '-' + } + if !expect(scanner, sc.Int, "integer") { + return + } + // TODO(directxman12): respect the size when parsing + text := scanner.TokenText() + if isNegative { + text = "-" + text + } + val, err := strconv.Atoi(text) + if err != nil { + scanner.Error(scanner, fmt.Sprintf("unable to parse integer: %v", err)) + return + } + castAndSet(out, reflect.ValueOf(val)) + case StringType: + // strings are a bit weird -- the "easy" case is quoted strings (tokenized as strings), + // the "hard" case (present for backwards compat) is a bare sequence of tokens that aren't + // a comma. + a.parseString(scanner, raw, out) + case BoolType: + if !expect(scanner, sc.Ident, "true or false") { + return + } + switch scanner.TokenText() { + case "true": + castAndSet(out, reflect.ValueOf(true)) + case "false": + castAndSet(out, reflect.ValueOf(false)) + default: + scanner.Error(scanner, fmt.Sprintf("expected true or false, got %q", scanner.TokenText())) + return + } + case AnyType: + guessedType := guessType(scanner, raw, !inSlice) + newOut := out + + // we need to be able to construct the right element types, below + // in parse, so construct a concretely-typed value to use as "out" + switch guessedType.Type { + case SliceType: + newType, err := makeSliceType(*guessedType.ItemType) + if err != nil { + scanner.Error(scanner, err.Error()) + return + } + newOut = reflect.Indirect(reflect.New(newType)) + case MapType: + newType, err := makeMapType(*guessedType.ItemType) + if err != nil { + scanner.Error(scanner, err.Error()) + return + } + newOut = reflect.Indirect(reflect.New(newType)) + } + if !newOut.CanSet() { + panic("at the disco") // TODO(directxman12): this is left over from debugging -- it might need to be an error + } + guessedType.Parse(scanner, raw, newOut) + castAndSet(out, newOut) + case SliceType: + // slices have two supported formats, like string: + // - `{val, val, val}` (preferred) + // - `val;val;val` (legacy) + a.parseSlice(scanner, raw, out) + case MapType: + // maps are {string: val, string: val, string: val} + a.parseMap(scanner, raw, out) + } +} + +// Parse attempts to consume the argument from the given scanner (based on the given +// raw input as well for collecting ranges of content), and places the output value +// in the given reflect.Value. Errors are reported via the given scanner. +func (a *Argument) Parse(scanner *sc.Scanner, raw string, out reflect.Value) { + a.parse(scanner, raw, out, false) +} + +// ArgumentFromType constructs an Argument by examining the given +// raw reflect.Type. It can construct arguments from the Go types +// corresponding to any of the types listed in ArgumentType. +func ArgumentFromType(rawType reflect.Type) (Argument, error) { + if rawType == rawArgsType { + return Argument{ + Type: RawType, + }, nil + } + + if rawType == interfaceType { + return Argument{ + Type: AnyType, + }, nil + } + + arg := Argument{} + if rawType.Kind() == reflect.Ptr { + rawType = rawType.Elem() + arg.Pointer = true + arg.Optional = true + } + + switch rawType.Kind() { + case reflect.String: + arg.Type = StringType + case reflect.Int, reflect.Int32: // NB(directxman12): all ints in kubernetes are int32, so explicitly support that + arg.Type = IntType + case reflect.Float64: + arg.Type = NumberType + case reflect.Bool: + arg.Type = BoolType + case reflect.Slice: + arg.Type = SliceType + itemType, err := ArgumentFromType(rawType.Elem()) + if err != nil { + return Argument{}, fmt.Errorf("bad slice item type: %w", err) + } + arg.ItemType = &itemType + case reflect.Map: + arg.Type = MapType + if rawType.Key().Kind() != reflect.String { + return Argument{}, fmt.Errorf("bad map key type: map keys must be strings") + } + itemType, err := ArgumentFromType(rawType.Elem()) + if err != nil { + return Argument{}, fmt.Errorf("bad slice item type: %w", err) + } + arg.ItemType = &itemType + default: + return Argument{}, fmt.Errorf("type has unsupported kind %s", rawType.Kind()) + } + + return arg, nil +} + +// TargetType describes which kind of node a given marker is associated with. +type TargetType int + +const ( + // DescribesPackage indicates that a marker is associated with a package. + DescribesPackage TargetType = iota + // DescribesType indicates that a marker is associated with a type declaration. + DescribesType + // DescribesField indicates that a marker is associated with a struct field. + DescribesField +) + +func (t TargetType) String() string { + switch t { + case DescribesPackage: + return "package" + case DescribesType: + return "type" + case DescribesField: + return "field" + default: + return "(unknown)" + } +} + +// Definition is a parsed definition of a marker. +type Definition struct { + // Output is the deserialized Go type of the marker. + Output reflect.Type + // Name is the marker's name. + Name string + // Target indicates which kind of node this marker can be associated with. + Target TargetType + // Fields lists out the types of each field that this marker has, by + // argument name as used in the marker (if the output type isn't a struct, + // it'll have a single, blank field name). This only lists exported fields, + // (as per reflection rules). + Fields map[string]Argument + // FieldNames maps argument names (as used in the marker) to struct field name + // in the output type. + FieldNames map[string]string + // Strict indicates that this definition should error out when parsing if + // not all non-optional fields were seen. + Strict bool +} + +// AnonymousField indicates that the definition has one field, +// (actually the original object), and thus the field +// doesn't get named as part of the name. +func (d *Definition) AnonymousField() bool { + if len(d.Fields) != 1 { + return false + } + _, hasAnonField := d.Fields[""] + return hasAnonField +} + +// Empty indicates that this definition has no fields. +func (d *Definition) Empty() bool { + return len(d.Fields) == 0 +} + +// argumentInfo returns information about an argument field as the marker parser's field loader +// would see it. This can be useful if you have to interact with marker definition structs +// externally (e.g. at compile time). +func argumentInfo(fieldName string, tag reflect.StructTag) (argName string, optionalOpt bool) { + argName = lowerCamelCase(fieldName) + markerTag, tagSpecified := tag.Lookup("marker") + markerTagParts := strings.Split(markerTag, ",") + if tagSpecified && markerTagParts[0] != "" { + // allow overriding to support legacy cases where we don't follow camelCase conventions + argName = markerTagParts[0] + } + optionalOpt = false + for _, tagOption := range markerTagParts[1:] { + switch tagOption { + case "optional": + optionalOpt = true + } + } + + return argName, optionalOpt +} + +// loadFields uses reflection to populate argument information from the Output type. +func (d *Definition) loadFields() error { + if d.Fields == nil { + d.Fields = make(map[string]Argument) + d.FieldNames = make(map[string]string) + } + if d.Output.Kind() != reflect.Struct { + // anonymous field type + argType, err := ArgumentFromType(d.Output) + if err != nil { + return err + } + d.Fields[""] = argType + d.FieldNames[""] = "" + return nil + } + + for i := 0; i < d.Output.NumField(); i++ { + field := d.Output.Field(i) + if field.PkgPath != "" { + // as per the reflect package docs, pkgpath is empty for exported fields, + // so non-empty package path means a private field, which we should skip + continue + } + argName, optionalOpt := argumentInfo(field.Name, field.Tag) + + argType, err := ArgumentFromType(field.Type) + if err != nil { + return fmt.Errorf("unable to extract type information for field %q: %w", field.Name, err) + } + + if argType.Type == RawType { + return fmt.Errorf("RawArguments must be the direct type of a marker, and not a field") + } + + argType.Optional = optionalOpt || argType.Optional + + d.Fields[argName] = argType + d.FieldNames[argName] = field.Name + } + + return nil +} + +// parserScanner makes a new scanner appropriate for use in parsing definitions and arguments. +func parserScanner(raw string, err func(*sc.Scanner, string)) *sc.Scanner { + scanner := &sc.Scanner{} + scanner.Init(bytes.NewBufferString(raw)) + scanner.Mode = sc.ScanIdents | sc.ScanInts | sc.ScanFloats | sc.ScanStrings | sc.ScanRawStrings | sc.SkipComments + scanner.Error = err + + return scanner +} + +// Parse uses the type information in this Definition to parse the given +// raw marker in the form `+a:b:c=arg,d=arg` into an output object of the +// type specified in the definition. +func (d *Definition) Parse(rawMarker string) (interface{}, error) { + name, anonName, fields := splitMarker(rawMarker) + + out := reflect.Indirect(reflect.New(d.Output)) + + // if we're a not a struct or have no arguments, treat the full `a:b:c` as the name, + // otherwise, treat `c` as a field name, and `a:b` as the marker name. + if !d.AnonymousField() && !d.Empty() && len(anonName) >= len(name)+1 { + fields = anonName[len(name)+1:] + "=" + fields + } + + var errs []error + scanner := parserScanner(fields, func(scanner *sc.Scanner, msg string) { + errs = append(errs, &ScannerError{Msg: msg, Pos: scanner.Position}) + }) + + // TODO(directxman12): strict parsing where we error out if certain fields aren't optional + seen := make(map[string]struct{}, len(d.Fields)) + if d.AnonymousField() && scanner.Peek() != sc.EOF { + // might still be a struct that something fiddled with, so double check + structFieldName := d.FieldNames[""] + outTarget := out + if structFieldName != "" { + // it's a struct field mapped to an anonymous marker + outTarget = out.FieldByName(structFieldName) + if !outTarget.CanSet() { + scanner.Error(scanner, fmt.Sprintf("cannot set field %q (might not exist)", structFieldName)) + return out.Interface(), loader.MaybeErrList(errs) + } + } + + // no need for trying to parse field names if we're not a struct + field := d.Fields[""] + field.Parse(scanner, fields, outTarget) + seen[""] = struct{}{} // mark as seen for strict definitions + } else if !d.Empty() && scanner.Peek() != sc.EOF { + // if we expect *and* actually have arguments passed + for { + // parse the argument name + if !expect(scanner, sc.Ident, "argument name") { + break + } + argName := scanner.TokenText() + if !expect(scanner, '=', "equals") { + break + } + + // make sure we know the field + fieldName, known := d.FieldNames[argName] + if !known { + scanner.Error(scanner, fmt.Sprintf("unknown argument %q", argName)) + break + } + fieldType, known := d.Fields[argName] + if !known { + scanner.Error(scanner, fmt.Sprintf("unknown argument %q", argName)) + break + } + seen[argName] = struct{}{} // mark as seen for strict definitions + + // parse the field value + fieldVal := out.FieldByName(fieldName) + if !fieldVal.CanSet() { + scanner.Error(scanner, fmt.Sprintf("cannot set field %q (might not exist)", fieldName)) + break + } + fieldType.Parse(scanner, fields, fieldVal) + + if len(errs) > 0 { + break + } + + if scanner.Peek() == sc.EOF { + break + } + if !expect(scanner, ',', "comma") { + break + } + } + } + + if tok := scanner.Scan(); tok != sc.EOF { + scanner.Error(scanner, fmt.Sprintf("extra arguments provided: %q", fields[scanner.Position.Offset:])) + } + + if d.Strict { + for argName, arg := range d.Fields { + if _, wasSeen := seen[argName]; !wasSeen && !arg.Optional { + scanner.Error(scanner, fmt.Sprintf("missing argument %q", argName)) + } + } + } + + return out.Interface(), loader.MaybeErrList(errs) +} + +// MakeDefinition constructs a definition from a name, type, and the output type. +// All such definitions are strict by default. If a struct is passed as the output +// type, its public fields will automatically be populated into Fields (and similar +// fields in Definition). Other values will have a single, empty-string-named Fields +// entry. +func MakeDefinition(name string, target TargetType, output interface{}) (*Definition, error) { + def := &Definition{ + Name: name, + Target: target, + Output: reflect.TypeOf(output), + Strict: true, + } + + if err := def.loadFields(); err != nil { + return nil, err + } + + return def, nil +} + +// MakeAnyTypeDefinition constructs a definition for an output struct with a +// field named `Value` of type `interface{}`. The argument to the marker will +// be parsed as AnyType and assigned to the field named `Value`. +func MakeAnyTypeDefinition(name string, target TargetType, output interface{}) (*Definition, error) { + defn, err := MakeDefinition(name, target, output) + if err != nil { + return nil, err + } + defn.FieldNames = map[string]string{"": "Value"} + defn.Fields = map[string]Argument{"": defn.Fields["value"]} + return defn, nil +} + +// splitMarker takes a marker in the form of `+a:b:c=arg,d=arg` and splits it +// into the name (`a:b`), the name if it's not a struct (`a:b:c`), and the parts +// that are definitely fields (`arg,d=arg`). +func splitMarker(raw string) (name string, anonymousName string, restFields string) { + raw = raw[1:] // get rid of the leading '+' + nameFieldParts := strings.SplitN(raw, "=", 2) + if len(nameFieldParts) == 1 { + return nameFieldParts[0], nameFieldParts[0], "" + } + anonymousName = nameFieldParts[0] + name = anonymousName + restFields = nameFieldParts[1] + + nameParts := strings.Split(name, ":") + if len(nameParts) > 1 { + name = strings.Join(nameParts[:len(nameParts)-1], ":") + } + return name, anonymousName, restFields +} + +type ScannerError struct { + Msg string + Pos sc.Position +} + +func (e *ScannerError) Error() string { + return fmt.Sprintf("%s (at %s)", e.Msg, e.Pos) +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/markers/reg.go b/vendor/sigs.k8s.io/controller-tools/pkg/markers/reg.go new file mode 100644 index 0000000000..7dcd458994 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/markers/reg.go @@ -0,0 +1,154 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package markers + +import ( + "fmt" + "sync" +) + +// Registry keeps track of registered definitions, and allows for easy lookup. +// It's thread-safe, and the zero-value can be safely used. +type Registry struct { + forPkg map[string]*Definition + forType map[string]*Definition + forField map[string]*Definition + helpFor map[*Definition]*DefinitionHelp + + mu sync.RWMutex + initOnce sync.Once +} + +func (r *Registry) init() { + r.initOnce.Do(func() { + if r.forPkg == nil { + r.forPkg = make(map[string]*Definition) + } + if r.forType == nil { + r.forType = make(map[string]*Definition) + } + if r.forField == nil { + r.forField = make(map[string]*Definition) + } + if r.helpFor == nil { + r.helpFor = make(map[*Definition]*DefinitionHelp) + } + }) +} + +// Define defines a new marker with the given name, target, and output type. +// It's a shortcut around +// +// r.Register(MakeDefinition(name, target, obj)) +func (r *Registry) Define(name string, target TargetType, obj interface{}) error { + def, err := MakeDefinition(name, target, obj) + if err != nil { + return err + } + return r.Register(def) +} + +// Register registers the given marker definition with this registry for later lookup. +func (r *Registry) Register(def *Definition) error { + r.init() + + r.mu.Lock() + defer r.mu.Unlock() + + switch def.Target { + case DescribesPackage: + r.forPkg[def.Name] = def + case DescribesType: + r.forType[def.Name] = def + case DescribesField: + r.forField[def.Name] = def + default: + return fmt.Errorf("unknown target type %v", def.Target) + } + return nil +} + +// AddHelp stores the given help in the registry, marking it as associated with +// the given definition. +func (r *Registry) AddHelp(def *Definition, help *DefinitionHelp) { + r.init() + + r.mu.Lock() + defer r.mu.Unlock() + + r.helpFor[def] = help +} + +// Lookup fetches the definition corresponding to the given name and target type. +func (r *Registry) Lookup(name string, target TargetType) *Definition { + r.init() + + r.mu.RLock() + defer r.mu.RUnlock() + + switch target { + case DescribesPackage: + return tryAnonLookup(name, r.forPkg) + case DescribesType: + return tryAnonLookup(name, r.forType) + case DescribesField: + return tryAnonLookup(name, r.forField) + default: + return nil + } +} + +// HelpFor fetches the help for a given definition, if present. +func (r *Registry) HelpFor(def *Definition) *DefinitionHelp { + r.init() + + r.mu.RLock() + defer r.mu.RUnlock() + + return r.helpFor[def] +} + +// AllDefinitions returns all marker definitions known to this registry. +func (r *Registry) AllDefinitions() []*Definition { + res := make([]*Definition, 0, len(r.forPkg)+len(r.forType)+len(r.forField)) + for _, def := range r.forPkg { + res = append(res, def) + } + for _, def := range r.forType { + res = append(res, def) + } + for _, def := range r.forField { + res = append(res, def) + } + return res +} + +// tryAnonLookup tries looking up the given marker as both an struct-based +// marker and an anonymous marker, returning whichever format matches first, +// preferring the longer (anonymous) name in case of conflicts. +func tryAnonLookup(name string, defs map[string]*Definition) *Definition { + // NB(directxman12): we look up anonymous names first to work with + // legacy style marker definitions that have a namespaced approach + // (e.g. deepcopy-gen, which uses `+k8s:deepcopy-gen=foo,bar` *and* + // `+k8s.io:deepcopy-gen:interfaces=foo`). + name, anonName, _ := splitMarker(name) + if def, exists := defs[anonName]; exists { + return def + } + + return defs[name] +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/markers/regutil.go b/vendor/sigs.k8s.io/controller-tools/pkg/markers/regutil.go new file mode 100644 index 0000000000..a9160c3c2f --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/markers/regutil.go @@ -0,0 +1,36 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package markers + +// Must panics on errors creating definitions. +func Must(def *Definition, err error) *Definition { + if err != nil { + panic(err) + } + return def +} + +// RegisterAll attempts to register all definitions against the given registry, +// stopping and returning if an error occurs. +func RegisterAll(reg *Registry, defs ...*Definition) error { + for _, def := range defs { + if err := reg.Register(def); err != nil { + return err + } + } + return nil +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/markers/zip.go b/vendor/sigs.k8s.io/controller-tools/pkg/markers/zip.go new file mode 100644 index 0000000000..b352ededc7 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/markers/zip.go @@ -0,0 +1,201 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package markers + +import ( + "go/ast" + "go/token" + "reflect" + "strings" + + "sigs.k8s.io/controller-tools/pkg/loader" +) + +// extractDoc extracts documentation from the given node, skipping markers +// in the godoc and falling back to the decl if necessary (for single-line decls). +func extractDoc(node ast.Node, decl *ast.GenDecl) string { + var docs *ast.CommentGroup + switch docced := node.(type) { + case *ast.Field: + docs = docced.Doc + case *ast.File: + docs = docced.Doc + case *ast.GenDecl: + docs = docced.Doc + case *ast.TypeSpec: + docs = docced.Doc + // type Ident expr expressions get docs attached to the decl, + // so check for that case (missing Lparen == single line type decl) + if docs == nil && decl.Lparen == token.NoPos { + docs = decl.Doc + } + } + + if docs == nil { + return "" + } + + // filter out markers + var outGroup ast.CommentGroup + outGroup.List = make([]*ast.Comment, 0, len(docs.List)) + for _, comment := range docs.List { + if isMarkerComment(comment.Text) { + continue + } + outGroup.List = append(outGroup.List, comment) + } + + // split lines, and re-join together as a single + // paragraph, respecting double-newlines as + // paragraph markers. + outLines := strings.Split(outGroup.Text(), "\n") + if outLines[len(outLines)-1] == "" { + // chop off the extraneous last part + outLines = outLines[:len(outLines)-1] + } + + for i, line := range outLines { + // Trim any extranous whitespace, + // for handling /*…*/-style comments, + // which have whitespace preserved in go/ast: + line = strings.TrimSpace(line) + + // Respect that double-newline means + // actual newline: + if line == "" { + outLines[i] = "\n" + } else { + outLines[i] = line + } + } + + return strings.Join(outLines, " ") +} + +// PackageMarkers collects all the package-level marker values for the given package. +func PackageMarkers(col *Collector, pkg *loader.Package) (MarkerValues, error) { + markers, err := col.MarkersInPackage(pkg) + if err != nil { + return nil, err + } + res := make(MarkerValues) + for _, file := range pkg.Syntax { + fileMarkers := markers[file] + for name, vals := range fileMarkers { + res[name] = append(res[name], vals...) + } + } + + return res, nil +} + +// FieldInfo contains marker values and commonly used information for a struct field. +type FieldInfo struct { + // Name is the name of the field (or "" for embedded fields) + Name string + // Doc is the Godoc of the field, pre-processed to remove markers and joine + // single newlines together. + Doc string + // Tag struct tag associated with this field (or "" if non existed). + Tag reflect.StructTag + + // Markers are all registered markers associated with this field. + Markers MarkerValues + + // RawField is the raw, underlying field AST object that this field represents. + RawField *ast.Field +} + +// TypeInfo contains marker values and commonly used information for a type declaration. +type TypeInfo struct { + // Name is the name of the type. + Name string + // Doc is the Godoc of the type, pre-processed to remove markers and joine + // single newlines together. + Doc string + + // Markers are all registered markers associated with the type. + Markers MarkerValues + + // Fields are all the fields associated with the type, if it's a struct. + // (if not, Fields will be nil). + Fields []FieldInfo + + // RawDecl contains the raw GenDecl that the type was declared as part of. + RawDecl *ast.GenDecl + // RawSpec contains the raw Spec that declared this type. + RawSpec *ast.TypeSpec + // RawFile contains the file in which this type was declared. + RawFile *ast.File +} + +// TypeCallback is a callback called for each type declaration in a package. +type TypeCallback func(info *TypeInfo) + +// EachType collects all markers, then calls the given callback for each type declaration in a package. +// Each individual spec is considered separate, so +// +// type ( +// Foo string +// Bar int +// Baz struct{} +// ) +// +// yields three calls to the callback. +func EachType(col *Collector, pkg *loader.Package, cb TypeCallback) error { + markers, err := col.MarkersInPackage(pkg) + if err != nil { + return err + } + + loader.EachType(pkg, func(file *ast.File, decl *ast.GenDecl, spec *ast.TypeSpec) { + var fields []FieldInfo + if structSpec, isStruct := spec.Type.(*ast.StructType); isStruct { + for _, field := range structSpec.Fields.List { + for _, name := range field.Names { + fields = append(fields, FieldInfo{ + Name: name.Name, + Doc: extractDoc(field, nil), + Tag: loader.ParseAstTag(field.Tag), + Markers: markers[field], + RawField: field, + }) + } + if field.Names == nil { + fields = append(fields, FieldInfo{ + Doc: extractDoc(field, nil), + Tag: loader.ParseAstTag(field.Tag), + Markers: markers[field], + RawField: field, + }) + } + } + } + + cb(&TypeInfo{ + Name: spec.Name.Name, + Markers: markers[spec], + Doc: extractDoc(spec, decl), + Fields: fields, + RawDecl: decl, + RawSpec: spec, + RawFile: file, + }) + }) + + return nil +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/rbac/parser.go b/vendor/sigs.k8s.io/controller-tools/pkg/rbac/parser.go new file mode 100644 index 0000000000..c2a24f4710 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/rbac/parser.go @@ -0,0 +1,267 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package rbac contain libraries for generating RBAC manifests from RBAC +// markers in Go source files. +// +// The markers take the form: +// +// +kubebuilder:rbac:groups=,resources=,resourceNames=,verbs=,urls= +package rbac + +import ( + "fmt" + "sort" + "strings" + + rbacv1 "k8s.io/api/rbac/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + "sigs.k8s.io/controller-tools/pkg/genall" + "sigs.k8s.io/controller-tools/pkg/markers" +) + +var ( + // RuleDefinition is a marker for defining RBAC rules. + // Call ToRule on the value to get a Kubernetes RBAC policy rule. + RuleDefinition = markers.Must(markers.MakeDefinition("kubebuilder:rbac", markers.DescribesPackage, Rule{})) +) + +// +controllertools:marker:generateHelp:category=RBAC + +// Rule specifies an RBAC rule to all access to some resources or non-resource URLs. +type Rule struct { + // Groups specifies the API groups that this rule encompasses. + Groups []string `marker:",optional"` + // Resources specifies the API resources that this rule encompasses. + Resources []string `marker:",optional"` + // ResourceNames specifies the names of the API resources that this rule encompasses. + // + // Create requests cannot be restricted by resourcename, as the object's name + // is not known at authorization time. + ResourceNames []string `marker:",optional"` + // Verbs specifies the (lowercase) kubernetes API verbs that this rule encompasses. + Verbs []string + // URL specifies the non-resource URLs that this rule encompasses. + URLs []string `marker:"urls,optional"` + // Namespace specifies the scope of the Rule. + // If not set, the Rule belongs to the generated ClusterRole. + // If set, the Rule belongs to a Role, whose namespace is specified by this field. + Namespace string `marker:",optional"` +} + +// ruleKey represents the resources and non-resources a Rule applies. +type ruleKey struct { + Groups string + Resources string + ResourceNames string + URLs string +} + +func (key ruleKey) String() string { + return fmt.Sprintf("%s + %s + %s + %s", key.Groups, key.Resources, key.ResourceNames, key.URLs) +} + +// ruleKeys implements sort.Interface +type ruleKeys []ruleKey + +func (keys ruleKeys) Len() int { return len(keys) } +func (keys ruleKeys) Swap(i, j int) { keys[i], keys[j] = keys[j], keys[i] } +func (keys ruleKeys) Less(i, j int) bool { return keys[i].String() < keys[j].String() } + +// key normalizes the Rule and returns a ruleKey object. +func (r *Rule) key() ruleKey { + r.normalize() + return ruleKey{ + Groups: strings.Join(r.Groups, "&"), + Resources: strings.Join(r.Resources, "&"), + ResourceNames: strings.Join(r.ResourceNames, "&"), + URLs: strings.Join(r.URLs, "&"), + } +} + +// addVerbs adds new verbs into a Rule. +// The duplicates in `r.Verbs` will be removed, and then `r.Verbs` will be sorted. +func (r *Rule) addVerbs(verbs []string) { + r.Verbs = removeDupAndSort(append(r.Verbs, verbs...)) +} + +// normalize removes duplicates from each field of a Rule, and sorts each field. +func (r *Rule) normalize() { + r.Groups = removeDupAndSort(r.Groups) + r.Resources = removeDupAndSort(r.Resources) + r.ResourceNames = removeDupAndSort(r.ResourceNames) + r.Verbs = removeDupAndSort(r.Verbs) + r.URLs = removeDupAndSort(r.URLs) +} + +// removeDupAndSort removes duplicates in strs, sorts the items, and returns a +// new slice of strings. +func removeDupAndSort(strs []string) []string { + set := make(map[string]bool) + for _, str := range strs { + if _, ok := set[str]; !ok { + set[str] = true + } + } + + var result []string + for str := range set { + result = append(result, str) + } + sort.Strings(result) + return result +} + +// ToRule converts this rule to its Kubernetes API form. +func (r *Rule) ToRule() rbacv1.PolicyRule { + // fix the group names first, since letting people type "core" is nice + for i, group := range r.Groups { + if group == "core" { + r.Groups[i] = "" + } + } + return rbacv1.PolicyRule{ + APIGroups: r.Groups, + Verbs: r.Verbs, + Resources: r.Resources, + ResourceNames: r.ResourceNames, + NonResourceURLs: r.URLs, + } +} + +// +controllertools:marker:generateHelp + +// Generator generates ClusterRole objects. +type Generator struct { + // RoleName sets the name of the generated ClusterRole. + RoleName string +} + +func (Generator) RegisterMarkers(into *markers.Registry) error { + if err := into.Register(RuleDefinition); err != nil { + return err + } + into.AddHelp(RuleDefinition, Rule{}.Help()) + return nil +} + +// GenerateRoles generate a slice of objs representing either a ClusterRole or a Role object +// The order of the objs in the returned slice is stable and determined by their namespaces. +func GenerateRoles(ctx *genall.GenerationContext, roleName string) ([]interface{}, error) { + rulesByNS := make(map[string][]*Rule) + for _, root := range ctx.Roots { + markerSet, err := markers.PackageMarkers(ctx.Collector, root) + if err != nil { + root.AddError(err) + } + + // group RBAC markers by namespace + for _, markerValue := range markerSet[RuleDefinition.Name] { + rule := markerValue.(Rule) + namespace := rule.Namespace + if _, ok := rulesByNS[namespace]; !ok { + rules := make([]*Rule, 0) + rulesByNS[namespace] = rules + } + rulesByNS[namespace] = append(rulesByNS[namespace], &rule) + } + } + + // NormalizeRules merge Rule with the same ruleKey and sort the Rules + NormalizeRules := func(rules []*Rule) []rbacv1.PolicyRule { + ruleMap := make(map[ruleKey]*Rule) + // all the Rules having the same ruleKey will be merged into the first Rule + for _, rule := range rules { + key := rule.key() + if _, ok := ruleMap[key]; !ok { + ruleMap[key] = rule + continue + } + ruleMap[key].addVerbs(rule.Verbs) + } + + // sort the Rules in rules according to their ruleKeys + keys := make([]ruleKey, 0, len(ruleMap)) + for key := range ruleMap { + keys = append(keys, key) + } + sort.Sort(ruleKeys(keys)) + + var policyRules []rbacv1.PolicyRule + for _, key := range keys { + policyRules = append(policyRules, ruleMap[key].ToRule()) + + } + return policyRules + } + + // collect all the namespaces and sort them + var namespaces []string + for ns := range rulesByNS { + namespaces = append(namespaces, ns) + } + sort.Strings(namespaces) + + // process the items in rulesByNS by the order specified in `namespaces` to make sure that the Role order is stable + var objs []interface{} + for _, ns := range namespaces { + rules := rulesByNS[ns] + policyRules := NormalizeRules(rules) + if len(policyRules) == 0 { + continue + } + if ns == "" { + objs = append(objs, rbacv1.ClusterRole{ + TypeMeta: metav1.TypeMeta{ + Kind: "ClusterRole", + APIVersion: rbacv1.SchemeGroupVersion.String(), + }, + ObjectMeta: metav1.ObjectMeta{ + Name: roleName, + }, + Rules: policyRules, + }) + } else { + objs = append(objs, rbacv1.Role{ + TypeMeta: metav1.TypeMeta{ + Kind: "Role", + APIVersion: rbacv1.SchemeGroupVersion.String(), + }, + ObjectMeta: metav1.ObjectMeta{ + Name: roleName, + Namespace: ns, + }, + Rules: policyRules, + }) + } + } + + return objs, nil +} + +func (g Generator) Generate(ctx *genall.GenerationContext) error { + objs, err := GenerateRoles(ctx, g.RoleName) + if err != nil { + return err + } + + if len(objs) == 0 { + return nil + } + + return ctx.WriteYAML("role.yaml", objs) +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/rbac/zz_generated.markerhelp.go b/vendor/sigs.k8s.io/controller-tools/pkg/rbac/zz_generated.markerhelp.go new file mode 100644 index 0000000000..5b6d9c4875 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/rbac/zz_generated.markerhelp.go @@ -0,0 +1,86 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by helpgen. DO NOT EDIT. + +package rbac + +import ( + "sigs.k8s.io/controller-tools/pkg/markers" +) + +func (Generator) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "", + DetailedHelp: markers.DetailedHelp{ + Summary: "generates ClusterRole objects.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{ + "RoleName": { + Summary: "sets the name of the generated ClusterRole.", + Details: "", + }, + "HeaderFile": { + Summary: "specifies the header text (e.g. license) to prepend to generated files.", + Details: "", + }, + "Year": { + Summary: "specifies the year to substitute for \" YEAR\" in the header file.", + Details: "", + }, + }, + } +} + +func (Rule) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "RBAC", + DetailedHelp: markers.DetailedHelp{ + Summary: "specifies an RBAC rule to all access to some resources or non-resource URLs.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{ + "Groups": { + Summary: "specifies the API groups that this rule encompasses.", + Details: "", + }, + "Resources": { + Summary: "specifies the API resources that this rule encompasses.", + Details: "", + }, + "ResourceNames": { + Summary: "specifies the names of the API resources that this rule encompasses. ", + Details: "Create requests cannot be restricted by resourcename, as the object's name is not known at authorization time.", + }, + "Verbs": { + Summary: "specifies the (lowercase) kubernetes API verbs that this rule encompasses.", + Details: "", + }, + "URLs": { + Summary: "URL specifies the non-resource URLs that this rule encompasses.", + Details: "", + }, + "Namespace": { + Summary: "specifies the scope of the Rule. If not set, the Rule belongs to the generated ClusterRole. If set, the Rule belongs to a Role, whose namespace is specified by this field.", + Details: "", + }, + }, + } +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/schemapatcher/gen.go b/vendor/sigs.k8s.io/controller-tools/pkg/schemapatcher/gen.go new file mode 100644 index 0000000000..e33ec11ff5 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/schemapatcher/gen.go @@ -0,0 +1,433 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package schemapatcher + +import ( + "fmt" + "io/ioutil" + "path/filepath" + + "gopkg.in/yaml.v3" + apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + "k8s.io/apimachinery/pkg/api/equality" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + kyaml "sigs.k8s.io/yaml" + + crdgen "sigs.k8s.io/controller-tools/pkg/crd" + crdmarkers "sigs.k8s.io/controller-tools/pkg/crd/markers" + "sigs.k8s.io/controller-tools/pkg/genall" + "sigs.k8s.io/controller-tools/pkg/loader" + "sigs.k8s.io/controller-tools/pkg/markers" + yamlop "sigs.k8s.io/controller-tools/pkg/schemapatcher/internal/yaml" +) + +// NB(directxman12): this code is quite fragile, but there are a sufficient +// number of corner cases that it's hard to decompose into separate tools. +// When in doubt, ping @sttts. +// +// Namely: +// - It needs to only update existing versions +// - It needs to make "stable" changes that don't mess with map key ordering +// (in order to facilitate validating that no change has occurred) +// - It needs to collapse identical schema versions into a top-level schema, +// if all versions are identical (this is a common requirement to all CRDs, +// but in this case it means simple jsonpatch wouldn't suffice) + +// TODO(directxman12): When CRD v1 rolls around, consider splitting this into a +// tool that generates a patch, and a separate tool for applying stable YAML +// patches. + +var ( + currentAPIExtVersion = apiext.SchemeGroupVersion.String() +) + +// +controllertools:marker:generateHelp + +// Generator patches existing CRDs with new schemata. +// +// It will generate output for each "CRD Version" (API version of the CRD type +// itself) , e.g. apiextensions/v1) available. +type Generator struct { + // ManifestsPath contains the CustomResourceDefinition YAML files. + ManifestsPath string `marker:"manifests"` + + // MaxDescLen specifies the maximum description length for fields in CRD's OpenAPI schema. + // + // 0 indicates drop the description for all fields completely. + // n indicates limit the description to at most n characters and truncate the description to + // closest sentence boundary if it exceeds n characters. + MaxDescLen *int `marker:",optional"` + + // GenerateEmbeddedObjectMeta specifies if any embedded ObjectMeta in the CRD should be generated + GenerateEmbeddedObjectMeta *bool `marker:",optional"` +} + +var _ genall.Generator = &Generator{} + +func (Generator) CheckFilter() loader.NodeFilter { + return crdgen.Generator{}.CheckFilter() +} + +func (Generator) RegisterMarkers(into *markers.Registry) error { + return crdmarkers.Register(into) +} + +func (g Generator) Generate(ctx *genall.GenerationContext) (result error) { + parser := &crdgen.Parser{ + Collector: ctx.Collector, + Checker: ctx.Checker, + // Indicates the parser on whether to register the ObjectMeta type or not + GenerateEmbeddedObjectMeta: g.GenerateEmbeddedObjectMeta != nil && *g.GenerateEmbeddedObjectMeta == true, + } + + crdgen.AddKnownTypes(parser) + for _, root := range ctx.Roots { + parser.NeedPackage(root) + } + + metav1Pkg := crdgen.FindMetav1(ctx.Roots) + if metav1Pkg == nil { + // no objects in the roots, since nothing imported metav1 + return nil + } + + // load existing CRD manifests with group-kind and versions + partialCRDSets, err := crdsFromDirectory(ctx, g.ManifestsPath) + if err != nil { + return err + } + + // generate schemata for the types we care about, and save them to be written later. + for _, groupKind := range crdgen.FindKubeKinds(parser, metav1Pkg) { + existingSet, wanted := partialCRDSets[groupKind] + if !wanted { + continue + } + + for pkg, gv := range parser.GroupVersions { + if gv.Group != groupKind.Group { + continue + } + if _, wantedVersion := existingSet.Versions[gv.Version]; !wantedVersion { + continue + } + + typeIdent := crdgen.TypeIdent{Package: pkg, Name: groupKind.Kind} + parser.NeedFlattenedSchemaFor(typeIdent) + + fullSchema := parser.FlattenedSchemata[typeIdent] + if g.MaxDescLen != nil { + fullSchema = *fullSchema.DeepCopy() + crdgen.TruncateDescription(&fullSchema, *g.MaxDescLen) + } + + // Fix top level ObjectMeta regardless of the settings. + if _, ok := fullSchema.Properties["metadata"]; ok { + fullSchema.Properties["metadata"] = apiext.JSONSchemaProps{Type: "object"} + } + + existingSet.NewSchemata[gv.Version] = fullSchema + } + } + + // patch existing CRDs with new schemata + for _, existingSet := range partialCRDSets { + // first, figure out if we need to merge schemata together if they're *all* + // identical (meaning we also don't have any "unset" versions) + + if len(existingSet.NewSchemata) == 0 { + continue + } + + // copy over the new versions that we have, keeping old versions so + // that we can tell if a schema would be nil + var someVer string + for ver := range existingSet.NewSchemata { + someVer = ver + existingSet.Versions[ver] = struct{}{} + } + + allSame := true + firstSchema := existingSet.NewSchemata[someVer] + for ver := range existingSet.Versions { + otherSchema, hasSchema := existingSet.NewSchemata[ver] + if !hasSchema || !equality.Semantic.DeepEqual(firstSchema, otherSchema) { + allSame = false + break + } + } + + if allSame { + if err := existingSet.setGlobalSchema(); err != nil { + return fmt.Errorf("failed to set global firstSchema for %s: %w", existingSet.GroupKind, err) + } + } else { + if err := existingSet.setVersionedSchemata(); err != nil { + return fmt.Errorf("failed to set versioned schemas for %s: %w", existingSet.GroupKind, err) + } + } + } + + // write the final result out to the new location + for _, set := range partialCRDSets { + // We assume all CRD versions came from different files, since this + // is how controller-gen works. If they came from the same file, + // it'd be non-sensical, since you couldn't reasonably use kubectl + // with them against older servers. + for _, crd := range set.CRDVersions { + if err := func() error { + outWriter, err := ctx.OutputRule.Open(nil, crd.FileName) + if err != nil { + return err + } + defer outWriter.Close() + + enc := yaml.NewEncoder(outWriter) + // yaml.v2 defaults to indent=2, yaml.v3 defaults to indent=4, + // so be compatible with everything else in k8s and choose 2. + enc.SetIndent(2) + + return enc.Encode(crd.Yaml) + }(); err != nil { + return err + } + } + } + + return nil +} + +// partialCRDSet represents a set of CRDs of different apiext versions +// (v1beta1.CRD vs v1.CRD) that represent the same GroupKind. +// +// It tracks modifications to the schemata of those CRDs from this source file, +// plus some useful structured content, and keeps track of the raw YAML representation +// of the different apiext versions. +type partialCRDSet struct { + // GroupKind is the GroupKind represented by this CRD. + GroupKind schema.GroupKind + // NewSchemata are the new schemata generated from Go IDL by controller-gen. + NewSchemata map[string]apiext.JSONSchemaProps + // CRDVersions are the forms of this CRD across different apiextensions + // versions + CRDVersions []*partialCRD + // Versions are the versions of the given GroupKind in this set of CRDs. + Versions map[string]struct{} +} + +// partialCRD represents the raw YAML encoding of a given CRD instance, plus +// the versions contained therein for easy lookup. +type partialCRD struct { + // Yaml is the raw YAML structure of the CRD. + Yaml *yaml.Node + // FileName is the source name of the file that this was read from. + // + // This isn't on partialCRDSet because we could have different CRD versions + // stored in the same file (like controller-tools does by default) or in + // different files. + FileName string + + // CRDVersion is the version of the CRD object itself, from + // apiextensions (currently apiextensions/v1 or apiextensions/v1beta1). + CRDVersion string +} + +// setGlobalSchema sets the versioned schemas (as per setVersionedSchemata). +func (e *partialCRDSet) setGlobalSchema() error { + for _, crdInfo := range e.CRDVersions { + if err := crdInfo.setVersionedSchemata(e.NewSchemata); err != nil { + return err + } + } + return nil +} + +// getVersionsNode gets the YAML node of .spec.versions YAML mapping, +// if returning the node, and whether or not it was present. +func (e *partialCRD) getVersionsNode() (*yaml.Node, bool, error) { + versions, found, err := yamlop.GetNode(e.Yaml, "spec", "versions") + if err != nil { + return nil, false, err + } + if !found { + return nil, false, nil + } + if versions.Kind != yaml.SequenceNode { + return nil, true, fmt.Errorf("unexpected non-sequence versions") + } + return versions, found, nil +} + +// setVersionedSchemata sets the versioned schemata on each encoding in this set as per +// setVersionedSchemata on partialCRD. +func (e *partialCRDSet) setVersionedSchemata() error { + for _, crdInfo := range e.CRDVersions { + if err := crdInfo.setVersionedSchemata(e.NewSchemata); err != nil { + return err + } + } + return nil +} + +// setVersionedSchemata populates all existing versions with new schemata, +// wiping the schema of any version that doesn't have a listed schema. +// Any "unknown" versions are ignored. +func (e *partialCRD) setVersionedSchemata(newSchemata map[string]apiext.JSONSchemaProps) error { + var err error + if err := yamlop.DeleteNode(e.Yaml, "spec", "validation"); err != nil { + return err + } + + versions, found, err := e.getVersionsNode() + if err != nil { + return err + } + if !found { + return fmt.Errorf("unexpected missing versions") + } + + for i, verNode := range versions.Content { + nameNode, _, _ := yamlop.GetNode(verNode, "name") + if nameNode.Kind != yaml.ScalarNode || nameNode.ShortTag() != "!!str" { + return fmt.Errorf("version name was not a string at spec.versions[%d]", i) + } + name := nameNode.Value + if name == "" { + return fmt.Errorf("unexpected empty name at spec.versions[%d]", i) + } + newSchema, found := newSchemata[name] + if !found { + if err := yamlop.DeleteNode(verNode, "schema"); err != nil { + return fmt.Errorf("spec.versions[%d]: %w", i, err) + } + } else { + schemaNodeTree, err := yamlop.ToYAML(newSchema) + if err != nil { + return fmt.Errorf("failed to convert schema to YAML: %w", err) + } + schemaNodeTree = schemaNodeTree.Content[0] // get rid of the document node + yamlop.SetStyle(schemaNodeTree, 0) // clear the style so it defaults to an auto-chosen one + if err := yamlop.SetNode(verNode, *schemaNodeTree, "schema", "openAPIV3Schema"); err != nil { + return fmt.Errorf("spec.versions[%d]: %w", i, err) + } + } + } + return nil +} + +// crdsFromDirectory returns loads all CRDs from the given directory in a +// manner that preserves ordering, comments, etc in order to make patching +// minimally invasive. Returned CRDs are mapped by group-kind. +func crdsFromDirectory(ctx *genall.GenerationContext, dir string) (map[schema.GroupKind]*partialCRDSet, error) { + res := map[schema.GroupKind]*partialCRDSet{} + dirEntries, err := ioutil.ReadDir(dir) + if err != nil { + return nil, err + } + for _, fileInfo := range dirEntries { + // find all files that are YAML + if fileInfo.IsDir() || filepath.Ext(fileInfo.Name()) != ".yaml" { + continue + } + + rawContent, err := ctx.ReadFile(filepath.Join(dir, fileInfo.Name())) + if err != nil { + return nil, err + } + + // NB(directxman12): we could use the universal deserializer for this, but it's + // really pretty clunky, and the alternative is actually kinda easier to understand + + // ensure that this is a CRD + var typeMeta metav1.TypeMeta + if err := kyaml.Unmarshal(rawContent, &typeMeta); err != nil { + continue + } + + if typeMeta.APIVersion == "" || typeMeta.Kind != "CustomResourceDefinition" { + // If there's no API version this file probably isn't a CRD. + // Likewise we don't need to care if the Kind isn't CustomResourceDefinition. + continue + } + + if !isSupportedAPIExtGroupVer(typeMeta.APIVersion) { + return nil, fmt.Errorf("load %q: apiVersion %q not supported", filepath.Join(dir, fileInfo.Name()), typeMeta.APIVersion) + } + + // collect the group-kind and versions from the actual structured form + var actualCRD crdIsh + if err := kyaml.Unmarshal(rawContent, &actualCRD); err != nil { + continue + } + groupKind := schema.GroupKind{Group: actualCRD.Spec.Group, Kind: actualCRD.Spec.Names.Kind} + versions := make(map[string]struct{}, len(actualCRD.Spec.Versions)) + for _, ver := range actualCRD.Spec.Versions { + versions[ver.Name] = struct{}{} + } + + // then actually unmarshal in a manner that preserves ordering, etc + var yamlNodeTree yaml.Node + if err := yaml.Unmarshal(rawContent, &yamlNodeTree); err != nil { + continue + } + + // then store this CRDVersion of the CRD in a set, populating the set if necessary + if res[groupKind] == nil { + res[groupKind] = &partialCRDSet{ + GroupKind: groupKind, + NewSchemata: make(map[string]apiext.JSONSchemaProps), + Versions: make(map[string]struct{}), + } + } + for ver := range versions { + res[groupKind].Versions[ver] = struct{}{} + } + res[groupKind].CRDVersions = append(res[groupKind].CRDVersions, &partialCRD{ + Yaml: &yamlNodeTree, + FileName: fileInfo.Name(), + CRDVersion: typeMeta.APIVersion, + }) + } + return res, nil +} + +// isSupportedAPIExtGroupVer checks if the given string-form group-version +// is one of the known apiextensions versions (v1). +func isSupportedAPIExtGroupVer(groupVer string) bool { + return groupVer == currentAPIExtVersion +} + +// crdIsh is a merged blob of CRD fields that looks enough like all versions of +// CRD to extract the relevant information for partialCRDSet and partialCRD. +// +// We keep this separate so it's clear what info we need, and so we don't break +// when we switch canonical internal versions and lose old fields while gaining +// new ones (like in v1beta1 --> v1). +// +// Its use is tied directly to crdsFromDirectory, and is mostly an implementation detail of that. +type crdIsh struct { + Spec struct { + Group string `json:"group"` + Names struct { + Kind string `json:"kind"` + } `json:"names"` + Versions []struct { + Name string `json:"name"` + } `json:"versions"` + } `json:"spec"` +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/schemapatcher/internal/yaml/convert.go b/vendor/sigs.k8s.io/controller-tools/pkg/schemapatcher/internal/yaml/convert.go new file mode 100644 index 0000000000..b0ac001580 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/schemapatcher/internal/yaml/convert.go @@ -0,0 +1,61 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package yaml + +import ( + "encoding/json" + "fmt" + + "gopkg.in/yaml.v3" +) + +// ToYAML converts some object that serializes to JSON into a YAML node tree. +// It's useful since it pays attention to JSON tags, unlike yaml.Unmarshal or +// yaml.Node.Decode. +func ToYAML(rawObj interface{}) (*yaml.Node, error) { + if rawObj == nil { + return &yaml.Node{Kind: yaml.ScalarNode, Value: "null", Tag: "!!null"}, nil + } + + rawJSON, err := json.Marshal(rawObj) + if err != nil { + return nil, fmt.Errorf("failed to marshal object: %w", err) + } + + var out yaml.Node + if err := yaml.Unmarshal(rawJSON, &out); err != nil { + return nil, fmt.Errorf("unable to unmarshal marshalled object: %w", err) + } + return &out, nil +} + +// changeAll calls the given callback for all nodes in +// the given YAML node tree. +func changeAll(root *yaml.Node, cb func(*yaml.Node)) { + cb(root) + for _, child := range root.Content { + changeAll(child, cb) + } +} + +// SetStyle sets the style for all nodes in the given +// node tree to the given style. +func SetStyle(root *yaml.Node, style yaml.Style) { + changeAll(root, func(node *yaml.Node) { + node.Style = style + }) +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/schemapatcher/internal/yaml/nested.go b/vendor/sigs.k8s.io/controller-tools/pkg/schemapatcher/internal/yaml/nested.go new file mode 100644 index 0000000000..70d43dbeb3 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/schemapatcher/internal/yaml/nested.go @@ -0,0 +1,87 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package yaml + +import ( + "fmt" + + "gopkg.in/yaml.v3" +) + +// ValueInMapping finds the value node with the corresponding string key +// in the given mapping node. If the given node is not a mapping, an +// error will be returned. +func ValueInMapping(root *yaml.Node, key string) (*yaml.Node, error) { + if root.Kind != yaml.MappingNode { + return nil, fmt.Errorf("unexpected non-mapping node") + } + + for i := 0; i < len(root.Content)/2; i++ { + keyNode := root.Content[i*2] + if keyNode.Value == key { + return root.Content[i*2+1], nil + } + } + return nil, nil +} + +// asCloseAsPossible goes as deep on the given path as possible, returning the +// last node that existed from the given path in the given tree of mapping +// nodes, as well as the rest of the path that could not be fetched, if any. +func asCloseAsPossible(root *yaml.Node, path ...string) (*yaml.Node, []string, error) { + if root == nil { + return nil, path, nil + } + if root.Kind == yaml.DocumentNode && len(root.Content) > 0 { + root = root.Content[0] + } + + currNode := root + for ; len(path) > 0; path = path[1:] { + if currNode.Kind != yaml.MappingNode { + return nil, nil, fmt.Errorf("unexpected non-mapping (%v) before path %v", currNode.Kind, path) + } + + nextNode, err := ValueInMapping(currNode, path[0]) + if err != nil { + return nil, nil, fmt.Errorf("unable to get next node in path %v: %w", path, err) + } + + if nextNode == nil { + // we're as close as possible + break + } + + currNode = nextNode + } + + return currNode, path, nil +} + +// GetNode gets the node at the given path in the given sequence of mapping +// nodes, or, if it doesn't exist, returning false. +func GetNode(root *yaml.Node, path ...string) (*yaml.Node, bool, error) { + resNode, restPath, err := asCloseAsPossible(root, path...) + if err != nil { + return nil, false, err + } + // more path means the node didn't exist + if len(restPath) != 0 { + return nil, false, nil + } + return resNode, true, nil +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/schemapatcher/internal/yaml/set.go b/vendor/sigs.k8s.io/controller-tools/pkg/schemapatcher/internal/yaml/set.go new file mode 100644 index 0000000000..ede417f1cf --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/schemapatcher/internal/yaml/set.go @@ -0,0 +1,80 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package yaml + +import ( + "fmt" + + "gopkg.in/yaml.v3" +) + +// SetNode sets the given path to the given yaml Node, creating mapping nodes along the way. +func SetNode(root *yaml.Node, val yaml.Node, path ...string) error { + currNode, path, err := asCloseAsPossible(root, path...) + if err != nil { + return err + } + + if len(path) > 0 { + if currNode.Kind != yaml.MappingNode { + return fmt.Errorf("unexpected non-mapping before path %v", path) + } + + for ; len(path) > 0; path = path[1:] { + keyNode := yaml.Node{Kind: yaml.ScalarNode, Tag: "!!str", Style: yaml.DoubleQuotedStyle, Value: path[0]} + nextNode := &yaml.Node{Kind: yaml.MappingNode} + currNode.Content = append(currNode.Content, &keyNode, nextNode) + + currNode = nextNode + } + } + + *currNode = val + return nil +} + +// DeleteNode deletes the node at the given path in the given tree of mapping nodes. +// It's a noop if the path doesn't exist. +func DeleteNode(root *yaml.Node, path ...string) error { + if len(path) == 0 { + return fmt.Errorf("must specify a path to delete") + } + pathToParent, keyToDelete := path[:len(path)-1], path[len(path)-1] + parentNode, path, err := asCloseAsPossible(root, pathToParent...) + if err != nil { + return err + } + if len(path) > 0 { + // no-op, parent node doesn't exist + return nil + } + + if parentNode.Kind != yaml.MappingNode { + return fmt.Errorf("unexpected non-mapping node") + } + + for i := 0; i < len(parentNode.Content)/2; i++ { + keyNode := parentNode.Content[i*2] + if keyNode.Value == keyToDelete { + parentNode.Content = append(parentNode.Content[:i*2], parentNode.Content[i*2+2:]...) + return nil + } + } + + // no-op, key not found in parent node + return nil +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/schemapatcher/zz_generated.markerhelp.go b/vendor/sigs.k8s.io/controller-tools/pkg/schemapatcher/zz_generated.markerhelp.go new file mode 100644 index 0000000000..db9745d767 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/schemapatcher/zz_generated.markerhelp.go @@ -0,0 +1,50 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by helpgen. DO NOT EDIT. + +package schemapatcher + +import ( + "sigs.k8s.io/controller-tools/pkg/markers" +) + +func (Generator) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "", + DetailedHelp: markers.DetailedHelp{ + Summary: "patches existing CRDs with new schemata. ", + Details: "It will generate output for each \"CRD Version\" (API version of the CRD type itself) , e.g. apiextensions/v1) available.", + }, + FieldHelp: map[string]markers.DetailedHelp{ + "ManifestsPath": { + Summary: "contains the CustomResourceDefinition YAML files.", + Details: "", + }, + "MaxDescLen": { + Summary: "specifies the maximum description length for fields in CRD's OpenAPI schema. ", + Details: "0 indicates drop the description for all fields completely. n indicates limit the description to at most n characters and truncate the description to closest sentence boundary if it exceeds n characters.", + }, + "GenerateEmbeddedObjectMeta": { + Summary: "specifies if any embedded ObjectMeta in the CRD should be generated", + Details: "", + }, + }, + } +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/version/version.go b/vendor/sigs.k8s.io/controller-tools/pkg/version/version.go new file mode 100644 index 0000000000..09c8efcf40 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/version/version.go @@ -0,0 +1,49 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package version + +import ( + "fmt" + "runtime/debug" +) + +// Version returns the version of the main module +func Version() string { + info, ok := debug.ReadBuildInfo() + if !ok || info == nil || info.Main.Version == "" { + // binary has not been built with module support or doesn't contain a version. + return "(unknown)" + } + return info.Main.Version +} + +// Print prints the main module version on stdout. +// +// Print will display either: +// +// - "Version: v0.2.1" when the program has been compiled with: +// +// $ go get github.com/controller-tools/cmd/controller-gen@v0.2.1 +// +// Note: go modules requires the usage of semver compatible tags starting with +// 'v' to have nice human-readable versions. +// +// - "Version: (devel)" when the program is compiled from a local git checkout. +// +// - "Version: (unknown)" when not using go modules. +func Print() { + fmt.Printf("Version: %s\n", Version()) +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/webhook/parser.go b/vendor/sigs.k8s.io/controller-tools/pkg/webhook/parser.go new file mode 100644 index 0000000000..a76dcdcbb4 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/webhook/parser.go @@ -0,0 +1,431 @@ +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package webhook contains libraries for generating webhookconfig manifests +// from markers in Go source files. +// +// The markers take the form: +// +// +kubebuilder:webhook:webhookVersions=<[]string>,failurePolicy=,matchPolicy=,groups=<[]string>,resources=<[]string>,verbs=<[]string>,versions=<[]string>,name=,path=,mutating=,sideEffects=,admissionReviewVersions=<[]string>,reinvocationPolicy= +package webhook + +import ( + "fmt" + "strings" + + admissionregv1 "k8s.io/api/admissionregistration/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/sets" + + "sigs.k8s.io/controller-tools/pkg/genall" + "sigs.k8s.io/controller-tools/pkg/markers" +) + +// The default {Mutating,Validating}WebhookConfiguration version to generate. +const ( + v1 = "v1" + defaultWebhookVersion = v1 +) + +var ( + // ConfigDefinition s a marker for defining Webhook manifests. + // Call ToWebhook on the value to get a Kubernetes Webhook. + ConfigDefinition = markers.Must(markers.MakeDefinition("kubebuilder:webhook", markers.DescribesPackage, Config{})) +) + +// supportedWebhookVersions returns currently supported API version of {Mutating,Validating}WebhookConfiguration. +func supportedWebhookVersions() []string { + return []string{defaultWebhookVersion} +} + +// +controllertools:marker:generateHelp:category=Webhook + +// Config specifies how a webhook should be served. +// +// It specifies only the details that are intrinsic to the application serving +// it (e.g. the resources it can handle, or the path it serves on). +type Config struct { + // Mutating marks this as a mutating webhook (it's validating only if false) + // + // Mutating webhooks are allowed to change the object in their response, + // and are called *before* all validating webhooks. Mutating webhooks may + // choose to reject an object, similarly to a validating webhook. + Mutating bool + // FailurePolicy specifies what should happen if the API server cannot reach the webhook. + // + // It may be either "ignore" (to skip the webhook and continue on) or "fail" (to reject + // the object in question). + FailurePolicy string + // MatchPolicy defines how the "rules" list is used to match incoming requests. + // Allowed values are "Exact" (match only if it exactly matches the specified rule) + // or "Equivalent" (match a request if it modifies a resource listed in rules, even via another API group or version). + MatchPolicy string `marker:",optional"` + // SideEffects specify whether calling the webhook will have side effects. + // This has an impact on dry runs and `kubectl diff`: if the sideEffect is "Unknown" (the default) or "Some", then + // the API server will not call the webhook on a dry-run request and fails instead. + // If the value is "None", then the webhook has no side effects and the API server will call it on dry-run. + // If the value is "NoneOnDryRun", then the webhook is responsible for inspecting the "dryRun" property of the + // AdmissionReview sent in the request, and avoiding side effects if that value is "true." + SideEffects string `marker:",optional"` + + // Groups specifies the API groups that this webhook receives requests for. + Groups []string + // Resources specifies the API resources that this webhook receives requests for. + Resources []string + // Verbs specifies the Kubernetes API verbs that this webhook receives requests for. + // + // Only modification-like verbs may be specified. + // May be "create", "update", "delete", "connect", or "*" (for all). + Verbs []string + // Versions specifies the API versions that this webhook receives requests for. + Versions []string + + // Name indicates the name of this webhook configuration. Should be a domain with at least three segments separated by dots + Name string + + // Path specifies that path that the API server should connect to this webhook on. Must be + // prefixed with a '/validate-' or '/mutate-' depending on the type, and followed by + // $GROUP-$VERSION-$KIND where all values are lower-cased and the periods in the group + // are substituted for hyphens. For example, a validating webhook path for type + // batch.tutorial.kubebuilder.io/v1,Kind=CronJob would be + // /validate-batch-tutorial-kubebuilder-io-v1-cronjob + Path string + + // WebhookVersions specifies the target API versions of the {Mutating,Validating}WebhookConfiguration objects + // itself to generate. The only supported value is v1. Defaults to v1. + WebhookVersions []string `marker:"webhookVersions,optional"` + + // AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` + // versions the Webhook expects. + AdmissionReviewVersions []string `marker:"admissionReviewVersions"` + + // ReinvocationPolicy allows mutating webhooks to request reinvocation after other mutations + // + // To allow mutating admission plugins to observe changes made by other plugins, + // built-in mutating admission plugins are re-run if a mutating webhook modifies + // an object, and mutating webhooks can specify a reinvocationPolicy to control + // whether they are reinvoked as well. + ReinvocationPolicy string `marker:"reinvocationPolicy,optional"` +} + +// verbToAPIVariant converts a marker's verb to the proper value for the API. +// Unrecognized verbs are passed through. +func verbToAPIVariant(verbRaw string) admissionregv1.OperationType { + switch strings.ToLower(verbRaw) { + case strings.ToLower(string(admissionregv1.Create)): + return admissionregv1.Create + case strings.ToLower(string(admissionregv1.Update)): + return admissionregv1.Update + case strings.ToLower(string(admissionregv1.Delete)): + return admissionregv1.Delete + case strings.ToLower(string(admissionregv1.Connect)): + return admissionregv1.Connect + case strings.ToLower(string(admissionregv1.OperationAll)): + return admissionregv1.OperationAll + default: + return admissionregv1.OperationType(verbRaw) + } +} + +// ToMutatingWebhook converts this rule to its Kubernetes API form. +func (c Config) ToMutatingWebhook() (admissionregv1.MutatingWebhook, error) { + if !c.Mutating { + return admissionregv1.MutatingWebhook{}, fmt.Errorf("%s is a validating webhook", c.Name) + } + + matchPolicy, err := c.matchPolicy() + if err != nil { + return admissionregv1.MutatingWebhook{}, err + } + + return admissionregv1.MutatingWebhook{ + Name: c.Name, + Rules: c.rules(), + FailurePolicy: c.failurePolicy(), + MatchPolicy: matchPolicy, + ClientConfig: c.clientConfig(), + SideEffects: c.sideEffects(), + AdmissionReviewVersions: c.AdmissionReviewVersions, + ReinvocationPolicy: c.reinvocationPolicy(), + }, nil +} + +// ToValidatingWebhook converts this rule to its Kubernetes API form. +func (c Config) ToValidatingWebhook() (admissionregv1.ValidatingWebhook, error) { + if c.Mutating { + return admissionregv1.ValidatingWebhook{}, fmt.Errorf("%s is a mutating webhook", c.Name) + } + + matchPolicy, err := c.matchPolicy() + if err != nil { + return admissionregv1.ValidatingWebhook{}, err + } + + return admissionregv1.ValidatingWebhook{ + Name: c.Name, + Rules: c.rules(), + FailurePolicy: c.failurePolicy(), + MatchPolicy: matchPolicy, + ClientConfig: c.clientConfig(), + SideEffects: c.sideEffects(), + AdmissionReviewVersions: c.AdmissionReviewVersions, + }, nil +} + +// rules returns the configuration of what operations on what +// resources/subresources a webhook should care about. +func (c Config) rules() []admissionregv1.RuleWithOperations { + whConfig := admissionregv1.RuleWithOperations{ + Rule: admissionregv1.Rule{ + APIGroups: c.Groups, + APIVersions: c.Versions, + Resources: c.Resources, + }, + Operations: make([]admissionregv1.OperationType, len(c.Verbs)), + } + + for i, verbRaw := range c.Verbs { + whConfig.Operations[i] = verbToAPIVariant(verbRaw) + } + + // fix the group names, since letting people type "core" is nice + for i, group := range whConfig.APIGroups { + if group == "core" { + whConfig.APIGroups[i] = "" + } + } + + return []admissionregv1.RuleWithOperations{whConfig} +} + +// failurePolicy converts the string value to the proper value for the API. +// Unrecognized values are passed through. +func (c Config) failurePolicy() *admissionregv1.FailurePolicyType { + var failurePolicy admissionregv1.FailurePolicyType + switch strings.ToLower(c.FailurePolicy) { + case strings.ToLower(string(admissionregv1.Ignore)): + failurePolicy = admissionregv1.Ignore + case strings.ToLower(string(admissionregv1.Fail)): + failurePolicy = admissionregv1.Fail + default: + failurePolicy = admissionregv1.FailurePolicyType(c.FailurePolicy) + } + return &failurePolicy +} + +// matchPolicy converts the string value to the proper value for the API. +func (c Config) matchPolicy() (*admissionregv1.MatchPolicyType, error) { + var matchPolicy admissionregv1.MatchPolicyType + switch strings.ToLower(c.MatchPolicy) { + case strings.ToLower(string(admissionregv1.Exact)): + matchPolicy = admissionregv1.Exact + case strings.ToLower(string(admissionregv1.Equivalent)): + matchPolicy = admissionregv1.Equivalent + case "": + return nil, nil + default: + return nil, fmt.Errorf("unknown value %q for matchPolicy", c.MatchPolicy) + } + return &matchPolicy, nil +} + +// clientConfig returns the client config for a webhook. +func (c Config) clientConfig() admissionregv1.WebhookClientConfig { + path := c.Path + return admissionregv1.WebhookClientConfig{ + Service: &admissionregv1.ServiceReference{ + Name: "webhook-service", + Namespace: "system", + Path: &path, + }, + } +} + +// sideEffects returns the sideEffects config for a webhook. +func (c Config) sideEffects() *admissionregv1.SideEffectClass { + var sideEffects admissionregv1.SideEffectClass + switch strings.ToLower(c.SideEffects) { + case strings.ToLower(string(admissionregv1.SideEffectClassNone)): + sideEffects = admissionregv1.SideEffectClassNone + case strings.ToLower(string(admissionregv1.SideEffectClassNoneOnDryRun)): + sideEffects = admissionregv1.SideEffectClassNoneOnDryRun + case strings.ToLower(string(admissionregv1.SideEffectClassSome)): + sideEffects = admissionregv1.SideEffectClassSome + case "": + return nil + default: + return nil + } + return &sideEffects +} + +// reinvocationPolicy returns the reinvocationPolicy config for a mutating webhook. +func (c Config) reinvocationPolicy() *admissionregv1.ReinvocationPolicyType { + var reinvocationPolicy admissionregv1.ReinvocationPolicyType + switch strings.ToLower(c.ReinvocationPolicy) { + case strings.ToLower(string(admissionregv1.NeverReinvocationPolicy)): + reinvocationPolicy = admissionregv1.NeverReinvocationPolicy + case strings.ToLower(string(admissionregv1.IfNeededReinvocationPolicy)): + reinvocationPolicy = admissionregv1.IfNeededReinvocationPolicy + default: + return nil + } + return &reinvocationPolicy +} + +// webhookVersions returns the target API versions of the {Mutating,Validating}WebhookConfiguration objects for a webhook. +func (c Config) webhookVersions() ([]string, error) { + // If WebhookVersions is not specified, we default it to `v1`. + if len(c.WebhookVersions) == 0 { + return []string{defaultWebhookVersion}, nil + } + supportedWebhookVersions := sets.NewString(supportedWebhookVersions()...) + for _, version := range c.WebhookVersions { + if !supportedWebhookVersions.Has(version) { + return nil, fmt.Errorf("unsupported webhook version: %s", version) + } + } + return sets.NewString(c.WebhookVersions...).UnsortedList(), nil +} + +// +controllertools:marker:generateHelp + +// Generator generates (partial) {Mutating,Validating}WebhookConfiguration objects. +type Generator struct{} + +func (Generator) RegisterMarkers(into *markers.Registry) error { + if err := into.Register(ConfigDefinition); err != nil { + return err + } + into.AddHelp(ConfigDefinition, Config{}.Help()) + return nil +} + +func (Generator) Generate(ctx *genall.GenerationContext) error { + supportedWebhookVersions := supportedWebhookVersions() + mutatingCfgs := make(map[string][]admissionregv1.MutatingWebhook, len(supportedWebhookVersions)) + validatingCfgs := make(map[string][]admissionregv1.ValidatingWebhook, len(supportedWebhookVersions)) + for _, root := range ctx.Roots { + markerSet, err := markers.PackageMarkers(ctx.Collector, root) + if err != nil { + root.AddError(err) + } + + for _, cfg := range markerSet[ConfigDefinition.Name] { + cfg := cfg.(Config) + webhookVersions, err := cfg.webhookVersions() + if err != nil { + return err + } + if cfg.Mutating { + w, err := cfg.ToMutatingWebhook() + if err != nil { + return err + } + for _, webhookVersion := range webhookVersions { + mutatingCfgs[webhookVersion] = append(mutatingCfgs[webhookVersion], w) + } + } else { + w, err := cfg.ToValidatingWebhook() + if err != nil { + return err + } + for _, webhookVersion := range webhookVersions { + validatingCfgs[webhookVersion] = append(validatingCfgs[webhookVersion], w) + } + } + } + } + + versionedWebhooks := make(map[string][]interface{}, len(supportedWebhookVersions)) + for _, version := range supportedWebhookVersions { + if cfgs, ok := mutatingCfgs[version]; ok { + // The only possible version in supportedWebhookVersions is v1, + // so use it for all versioned types in this context. + objRaw := &admissionregv1.MutatingWebhookConfiguration{} + objRaw.SetGroupVersionKind(schema.GroupVersionKind{ + Group: admissionregv1.SchemeGroupVersion.Group, + Version: version, + Kind: "MutatingWebhookConfiguration", + }) + objRaw.SetName("mutating-webhook-configuration") + objRaw.Webhooks = cfgs + for i := range objRaw.Webhooks { + // SideEffects is required in admissionregistration/v1, if this is not set or set to `Some` or `Known`, + // return an error + if err := checkSideEffectsForV1(objRaw.Webhooks[i].SideEffects); err != nil { + return err + } + // AdmissionReviewVersions is required in admissionregistration/v1, if this is not set, + // return an error + if len(objRaw.Webhooks[i].AdmissionReviewVersions) == 0 { + return fmt.Errorf("AdmissionReviewVersions is mandatory for v1 {Mutating,Validating}WebhookConfiguration") + } + } + versionedWebhooks[version] = append(versionedWebhooks[version], objRaw) + } + + if cfgs, ok := validatingCfgs[version]; ok { + // The only possible version in supportedWebhookVersions is v1, + // so use it for all versioned types in this context. + objRaw := &admissionregv1.ValidatingWebhookConfiguration{} + objRaw.SetGroupVersionKind(schema.GroupVersionKind{ + Group: admissionregv1.SchemeGroupVersion.Group, + Version: version, + Kind: "ValidatingWebhookConfiguration", + }) + objRaw.SetName("validating-webhook-configuration") + objRaw.Webhooks = cfgs + for i := range objRaw.Webhooks { + // SideEffects is required in admissionregistration/v1, if this is not set or set to `Some` or `Known`, + // return an error + if err := checkSideEffectsForV1(objRaw.Webhooks[i].SideEffects); err != nil { + return err + } + // AdmissionReviewVersions is required in admissionregistration/v1, if this is not set, + // return an error + if len(objRaw.Webhooks[i].AdmissionReviewVersions) == 0 { + return fmt.Errorf("AdmissionReviewVersions is mandatory for v1 {Mutating,Validating}WebhookConfiguration") + } + } + versionedWebhooks[version] = append(versionedWebhooks[version], objRaw) + } + } + + for k, v := range versionedWebhooks { + var fileName string + if k == defaultWebhookVersion { + fileName = fmt.Sprintf("manifests.yaml") + } else { + fileName = fmt.Sprintf("manifests.%s.yaml", k) + } + if err := ctx.WriteYAML(fileName, v); err != nil { + return err + } + } + return nil +} + +func checkSideEffectsForV1(sideEffects *admissionregv1.SideEffectClass) error { + if sideEffects == nil { + return fmt.Errorf("SideEffects is required for creating v1 {Mutating,Validating}WebhookConfiguration") + } + if *sideEffects == admissionregv1.SideEffectClassUnknown || + *sideEffects == admissionregv1.SideEffectClassSome { + return fmt.Errorf("SideEffects should not be set to `Some` or `Unknown` for v1 {Mutating,Validating}WebhookConfiguration") + } + return nil +} diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/webhook/zz_generated.markerhelp.go b/vendor/sigs.k8s.io/controller-tools/pkg/webhook/zz_generated.markerhelp.go new file mode 100644 index 0000000000..8e1ef419d9 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-tools/pkg/webhook/zz_generated.markerhelp.go @@ -0,0 +1,110 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by helpgen. DO NOT EDIT. + +package webhook + +import ( + "sigs.k8s.io/controller-tools/pkg/markers" +) + +func (Config) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "Webhook", + DetailedHelp: markers.DetailedHelp{ + Summary: "specifies how a webhook should be served. ", + Details: "It specifies only the details that are intrinsic to the application serving it (e.g. the resources it can handle, or the path it serves on).", + }, + FieldHelp: map[string]markers.DetailedHelp{ + "Mutating": { + Summary: "marks this as a mutating webhook (it's validating only if false) ", + Details: "Mutating webhooks are allowed to change the object in their response, and are called *before* all validating webhooks. Mutating webhooks may choose to reject an object, similarly to a validating webhook.", + }, + "FailurePolicy": { + Summary: "specifies what should happen if the API server cannot reach the webhook. ", + Details: "It may be either \"ignore\" (to skip the webhook and continue on) or \"fail\" (to reject the object in question).", + }, + "MatchPolicy": { + Summary: "defines how the \"rules\" list is used to match incoming requests. Allowed values are \"Exact\" (match only if it exactly matches the specified rule) or \"Equivalent\" (match a request if it modifies a resource listed in rules, even via another API group or version).", + Details: "", + }, + "SideEffects": { + Summary: "specify whether calling the webhook will have side effects. This has an impact on dry runs and `kubectl diff`: if the sideEffect is \"Unknown\" (the default) or \"Some\", then the API server will not call the webhook on a dry-run request and fails instead. If the value is \"None\", then the webhook has no side effects and the API server will call it on dry-run. If the value is \"NoneOnDryRun\", then the webhook is responsible for inspecting the \"dryRun\" property of the AdmissionReview sent in the request, and avoiding side effects if that value is \"true.\"", + Details: "", + }, + "Groups": { + Summary: "specifies the API groups that this webhook receives requests for.", + Details: "", + }, + "Resources": { + Summary: "specifies the API resources that this webhook receives requests for.", + Details: "", + }, + "Verbs": { + Summary: "specifies the Kubernetes API verbs that this webhook receives requests for. ", + Details: "Only modification-like verbs may be specified. May be \"create\", \"update\", \"delete\", \"connect\", or \"*\" (for all).", + }, + "Versions": { + Summary: "specifies the API versions that this webhook receives requests for.", + Details: "", + }, + "Name": { + Summary: "indicates the name of this webhook configuration. Should be a domain with at least three segments separated by dots", + Details: "", + }, + "Path": { + Summary: "specifies that path that the API server should connect to this webhook on. Must be prefixed with a '/validate-' or '/mutate-' depending on the type, and followed by $GROUP-$VERSION-$KIND where all values are lower-cased and the periods in the group are substituted for hyphens. For example, a validating webhook path for type batch.tutorial.kubebuilder.io/v1,Kind=CronJob would be /validate-batch-tutorial-kubebuilder-io-v1-cronjob", + Details: "", + }, + "WebhookVersions": { + Summary: "specifies the target API versions of the {Mutating,Validating}WebhookConfiguration objects itself to generate. The only supported value is v1. Defaults to v1.", + Details: "", + }, + "AdmissionReviewVersions": { + Summary: "is an ordered list of preferred `AdmissionReview` versions the Webhook expects.", + Details: "", + }, + "ReinvocationPolicy": { + Summary: "allows mutating webhooks to request reinvocation after other mutations ", + Details: "To allow mutating admission plugins to observe changes made by other plugins, built-in mutating admission plugins are re-run if a mutating webhook modifies an object, and mutating webhooks can specify a reinvocationPolicy to control whether they are reinvoked as well.", + }, + }, + } +} + +func (Generator) Help() *markers.DefinitionHelp { + return &markers.DefinitionHelp{ + Category: "", + DetailedHelp: markers.DetailedHelp{ + Summary: "generates (partial) {Mutating,Validating}WebhookConfiguration objects.", + Details: "", + }, + FieldHelp: map[string]markers.DetailedHelp{ + "HeaderFile": { + Summary: "specifies the header text (e.g. license) to prepend to generated files.", + Details: "", + }, + "Year": { + Summary: "specifies the year to substitute for \" YEAR\" in the header file.", + Details: "", + }, + }, + } +}