apiVersion: v1 kind: Namespace metadata: labels: app.kubernetes.io/instance: ibm-spectrum-scale-csi-operator app.kubernetes.io/managed-by: ibm-spectrum-scale-csi-operator app.kubernetes.io/name: ibm-spectrum-scale-csi-operator product: ibm-spectrum-scale-csi release: ibm-spectrum-scale-csi-operator name: ibm-spectrum-scale-csi --- apiVersion: v1 kind: Namespace metadata: labels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator control-plane: controller-manager name: ibm-spectrum-scale-operator --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.4.1 creationTimestamp: null labels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator name: callhomes.scale.spectrum.ibm.com spec: group: scale.spectrum.ibm.com names: categories: - scale kind: Callhome listKind: CallhomeList plural: callhomes singular: callhome scope: Namespaced versions: - additionalPrinterColumns: - description: 'mode is the current mode of operation: test, production, or disabled.' jsonPath: .status.mode name: Mode type: string - description: Company name of the company to which the contact person belongs. jsonPath: .spec.companyName name: Company Name type: string - description: Customer ID of the system administrator who can be contacted by the IBM Support. jsonPath: .spec.customerID name: Customer ID priority: 10 type: string - description: Company ID of the system administrator who can be contacted by the IBM Support. jsonPath: .spec.companyEmail name: Company Email type: string - description: Country Code two-letter upper-case country codes as defined in ISO 3166-1 alpha-2. jsonPath: .spec.countryCode name: Country Code priority: 10 type: string name: v1beta1 schema: openAPIV3Schema: description: Callhome is the Schema for the callhomes API 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: spec defines the desired state of Callhome properties: companyEmail: description: companyEmail address of the system administrator who can be contacted by the IBM Support. Usually this e-mail address is directed towards a group or task e-mail address. For example, itsupport@mycompanyname.com. type: string companyName: description: 'companyName of the company to which the contact person belongs. This name can consist of any alphanumeric characters and these non-alphanumeric characters: ''-'', ''_'', ''.'', '' '', '',''.' type: string countryCode: description: countryCode two-letter upper-case country codes as defined in ISO 3166-1 alpha-2. type: string customerID: description: 'customerID of the system administrator who can be contacted by the IBM Support. This can consist of any alphanumeric characters and these non-alphanumeric characters: ''-'', ''_'', ''.''.' type: string license: description: license must be accepted by the end user to enable Callhome. properties: accept: description: "By accepting this license, you agree to allow IBM and its subsidiaries to store and use your contact information and your support information anywhere they do business worldwide. For more information, please refer to the Program license agreement and documentation. \n Set to true to agree the license and enable Callhome. Set to false to disable Callhome." type: boolean required: - accept type: object proxy: description: proxy defines a proxy server configuration. properties: host: description: host of poxy server as hostname or IP address type: string port: description: port of proxy server type: integer secretName: description: secretName of a basic-auth secret, which contains username and password for proxy server type: string required: - host - port type: object type: default: production description: Marks the cluster as a test or a production system. In case this parameter is not explicitly set, the value is set to production by default. enum: - production - test type: string required: - companyEmail - companyName - countryCode - customerID - license type: object status: description: status defines the observed state of Callhome properties: conditions: items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: lastTransitionTime: description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array mode: description: 'mode is the current mode of operation: test, production, or disabled.' enum: - production - test - disabled type: string required: - mode type: object type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.4.1 creationTimestamp: null labels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator name: clusters.scale.spectrum.ibm.com spec: group: scale.spectrum.ibm.com names: categories: - scale kind: Cluster listKind: ClusterList plural: clusters shortNames: - gpfs singular: cluster scope: Cluster versions: - name: v1beta1 schema: openAPIV3Schema: description: Cluster is the Schema for the clusters API 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: spec defines the desired state of Cluster properties: daemon: description: Daemon will tell the operator how to configure the gpfs daemons properties: clusterNameOverride: description: clusterName overrides the default name, which is that of the Daemon resource itself postpended with any resolved domain suffix. If the clusterName contains any "." characters then it will be used as-is. maxLength: 115 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ type: string clusterProfile: description: IBM Spectrum Scale configuration parameters for the cluster. Changing these values is unsupported and should not be changed unless advised by IBM Support properties: afmAsyncDelay: type: string afmDIO: type: string afmHashVersion: type: string afmMaxParallelRecoveries: type: string controlSetxattrImmutableSELinux: type: string enforceFilesetQuotaOnRoot: type: string ignorePrefetchLUNCount: type: string initPrefetchBuffers: type: string maxBufferDescs: type: string maxMBpS: type: string maxTcpConnsPerNodeConn: type: string maxblocksize: type: string nsdMaxWorkerThreads: type: string nsdMinWorkerThreads: type: string nsdMultiQueue: type: string nsdRAIDBlockDeviceMaxSectorsKB: type: string nsdRAIDBlockDeviceNrRequests: type: string nsdRAIDBlockDeviceQueueDepth: type: string nsdRAIDBlockDeviceScheduler: type: string nsdRAIDBufferPoolSizePct: type: string nsdRAIDDefaultGeneratedFD: type: string nsdRAIDDiskCheckVWCE: type: string nsdRAIDEventLogToConsole: type: string nsdRAIDFlusherFWLogHighWatermarkMB: type: string nsdRAIDMasterBufferPoolSize: type: string nsdRAIDMaxPdiskQueueDepth: type: string nsdRAIDNonStealableBufPct: type: string nsdRAIDReconstructAggressiveness: type: string nsdRAIDSmallThreadRatio: type: string nsdRAIDThreadsPerQueue: type: string nsdRAIDTracks: type: string nsdSmallThreadRatio: type: string nspdBufferMemPerQueue: type: string nspdQueues: type: string nspdThreadsPerQueue: type: string numaMemoryInterleave: type: string pagepoolMaxPhysMemPct: type: string panicOnIOHang: type: string pitWorkerThreadsPerNode: type: string prefetchPct: type: string prefetchThreads: type: string prefetchTimeout: type: string tscCmdPortRange: type: string type: object hostAliases: description: hostAliases that will be added to hosts file for daemon pods items: properties: hostname: description: Hostname for the associated IP address. type: string ip: description: IP address of the host file entry. type: string required: - hostname - ip type: object type: array nodeSelector: additionalProperties: type: string description: nodeSelector will be applied to daemon pods type: object nodeSelectorExpressions: description: nodeSelectorExpressions that will apply to daemon pods items: description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: The label key that the selector applies to. type: string operator: description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. type: string values: description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array roles: description: roles specify the IBM Spectrum Scale configuration parameters for nodes that apply to a role. Specifying configuration parameters for roles is optional and does overwrite a set of default parameters. items: properties: name: description: Name of the role. Only afm, storage or client are allowed. enum: - afm - storage - client type: string profile: description: IBM Spectrum Scale node-scoped configuration parameters. Changing these values is unsupported and should not be changed unless advised by IBM Support properties: afmMaxParallelRecoveries: type: string controlSetxattrImmutableSELinux: type: string ignorePrefetchLUNCount: type: string initPrefetchBuffers: type: string maxBufferDescs: type: string maxMBpS: type: string maxTcpConnsPerNodeConn: type: string maxblocksize: type: string nsdMaxWorkerThreads: type: string nsdMinWorkerThreads: type: string nsdMultiQueue: type: string nsdRAIDBlockDeviceMaxSectorsKB: type: string nsdRAIDBlockDeviceNrRequests: type: string nsdRAIDBlockDeviceQueueDepth: type: string nsdRAIDBlockDeviceScheduler: type: string nsdRAIDBufferPoolSizePct: type: string nsdRAIDDefaultGeneratedFD: type: string nsdRAIDDiskCheckVWCE: type: string nsdRAIDEventLogToConsole: type: string nsdRAIDFlusherFWLogHighWatermarkMB: type: string nsdRAIDMasterBufferPoolSize: type: string nsdRAIDMaxPdiskQueueDepth: type: string nsdRAIDNonStealableBufPct: type: string nsdRAIDReconstructAggressiveness: type: string nsdRAIDSmallThreadRatio: type: string nsdRAIDThreadsPerQueue: type: string nsdRAIDTracks: type: string nsdSmallThreadRatio: type: string nspdBufferMemPerQueue: type: string nspdQueues: type: string nspdThreadsPerQueue: type: string numaMemoryInterleave: type: string pagepoolMaxPhysMemPct: type: string panicOnIOHang: type: string pitWorkerThreadsPerNode: type: string prefetchPct: type: string prefetchThreads: type: string prefetchTimeout: type: string tscCmdPortRange: type: string type: object resources: description: Resources defines the Memory/CPU resources target for the core pods properties: cpu: description: CPU is measured in cpu units (i.e 1, 2, 100m, 2500m) type: string memory: description: Memory is measured in bytes as plain integer or with kubernetes supported suffixes (i.e 128974848, 129e6, 129M, 123Mi) type: string type: object type: object type: array type: object grafanaBridge: description: GrafanaBridge will tell the operator how to configure Grafana Bridge properties: nodeSelector: additionalProperties: type: string description: nodeSelector specifies the criteria used to determine which nodes deploy grafana bridge pods. type: object tolerations: description: tolerations is applied to grafana bridge pods items: description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object gui: description: Gui will tell the operator how to configure the guis properties: nodeSelector: additionalProperties: type: string description: nodeSelector that is applied to GUI pods type: object tolerations: description: tolerations that are applied to GUI pods items: description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object license: description: license must be accepted by the end user and provides a way to specify the IBM Spectrum Scale Edition properties: accept: description: Read the license and specify "true" to accept or "false" to not accept. https://www.ibm.com/support/customer/csol/terms/?id=L-CFIE-C8WMT3.ibm.com/cgi-bin/weblap/lap.pl?l=en&popup=y&li_formnum=L-CFIE-C8WMT3&title=IBM%20License%20Agreement BY DOWNLOADING, INSTALLING, COPYING, ACCESSING, CLICKING ON AN "ACCEPT" BUTTON, OR OTHERWISE USING THE PROGRAM, LICENSEE AGREES TO THE TERMS OF THIS AGREEMENT. IF YOU ARE ACCEPTING THESE TERMS ON BEHALF OF LICENSEE, YOU REPRESENT AND WARRANT THAT YOU HAVE FULL AUTHORITY TO BIND LICENSEE TO THESE TERMS. IF YOU DO NOT AGREE TO THESE TERMS, * DO NOT DOWNLOAD, INSTALL, COPY, ACCESS, CLICK ON AN "ACCEPT" BUTTON, OR USE THE PROGRAM; AND * PROMPTLY RETURN THE UNUSED MEDIA AND DOCUMENTATION TO THE PARTY FROM WHOM IT WAS OBTAINED FOR A REFUND OF THE AMOUNT PAID. IF THE PROGRAM WAS DOWNLOADED, DESTROY ALL COPIES OF THE PROGRAM. Set to true to accept the license enum: - true type: boolean license: description: license specifies the IBM Spectrum Scale edition being used, "data-access" or "data-management". enum: - data-access - data-management - erasure-code type: string required: - accept - license type: object pmcollector: description: Pmcollector will tell the operator how to configure the pmcollectors properties: nodeSelector: additionalProperties: type: string description: nodeSelector that is applied to pmcollector pods type: object tolerations: description: tolerations that are applied to pmcollector pods items: description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object required: - license type: object status: description: status defines the observed state of Cluster properties: conditions: items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: lastTransitionTime: description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array type: object type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: labels: app.kubernetes.io/instance: ibm-spectrum-scale-csi-operator app.kubernetes.io/managed-by: ibm-spectrum-scale-csi-operator app.kubernetes.io/name: ibm-spectrum-scale-csi-operator release: ibm-spectrum-scale-csi-operator name: csiscaleoperators.csi.ibm.com spec: group: csi.ibm.com names: categories: - scale kind: CSIScaleOperator listKind: CSIScaleOperatorList plural: csiscaleoperators singular: csiscaleoperator scope: Namespaced versions: - additionalPrinterColumns: - description: The Nginx Status jsonPath: .status.conditions[?(@.type="Ready")].status name: Ready type: string name: v1 schema: openAPIV3Schema: description: CSIScaleOperator is the Schema for the csiscaleoperator API 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: properties: attacher: description: Attacher image for csi (actually attaches to the storage). type: string attacherNodeSelector: description: Node selector for attacher sidecar. items: properties: key: description: Key for node selector. type: string value: description: Value for key. type: string type: object type: array clusters: description: A collection of gpfs cluster properties for the csi driver to mount. items: properties: cacert: description: A string specifying a cacert resource name. type: string id: description: The cluster id of the gpfs cluster specified (mandatory). type: string primary: description: The primary file system for the GPFS cluster. properties: inodeLimit: description: Inode limit for Primary Fileset. type: string primaryFs: description: The name of the primary filesystem. type: string primaryFset: description: The name of the primary fileset, created in primaryFs. type: string remoteCluster: description: Remote cluster ID. type: string type: object restApi: description: A collection of targets for REST calls. items: properties: guiHost: description: The hostname of the REST server. type: string guiPort: description: The port number running the REST server. type: integer type: object type: array secrets: description: A string specifying a secret resource name. type: string secureSslMode: description: Require a secure SSL connection to connect to GPFS. type: boolean type: object required: - id type: array csipspname: description: PSP name for IBM Spectrum Scale CSI pods. type: string driverRegistrar: description: Sidecar container image for the csi spectrum scale plugin pods. type: string imagePullSecrets: description: A passthrough option that distributes an imagePullSecrets array to the containers generated by the csi scale operator. Please refer to official k8s documentation for your environment for more details. items: type: string type: array kubeletRootDirPath: description: The kubelet root directory path. type: string livenessprobe: description: Sidecar liveness probe image for the csi spectrum scale plugin pods. type: string nodeMapping: description: Mapping of K8s node with SpectrumScale node. items: properties: k8sNode: description: K8s node name. type: string spectrumscaleNode: description: SpectrumScale node name. type: string type: object type: array pluginNodeSelector: description: Node selector for SpectrumScale CSI Plugin. items: properties: key: description: Key for node selector. type: string value: description: Value for key. type: string type: object type: array provisioner: description: Provisioner image for csi (actually issues provision requests). type: string provisionerNodeSelector: description: Node selector for provisioner sidecar. items: properties: key: description: Key for node selector. type: string value: description: Value for key. type: string type: object type: array resizer: description: Resizer image for csi (issues volume resize requests). type: string resizerNodeSelector: description: Node selector for resizer sidecar. items: properties: key: description: Key for node selector. type: string value: description: Value for key. type: string type: object type: array secretCounter: description: An internal counter used by the operator to trigger reloads on secret change. type: integer snapshotter: description: Snapshotter image for csi (issues volume snapshot requests). type: string snapshotterNodeSelector: description: Node selector for snapshotter sidecar. items: properties: key: description: Key for node selector. type: string value: description: Value for key. type: string type: object type: array spectrumScale: description: Image name for the csi spectrum scale plugin container. type: string tolerations: description: Array of tolerations that will be distribued to CSI pods. Please refer to official k8s documentation for your environment for more details. items: properties: effect: description: Valid values are "NoSchedule", "PreferNoSchedule" and "NoExecute". An empty effect matches all effects with given key. enum: - NoSchedule - PreferNoSchedule - NoExecute - "" type: string key: description: Node taint key name type: string operator: description: Valid values are "Exists" and "Equal". enum: - Exists - Equal type: string tolerationSeconds: description: Used only when effect is "NoExecute". It determines how long the pod will stay bound to the node after the taint is added. type: integer value: description: Required if operator is "Equal" type: string required: - key - operator - effect type: object type: array trigger: description: A generic trigger to be used in kickin off the ansible operator. type: string type: object status: properties: conditions: description: The active status of the operator items: properties: Ready: description: Indicates that the plugin is running. type: boolean type: object type: array type: object type: object served: true storage: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.4.1 creationTimestamp: null labels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator name: daemons.scale.spectrum.ibm.com spec: group: scale.spectrum.ibm.com names: categories: - scale kind: Daemon listKind: DaemonList plural: daemons shortNames: - fsd - mmfsd singular: daemon scope: Namespaced versions: - additionalPrinterColumns: - description: the name of the IBM Spectrum Scale cluster jsonPath: .status.clusterName name: Cluster Name type: string - description: the Cluster ID of the IBM Spectrum Scale cluster jsonPath: .status.clusterID name: Cluster ID type: integer name: v1beta1 schema: openAPIV3Schema: description: Daemon is the Schema for the daemons API 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: spec defines the desired state of Daemon properties: clusterNameOverride: description: clusterName overrides the default name, which is that of the Daemon resource itself postpended with any resolved domain suffix. If the clusterName contains any "." characters then it will be used as-is. maxLength: 115 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ type: string clusterProfile: description: IBM Spectrum Scale configuration parameters for the cluster. Changing these values is unsupported and should not be changed unless advised by IBM Support properties: afmAsyncDelay: type: string afmDIO: type: string afmHashVersion: type: string afmMaxParallelRecoveries: type: string controlSetxattrImmutableSELinux: type: string enforceFilesetQuotaOnRoot: type: string ignorePrefetchLUNCount: type: string initPrefetchBuffers: type: string maxBufferDescs: type: string maxMBpS: type: string maxTcpConnsPerNodeConn: type: string maxblocksize: type: string nsdMaxWorkerThreads: type: string nsdMinWorkerThreads: type: string nsdMultiQueue: type: string nsdRAIDBlockDeviceMaxSectorsKB: type: string nsdRAIDBlockDeviceNrRequests: type: string nsdRAIDBlockDeviceQueueDepth: type: string nsdRAIDBlockDeviceScheduler: type: string nsdRAIDBufferPoolSizePct: type: string nsdRAIDDefaultGeneratedFD: type: string nsdRAIDDiskCheckVWCE: type: string nsdRAIDEventLogToConsole: type: string nsdRAIDFlusherFWLogHighWatermarkMB: type: string nsdRAIDMasterBufferPoolSize: type: string nsdRAIDMaxPdiskQueueDepth: type: string nsdRAIDNonStealableBufPct: type: string nsdRAIDReconstructAggressiveness: type: string nsdRAIDSmallThreadRatio: type: string nsdRAIDThreadsPerQueue: type: string nsdRAIDTracks: type: string nsdSmallThreadRatio: type: string nspdBufferMemPerQueue: type: string nspdQueues: type: string nspdThreadsPerQueue: type: string numaMemoryInterleave: type: string pagepoolMaxPhysMemPct: type: string panicOnIOHang: type: string pitWorkerThreadsPerNode: type: string prefetchPct: type: string prefetchThreads: type: string prefetchTimeout: type: string tscCmdPortRange: type: string type: object edition: description: It specifies the IBM Spectrum Scale edition, "data-access" or "data-management". enum: - data-access - data-management - erasure-code type: string hostAliases: description: hostAliases that will be added to hosts file for daemon pods items: properties: hostname: description: Hostname for the associated IP address. type: string ip: description: IP address of the host file entry. type: string required: - hostname - ip type: object type: array images: description: DEPRECATED core and init image pair that daemon will use with respect to edition specified by user properties: core: type: string coreInit: type: string type: object nodeSelector: additionalProperties: type: string description: nodeSelector will be applied to daemon pods type: object nodeSelectorExpressions: description: nodeSelectorExpressions that will apply to daemon pods items: description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: The label key that the selector applies to. type: string operator: description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. type: string values: description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array roles: description: roles specify the IBM Spectrum Scale configuration parameters for nodes that apply to a role. Specifying configuration parameters for roles is optional and does overwrite a set of default parameters. items: properties: name: description: Name of the role. Only afm, storage or client are allowed. enum: - afm - storage - client type: string profile: description: IBM Spectrum Scale node-scoped configuration parameters. Changing these values is unsupported and should not be changed unless advised by IBM Support properties: afmMaxParallelRecoveries: type: string controlSetxattrImmutableSELinux: type: string ignorePrefetchLUNCount: type: string initPrefetchBuffers: type: string maxBufferDescs: type: string maxMBpS: type: string maxTcpConnsPerNodeConn: type: string maxblocksize: type: string nsdMaxWorkerThreads: type: string nsdMinWorkerThreads: type: string nsdMultiQueue: type: string nsdRAIDBlockDeviceMaxSectorsKB: type: string nsdRAIDBlockDeviceNrRequests: type: string nsdRAIDBlockDeviceQueueDepth: type: string nsdRAIDBlockDeviceScheduler: type: string nsdRAIDBufferPoolSizePct: type: string nsdRAIDDefaultGeneratedFD: type: string nsdRAIDDiskCheckVWCE: type: string nsdRAIDEventLogToConsole: type: string nsdRAIDFlusherFWLogHighWatermarkMB: type: string nsdRAIDMasterBufferPoolSize: type: string nsdRAIDMaxPdiskQueueDepth: type: string nsdRAIDNonStealableBufPct: type: string nsdRAIDReconstructAggressiveness: type: string nsdRAIDSmallThreadRatio: type: string nsdRAIDThreadsPerQueue: type: string nsdRAIDTracks: type: string nsdSmallThreadRatio: type: string nspdBufferMemPerQueue: type: string nspdQueues: type: string nspdThreadsPerQueue: type: string numaMemoryInterleave: type: string pagepoolMaxPhysMemPct: type: string panicOnIOHang: type: string pitWorkerThreadsPerNode: type: string prefetchPct: type: string prefetchThreads: type: string prefetchTimeout: type: string tscCmdPortRange: type: string type: object resources: description: Resources defines the Memory/CPU resources target for the core pods properties: cpu: description: CPU is measured in cpu units (i.e 1, 2, 100m, 2500m) type: string memory: description: Memory is measured in bytes as plain integer or with kubernetes supported suffixes (i.e 128974848, 129e6, 129M, 123Mi) type: string type: object type: object type: array required: - edition type: object status: description: status defines the observed state of Daemon properties: clusterID: description: ID representing GPFS cluster type: string clusterName: description: Name of GPFS cluster type: string conditions: items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: lastTransitionTime: description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array type: object type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.4.1 creationTimestamp: null labels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator name: encryptionconfigs.scale.spectrum.ibm.com spec: group: scale.spectrum.ibm.com names: kind: EncryptionConfig listKind: EncryptionConfigList plural: encryptionconfigs shortNames: - ec singular: encryptionconfig scope: Namespaced versions: - name: v1beta1 schema: openAPIV3Schema: 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: spec defines the desired state of EncryptionConfig properties: cacert: description: cacert is the name of the ConfigMap storing CA and endpoint certificates to be used while adding/renewing key server certificate chain. type: string client: description: client is the Key client to communicate with the key Server. maxLength: 16 type: string filesystems: description: filesystems is a list of filesystem to be encrypted. items: properties: algorithm: default: DEFAULTNISTSP800131A description: algorithm specifies the algorithm to be used for encryption. Valid values are “DEFAULTNISTSP800131AFAST” and “DEFAULTNISTSP800131A”. enum: - DEFAULTNISTSP800131A - DEFAULTNISTSP800131AFAST type: string name: description: name is the name of the filesystem. type: string required: - name type: object type: array port: default: 9443 description: port can be used to provide a non default port for key Server. type: integer remoteRKM: description: remoteRKM is the RKM ID from the remote cluster corresponding to given key server and tenant maxLength: 21 type: string secret: description: secret is the name of the basic-auth secret containing the username and password for the key server. type: string server: description: server is the key server name to configure for encryption. type: string tenant: description: 'tenant is the default tenant name to the key server. This name can consist of any alphanumeric characters and these non-alphanumeric characters: ''_''.' maxLength: 16 type: string required: - client - secret - server - tenant type: object status: description: status defines the observed state of EncryptionConfig properties: conditions: items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: lastTransitionTime: description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array type: object type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.4.1 creationTimestamp: null labels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator name: filesystems.scale.spectrum.ibm.com spec: group: scale.spectrum.ibm.com names: categories: - scale kind: Filesystem listKind: FilesystemList plural: filesystems shortNames: - fs singular: filesystem scope: Namespaced versions: - name: v1beta1 schema: openAPIV3Schema: description: Filesystem is the Schema for the filesystems API 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: spec defines the desired state of Filesystem properties: remote: description: remote specifies the filesystem will be a remote mounted filesystem properties: cluster: description: cluster is the name of the RemoteCluster resource maxLength: 128 type: string fs: description: fs is the name of the filesystem on the RemoteCluster to mount type: string required: - cluster - fs type: object vdiskNSD: description: vdiskNSD specifies the filesystem will be a vdiskNSD filesystem properties: vdiskSets: description: vdisksets defines the desired state of vdisksets that comprise the vdiskNSD filesystem items: properties: blockSize: description: This is the file system block size (vdisk track size) for members of the vdisk set. It is constrained by the selected RAID code. Valid values for 3WayReplication and 4WayReplication are 256k, 512k, 1m, or 2m. Valid values for 4+2P and 4+3P are 512k, 1m, 2m, 4m, or 8m. Valid values for 8+2P and 8+3P are 512k, 1m, 2m, 4m, 8m, or 16m. enum: - 256k - 512k - 1m - 2m - 4m - 8m - 16m - 256K - 512K - 1M - 2M - 4M - 8M - 16M type: string declusteredArray: default: DA1 description: All recovery groups for which this vdisk set is defined must have a declustered array with this name where this vdisk set's members are created. The expectation is that a vdisk set extends across structurally identical recovery groups where the named declustered array has the same characteristics in each recovery group. If there is only one user declustered array in each recovery group, it is named DA1 and this is the default. If there is more than one user declustered array in a recovery group, there is no default and a declustered array name must be specified. type: string nsdUsage: default: dataAndMetadata description: This is the IBM Spectrum Scale file system data usage for the NSD. Valid values are dataAndMetadata, metadataOnly, and dataOnly. The default is dataAndMetadata. enum: - dataAndMetadata - metadataOnly - dataOnly type: string raidCode: description: 'This is the vdisk RAID code for members of the vdisk set. Valid values are: 3WayReplication, 4WayReplication, 4+2P, 4+3P, 8+2P, or 8+3P' enum: - 3WayReplication - 4WayReplication - 4+2P - 4+3P - 8+2P - 8+3P type: string recoveryGroups: description: One or more recovery groups, each of which contributes one member vdisk NSD to the vdisk set. items: type: string type: array setSize: description: The vdisk set size is the desired aggregate size of the vdisk set members in one recovery group. The set size can be specified as a percentage (whole numbers from 1% to 100% using the % suffix) or as a number of bytes (a number, optionally followed by one of the base 2 suffixes K, M, G, or T). If the vdisk set size is given as a percentage, it specifies the raw size to use from the declustered array including RAID code redundancy. If the vdisk set size is given as a number of bytes, it specifies the desired usable size of the vdisk set excluding RAID code redundancy. The vdisk set size is used to calculate the usable size of a single vdisk NSD member of the vdisk set in one recovery group. It is this calculated usable size that becomes part of the vdisk set definition, so if the size of a declustered array should ever change, the size of the individual member vdisk NSDs remains constant. pattern: ^([1-9]|[1-9][0-9]|100)%$||^([0-9]*)(K|M|G|T)$||^([0-9]){1,8}$ type: string storagePool: description: If the NSD usage is dataAndMetadata or metadataOnly, the storage pool value must be system and does not need to be specified. If the NSD usage is dataOnly, the storage pool must be specified and the value may not be system. type: string type: object type: array type: object type: object status: description: status defines the observed state of Filesystem properties: conditions: items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: lastTransitionTime: description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array type: object type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.4.1 creationTimestamp: null labels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator name: grafanabridges.scale.spectrum.ibm.com spec: group: scale.spectrum.ibm.com names: categories: - scale kind: GrafanaBridge listKind: GrafanaBridgeList plural: grafanabridges shortNames: - grbridge singular: grafanabridge scope: Namespaced versions: - name: v1beta1 schema: openAPIV3Schema: description: GrafanaBridge is the Schema for the GrafanaBridges API 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: spec defines the desired state of GrafanaBridge properties: nodeSelector: additionalProperties: type: string description: nodeSelector specifies the criteria used to determine which nodes deploy grafana bridge pods. type: object tolerations: description: tolerations is applied to grafana bridge pods items: description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object status: description: status defines the observed state of GrafanaBridge properties: conditions: items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: lastTransitionTime: description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array type: object type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.4.1 creationTimestamp: null labels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator name: guis.scale.spectrum.ibm.com spec: group: scale.spectrum.ibm.com names: categories: - scale kind: Gui listKind: GuiList plural: guis singular: gui scope: Namespaced versions: - name: v1beta1 schema: openAPIV3Schema: description: Gui is the Schema for the guis API 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: spec defines the desired state of Gui properties: nodeSelector: additionalProperties: type: string description: nodeSelector that is applied to GUI pods type: object tolerations: description: tolerations that are applied to GUI pods items: description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object status: description: status defines the observed state of Gui properties: conditions: items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: lastTransitionTime: description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array type: object type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.4.1 creationTimestamp: null labels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator name: pmcollectors.scale.spectrum.ibm.com spec: group: scale.spectrum.ibm.com names: categories: - scale kind: Pmcollector listKind: PmcollectorList plural: pmcollectors shortNames: - perfmon singular: pmcollector scope: Namespaced versions: - name: v1beta1 schema: openAPIV3Schema: description: Pmcollector is the Schema for the pmcollectors API 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: spec defines the desired state of Pmcollector properties: nodeSelector: additionalProperties: type: string description: nodeSelector that is applied to pmcollector pods type: object tolerations: description: tolerations that are applied to pmcollector pods items: description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object status: description: status defines the observed state of Pmcollector properties: conditions: items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: lastTransitionTime: description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array type: object type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.4.1 creationTimestamp: null labels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator name: recoverygroups.scale.spectrum.ibm.com spec: group: scale.spectrum.ibm.com names: categories: - scale kind: RecoveryGroup listKind: RecoveryGroupList plural: recoverygroups shortNames: - rg singular: recoverygroup scope: Namespaced versions: - name: v1beta1 schema: openAPIV3Schema: description: RecoveryGroup is the Schema for the recoverygroups API 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: spec defines the desired state of RecoveryGroup type: object status: description: status defines the observed state of RecoveryGroup properties: conditions: items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: lastTransitionTime: description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array type: object type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.4.1 creationTimestamp: null labels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator name: remoteclusters.scale.spectrum.ibm.com spec: group: scale.spectrum.ibm.com names: categories: - scale kind: RemoteCluster listKind: RemoteClusterList plural: remoteclusters shortNames: - remotegpfs singular: remotecluster scope: Namespaced versions: - name: v1beta1 schema: openAPIV3Schema: description: RemoteCluster is the Schema for the remoteclusters API 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: spec defines the desired state of RemoteCluster properties: contactNodes: description: contactNodes are optional and provides a list of nodes from the storage cluster to be used as the remote cluster contact nodes. The names should be the daemon node names. If not specified, the operator will use any 3 nodes detected from the storage cluster. items: type: string type: array gui: description: gui specifies the details for the IBM Spectrum Scale Remote Cluster GUI. properties: cacert: description: cacert specifies the name of the RootCA ConfigMap. type: string csiSecretName: default: csi-remote-mount-storage-cluster-1 description: csiSecretName references the secret that contains the username and password of the CSI admin user in the ibm-spectrum-scale-csi namespace type: string host: description: host of the remote cluster REST API endpoint. This must be resolvable by DNS. type: string insecureSkipVerify: description: insecureSkipVerify controls whether a client verifies the server's certificate chain and host name. If set true, TLS is susceptible to machine-in-the-middle attacks. type: boolean port: default: 443 description: port specifies the port of the Remote Cluster. type: integer scheme: description: scheme defaults to 'https'. No other value is supported. type: string secretName: description: secretName references the secret in the ibm-spectrum-scale namespace that contains the username and password of the GUI REST interface. type: string type: object required: - gui type: object status: description: status defines the observed state of RemoteCluster properties: conditions: items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: lastTransitionTime: description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array type: object type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: [] --- apiVersion: v1 imagePullSecrets: - name: ibm-spectrum-scale-csi-registrykey kind: ServiceAccount metadata: labels: app.kubernetes.io/instance: ibm-spectrum-scale-csi-operator app.kubernetes.io/managed-by: ibm-spectrum-scale-csi-operator app.kubernetes.io/name: ibm-spectrum-scale-csi-operator product: ibm-spectrum-scale-csi release: ibm-spectrum-scale-csi-operator name: ibm-spectrum-scale-csi-operator namespace: ibm-spectrum-scale-csi --- apiVersion: v1 imagePullSecrets: - name: ibm-spectrum-scale-registrykey kind: ServiceAccount metadata: labels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator name: ibm-spectrum-scale-operator namespace: ibm-spectrum-scale-operator --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: labels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator name: ibm-spectrum-scale-leader-election-role namespace: ibm-spectrum-scale-operator rules: - apiGroups: - "" - coordination.k8s.io resources: - configmaps - leases verbs: - get - list - watch - create - update - patch - delete - apiGroups: - "" resources: - events verbs: - create - patch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: null labels: app.kubernetes.io/instance: ibm-spectrum-scale-csi-operator app.kubernetes.io/managed-by: ibm-spectrum-scale-csi-operator app.kubernetes.io/name: ibm-spectrum-scale-csi-operator product: ibm-spectrum-scale-csi release: ibm-spectrum-scale-csi-operator name: ibm-spectrum-scale-csi-operator rules: - apiGroups: - "" resources: - pods - persistentvolumeclaims - services - endpoints - events - configmaps - secrets - secrets/status - services/finalizers - serviceaccounts - securitycontextconstraints verbs: - '*' - apiGroups: - rbac.authorization.k8s.io resources: - clusterroles - clusterrolebindings verbs: - '*' - apiGroups: - apps resources: - deployments - daemonsets - replicasets - statefulsets verbs: - '*' - apiGroups: - monitoring.coreos.com resources: - servicemonitors verbs: - get - create - apiGroups: - apps resourceNames: - ibm-spectrum-scale-csi-operator resources: - deployments/finalizers verbs: - update - apiGroups: - apps resources: - replicasets verbs: - get - apiGroups: - csi.ibm.com resources: - '*' verbs: - '*' - apiGroups: - security.openshift.io resources: - securitycontextconstraints verbs: - '*' - apiGroups: - storage.k8s.io resources: - volumeattachments - storageclasses - csidrivers verbs: - '*' --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: null labels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator name: ibm-spectrum-scale-operator rules: - apiGroups: - "" resources: - configmaps verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - events verbs: - create - get - list - patch - watch - apiGroups: - "" resources: - namespaces verbs: - get - list - watch - apiGroups: - "" resources: - nodes verbs: - get - list - patch - watch - apiGroups: - "" resources: - persistentvolumes verbs: - create - get - list - patch - update - watch - apiGroups: - "" resources: - pods verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - pods/exec verbs: - create - apiGroups: - "" resources: - secrets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - serviceaccounts - services verbs: - create - delete - patch - apiGroups: - "" resources: - services verbs: - get - list - watch - apiGroups: - apps resources: - deployments verbs: - create - delete - patch - apiGroups: - apps resources: - statefulsets verbs: - create - patch - apiGroups: - csi.ibm.com resources: - csiscaleoperators verbs: - create - delete - get - list - patch - update - watch - apiGroups: - csi.ibm.com resources: - csiscaleoperators/finalizers verbs: - update - apiGroups: - csi.ibm.com resources: - csiscaleoperators/status verbs: - get - patch - update - apiGroups: - oauth.openshift.io resources: - oauthclients verbs: - create - get - list - patch - watch - apiGroups: - route.openshift.io resources: - routes verbs: - create - get - list - patch - watch - apiGroups: - scale.spectrum.ibm.com resources: - callhomes verbs: - create - delete - get - list - patch - update - watch - apiGroups: - scale.spectrum.ibm.com resources: - callhomes/finalizers verbs: - update - apiGroups: - scale.spectrum.ibm.com resources: - callhomes/status verbs: - get - patch - update - apiGroups: - scale.spectrum.ibm.com resources: - clusters verbs: - create - delete - get - list - patch - update - watch - apiGroups: - scale.spectrum.ibm.com resources: - clusters/finalizers verbs: - update - apiGroups: - scale.spectrum.ibm.com resources: - clusters/status verbs: - get - patch - update - apiGroups: - scale.spectrum.ibm.com resources: - daemons verbs: - create - delete - get - list - patch - update - watch - apiGroups: - scale.spectrum.ibm.com resources: - daemons/finalizers verbs: - update - apiGroups: - scale.spectrum.ibm.com resources: - daemons/status verbs: - get - patch - update - apiGroups: - scale.spectrum.ibm.com resources: - encryptionconfigs verbs: - create - delete - get - list - patch - update - watch - apiGroups: - scale.spectrum.ibm.com resources: - encryptionconfigs/finalizers verbs: - update - apiGroups: - scale.spectrum.ibm.com resources: - encryptionconfigs/status verbs: - get - patch - update - apiGroups: - scale.spectrum.ibm.com resources: - filesystems verbs: - create - delete - get - list - patch - update - watch - apiGroups: - scale.spectrum.ibm.com resources: - filesystems/finalizers verbs: - update - apiGroups: - scale.spectrum.ibm.com resources: - filesystems/status verbs: - get - patch - update - apiGroups: - scale.spectrum.ibm.com resources: - grafanabridges verbs: - create - delete - get - list - patch - update - watch - apiGroups: - scale.spectrum.ibm.com resources: - grafanabridges/finalizers verbs: - update - apiGroups: - scale.spectrum.ibm.com resources: - grafanabridges/status verbs: - delete - get - patch - update - apiGroups: - scale.spectrum.ibm.com resources: - guis verbs: - create - delete - get - list - patch - update - watch - apiGroups: - scale.spectrum.ibm.com resources: - guis/finalizers verbs: - update - apiGroups: - scale.spectrum.ibm.com resources: - guis/status verbs: - get - patch - update - apiGroups: - scale.spectrum.ibm.com resources: - pmcollectors verbs: - create - delete - get - list - patch - update - watch - apiGroups: - scale.spectrum.ibm.com resources: - pmcollectors/finalizers verbs: - update - apiGroups: - scale.spectrum.ibm.com resources: - pmcollectors/status verbs: - get - patch - update - apiGroups: - scale.spectrum.ibm.com resources: - recoverygroups verbs: - create - delete - get - list - patch - update - watch - apiGroups: - scale.spectrum.ibm.com resources: - recoverygroups/finalizers verbs: - update - apiGroups: - scale.spectrum.ibm.com resources: - recoverygroups/status verbs: - get - patch - update - apiGroups: - scale.spectrum.ibm.com resources: - remoteclusters verbs: - create - delete - get - list - patch - update - watch - apiGroups: - scale.spectrum.ibm.com resources: - remoteclusters/finalizers verbs: - update - apiGroups: - scale.spectrum.ibm.com resources: - remoteclusters/status verbs: - get - patch - update - apiGroups: - storage.k8s.io resources: - storageclasses verbs: - create - delete - get - list - patch - update - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator name: ibm-spectrum-scale-privileged rules: - apiGroups: - security.openshift.io resourceNames: - ibm-spectrum-scale-privileged resources: - securitycontextconstraints verbs: - use --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: labels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator name: ibm-spectrum-scale-leader-election-rolebinding namespace: ibm-spectrum-scale-operator roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: ibm-spectrum-scale-leader-election-role subjects: - kind: ServiceAccount name: ibm-spectrum-scale-operator namespace: ibm-spectrum-scale-operator --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: labels: app.kubernetes.io/instance: ibm-spectrum-scale-csi-operator app.kubernetes.io/managed-by: ibm-spectrum-scale-csi-operator app.kubernetes.io/name: ibm-spectrum-scale-csi-operator product: ibm-spectrum-scale-csi release: ibm-spectrum-scale-csi-operator name: ibm-spectrum-scale-csi-operator roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: ibm-spectrum-scale-csi-operator subjects: - kind: ServiceAccount name: ibm-spectrum-scale-csi-operator namespace: ibm-spectrum-scale-csi --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: labels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator name: ibm-spectrum-scale-operator roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: ibm-spectrum-scale-operator subjects: - kind: ServiceAccount name: ibm-spectrum-scale-operator namespace: ibm-spectrum-scale-operator --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: labels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator name: ibm-spectrum-scale-privileged roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: ibm-spectrum-scale-privileged subjects: - kind: ServiceAccount name: ibm-spectrum-scale-operator namespace: ibm-spectrum-scale-operator --- apiVersion: v1 data: controller_manager_config.yaml: | apiVersion: scale.spectrum.ibm.com/v1alpha1 kind: ClusterManagerConfig health: healthProbeBindAddress: :8081 metrics: bindAddress: 127.0.0.1:8080 webhook: port: 9443 leaderElection: leaderElect: true resourceName: scale.spectrum.ibm.com resourceLock: leases images: coreECE: cp.icr.io/cp/spectrum/scale/erasure-code/ibm-spectrum-scale-daemon@sha256:0380df0500d584cf65f566f22279307d52cc42a9e9d990e40f8c7b17115cedf8 coreDME: cp.icr.io/cp/spectrum/scale/data-management/ibm-spectrum-scale-daemon@sha256:6d477c4115ab84777f199e0dd2cf4ba40bd3825d903498667de414b890b66bff coreDAE: cp.icr.io/cp/spectrum/scale/data-access/ibm-spectrum-scale-daemon@sha256:27d65e1edeaa656ea091f410d673ca8af2701375d254b181a726c63c96141e5b coreInit: cp.icr.io/cp/spectrum/scale/ibm-spectrum-scale-core-init@sha256:1d1f2e1d2c035d1c58aac20961071c8cd011852acfaf977928f0de2ee536279c gui: cp.icr.io/cp/spectrum/scale/ibm-spectrum-scale-gui@sha256:8f6a4df6f3906ddac08d25dec206a4f89ac6a8d5529518013a7301132241f7c2 postgres: cp.icr.io/cp/spectrum/scale/postgres@sha256:a2da8071b8eba341c08577b13b41527eab3968bf1c8d28123b5b07a493a26862 logs: cp.icr.io/cp/spectrum/scale/ubi-minimal@sha256:d9b92ea78e76300968f5c9a4a04c2cf220a0bbfac667f77e5e7287692163d898 pmcollector: cp.icr.io/cp/spectrum/scale/ibm-spectrum-scale-pmcollector@sha256:9f21c31541a1e85c7f9eae2a695b19c57b85a7731286a277f9cd5184e8c87323 sysmon: cp.icr.io/cp/spectrum/scale/ibm-spectrum-scale-monitor@sha256:48a1bebb89804c11593d3577107bedba1a6a40157298d81bfef4983c9744a9b6 grafanaBridge: cp.icr.io/cp/spectrum/scale/ibm-spectrum-scale-grafana-bridge@sha256:a0bfc1ef649070fdee0ad23746e4f3c438d6798d7c3148ead7149496110e1801 kind: ConfigMap metadata: labels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator name: ibm-spectrum-scale-manager-config namespace: ibm-spectrum-scale-operator --- apiVersion: apps/v1 kind: Deployment metadata: labels: app.kubernetes.io/instance: ibm-spectrum-scale-csi-operator app.kubernetes.io/managed-by: ibm-spectrum-scale-csi-operator app.kubernetes.io/name: ibm-spectrum-scale-csi-operator product: ibm-spectrum-scale-csi release: ibm-spectrum-scale-csi-operator name: ibm-spectrum-scale-csi-operator namespace: ibm-spectrum-scale-csi spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: ibm-spectrum-scale-csi-operator template: metadata: annotations: productID: ibm-spectrum-scale-csi-operator productName: IBM Spectrum Scale CSI Operator productVersion: 2.4.0 labels: app.kubernetes.io/instance: ibm-spectrum-scale-csi-operator app.kubernetes.io/managed-by: ibm-spectrum-scale-csi-operator app.kubernetes.io/name: ibm-spectrum-scale-csi-operator name: ibm-spectrum-scale-csi-operator product: ibm-spectrum-scale-csi release: ibm-spectrum-scale-csi-operator spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/arch operator: Exists containers: - args: - --metrics-addr=0.0.0.0:8383 - --enable-leader-election - --leader-election-id=ibm-spectrum-scale-csi-operator env: - name: SHORTNAME_NODE_MAPPING value: "yes" - name: MAX_CONCURRENT_RECONCILES_CSISCALEOPERATOR_CSI_IBM_COM value: "1" - name: MAX_CONCURRENT_RECONCILES_SECRET_ value: "1" - name: ANSIBLE_DEBUG_LOGS value: "False" - name: WATCH_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: CSI_DRIVER_IMAGE value: cp.icr.io/cp/spectrum/scale/csi/ibm-spectrum-scale-csi-driver@sha256:4d8c41138f2fddac351f82db19c32fe5ad1282e7886f78fe2669f0c30ea5badb - name: CSI_SNAPSHOTTER_IMAGE value: cp.icr.io/cp/spectrum/scale/csi/csi-snapshotter@sha256:818f35653f2e214db81d655063e81995de9073328a3430498624c140881026a3 - name: CSI_ATTACHER_IMAGE value: cp.icr.io/cp/spectrum/scale/csi/csi-attacher@sha256:80dec81b679a733fda448be92a2331150d99095947d04003ecff3dbd7f2a476a - name: CSI_PROVISIONER_IMAGE value: cp.icr.io/cp/spectrum/scale/csi/csi-provisioner@sha256:6477988532358148d2e98f7c747db4e9250bbc7ad2664bf666348abf9ee1f5aa - name: CSI_LIVENESSPROBE_IMAGE value: cp.icr.io/cp/spectrum/scale/csi/livenessprobe@sha256:529be2c9770add0cdd0c989115222ea9fc1be430c11095eb9f6dafcf98a36e2b - name: CSI_NODE_REGISTRAR_IMAGE value: cp.icr.io/cp/spectrum/scale/csi/csi-node-driver-registrar@sha256:f9bcee63734b7b01555ee8fc8fb01ac2922478b2c8934bf8d468dd2916edc405 - name: CSI_RESIZER_IMAGE value: cp.icr.io/cp/spectrum/scale/csi/csi-resizer@sha256:6e0546563b18872b0aa0cad7255a26bb9a87cb879b7fc3e2383c867ef4f706fb image: icr.io/cpopen/ibm-spectrum-scale-csi-operator@sha256:38751e2b7a4624e588747ed427c2c2146bee320bab74b0bb288f38c2c5d2bddd imagePullPolicy: IfNotPresent livenessProbe: exec: command: - ./health_check.sh initialDelaySeconds: 10 periodSeconds: 30 name: operator readinessProbe: exec: command: - ./health_check.sh initialDelaySeconds: 3 periodSeconds: 1 resources: limits: cpu: 600m ephemeral-storage: 5Gi memory: 600Mi requests: cpu: 50m ephemeral-storage: 5Gi memory: 50Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: false runAsNonRoot: true runAsUser: 1001 volumeMounts: - mountPath: /tmp/ansible-operator/runner name: runner serviceAccountName: ibm-spectrum-scale-csi-operator volumes: - emptyDir: {} name: runner --- apiVersion: apps/v1 kind: Deployment metadata: labels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator control-plane: controller-manager name: ibm-spectrum-scale-controller-manager namespace: ibm-spectrum-scale-operator spec: replicas: 1 selector: matchLabels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator control-plane: controller-manager template: metadata: labels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator control-plane: controller-manager spec: containers: - args: - --config=controller_manager_config.yaml - --zap-log-level=1 command: - /manager image: icr.io/cpopen/ibm-spectrum-scale-operator@sha256:e986a2664fa450c8b1ef028deb5fc8a27662802fc2cd804211cdd5184c50486b livenessProbe: httpGet: path: /healthz port: 8081 initialDelaySeconds: 15 periodSeconds: 20 name: manager readinessProbe: httpGet: path: /readyz port: 8081 initialDelaySeconds: 5 periodSeconds: 10 securityContext: allowPrivilegeEscalation: false volumeMounts: - mountPath: /controller_manager_config.yaml name: manager-config subPath: controller_manager_config.yaml - mountPath: /etc/ssl/service name: cabundle serviceAccountName: ibm-spectrum-scale-operator terminationGracePeriodSeconds: 10 volumes: - configMap: name: ibm-spectrum-scale-manager-config name: manager-config - configMap: name: ibm-spectrum-scale-cabundle optional: true name: cabundle --- allowHostDirVolumePlugin: true allowHostIPC: true allowHostNetwork: true allowHostPID: true allowHostPorts: true allowPrivilegeEscalation: true allowPrivilegedContainer: true allowedCapabilities: - '*' allowedUnsafeSysctls: - '*' apiVersion: security.openshift.io/v1 defaultAddCapabilities: null fsGroup: type: RunAsAny kind: SecurityContextConstraints metadata: labels: app.kubernetes.io/instance: ibm-spectrum-scale app.kubernetes.io/name: operator name: ibm-spectrum-scale-privileged namespace: ibm-spectrum-scale-operator priority: null readOnlyRootFilesystem: false requiredDropCapabilities: null runAsUser: type: RunAsAny seLinuxContext: type: RunAsAny seccompProfiles: - '*' supplementalGroups: type: RunAsAny volumes: - '*'