apiVersion: appplatform.wcp.vmware.com/v1alpha2 kind: SupervisorServiceDefinition metadata: name: placeholder spec: crdYaml: content: "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\n\ metadata:\n annotations:\n controller-gen.kubebuilder.io/version: v0.6.2\n\ \ creationTimestamp: null\n name: hyperstores.hs.cloudian.com\nspec:\n group:\ \ hs.cloudian.com\n names:\n kind: Hyperstore\n listKind: HyperstoreList\n\ \ plural: hyperstores\n singular: hyperstore\n scope: Namespaced\n versions:\n\ \ - name: v1alpha1\n schema:\n openAPIV3Schema:\n description:\ \ Hyperstore is the Schema for the hyperstores API\n properties:\n \ \ apiVersion:\n 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'\n\ \ type: string\n kind:\n 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'\n\ \ type: string\n metadata:\n type: object\n \ \ spec:\n description: HyperstoreSpec defines the desired\ \ state of Hyperstore\n properties:\n affinity:\n \ \ description: If specified, affinity will define the pod's scheduling\ \ constraints\n properties:\n nodeAffinity:\n\ \ description: Describes node affinity scheduling rules for\ \ the pod.\n properties:\n preferredDuringSchedulingIgnoredDuringExecution:\n\ \ description: The scheduler will prefer to schedule\ \ pods to nodes that satisfy the affinity expressions specified by this field,\ \ but it may choose a node that violates one or more of the expressions. The\ \ node that is most preferred is the one with the greatest sum of weights, i.e.\ \ for each node that meets all of the scheduling requirements (resource request,\ \ requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating\ \ through the elements of this field and adding \"weight\" to the sum if the\ \ node matches the corresponding matchExpressions; the node(s) with the highest\ \ sum are the most preferred.\n items:\n \ \ description: An empty preferred scheduling term matches all objects\ \ with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term\ \ matches no objects (i.e. is also a no-op).\n properties:\n\ \ preference:\n description:\ \ A node selector term, associated with the corresponding weight.\n \ \ properties:\n matchExpressions:\n\ \ description: A list of node selector requirements\ \ by node's labels.\n items:\n \ \ description: A node selector requirement is a selector\ \ that contains values, a key, and an operator that relates the key and values.\n\ \ properties:\n \ \ key:\n description: The\ \ label key that the selector applies to.\n \ \ type: string\n operator:\n \ \ description: Represents a key's relationship\ \ to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt,\ \ and Lt.\n type: string\n \ \ values:\n \ \ 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.\n \ \ items:\n type: string\n\ \ type: array\n \ \ required:\n - key\n \ \ - operator\n \ \ type: object\n type: array\n \ \ matchFields:\n description:\ \ A list of node selector requirements by node's fields.\n \ \ items:\n description: A\ \ node selector requirement is a selector that contains values, a key, and an\ \ operator that relates the key and values.\n \ \ properties:\n key:\n \ \ description: The label key that the selector applies\ \ to.\n type: string\n \ \ operator:\n \ \ description: Represents a key's relationship to a set of values. Valid operators\ \ are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n \ \ type: string\n values:\n\ \ 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.\n items:\n \ \ type: string\n \ \ type: array\n required:\n \ \ - key\n - operator\n\ \ type: object\n \ \ type: array\n type: object\n \ \ weight:\n description: Weight\ \ associated with matching the corresponding nodeSelectorTerm, in the range\ \ 1-100.\n format: int32\n \ \ type: integer\n required:\n \ \ - preference\n - weight\n \ \ type: object\n type: array\n \ \ requiredDuringSchedulingIgnoredDuringExecution:\n \ \ description: If the affinity requirements specified by this field\ \ are not met at scheduling time, the pod will not be scheduled onto the node.\ \ If the affinity requirements specified by this field cease to be met at some\ \ point during pod execution (e.g. due to an update), the system may or may\ \ not try to eventually evict the pod from its node.\n \ \ properties:\n nodeSelectorTerms:\n \ \ description: Required. A list of node selector terms. The terms\ \ are ORed.\n items:\n \ \ description: A null or empty node selector term matches no objects. The\ \ requirements of them are ANDed. The TopologySelectorTerm type implements a\ \ subset of the NodeSelectorTerm.\n properties:\n\ \ matchExpressions:\n \ \ description: A list of node selector requirements by node's labels.\n\ \ items:\n \ \ description: A node selector requirement is a selector that contains values,\ \ a key, and an operator that relates the key and values.\n \ \ properties:\n key:\n\ \ description: The label key that the\ \ selector applies to.\n type: string\n\ \ operator:\n \ \ description: Represents a key's relationship to a set of values.\ \ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n \ \ type: string\n \ \ values:\n 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.\n items:\n\ \ type: string\n \ \ type: array\n required:\n\ \ - key\n \ \ - operator\n type: object\n \ \ type: array\n matchFields:\n\ \ description: A list of node selector requirements\ \ by node's fields.\n items:\n \ \ description: A node selector requirement is a selector\ \ that contains values, a key, and an operator that relates the key and values.\n\ \ properties:\n \ \ key:\n description: The\ \ label key that the selector applies to.\n \ \ type: string\n operator:\n \ \ description: Represents a key's relationship\ \ to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt,\ \ and Lt.\n type: string\n \ \ values:\n \ \ 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.\n \ \ items:\n type: string\n\ \ type: array\n \ \ required:\n - key\n \ \ - operator\n \ \ type: object\n type: array\n \ \ type: object\n type: array\n\ \ required:\n - nodeSelectorTerms\n\ \ type: object\n type: object\n \ \ podAffinity:\n description: Describes pod\ \ affinity scheduling rules (e.g. co-locate this pod in the same node, zone,\ \ etc. as some other pod(s)).\n properties:\n \ \ preferredDuringSchedulingIgnoredDuringExecution:\n \ \ description: The scheduler will prefer to schedule pods to nodes\ \ that satisfy the affinity expressions specified by this field, but it may\ \ choose a node that violates one or more of the expressions. The node that\ \ is most preferred is the one with the greatest sum of weights, i.e. for each\ \ node that meets all of the scheduling requirements (resource request, requiredDuringScheduling\ \ affinity expressions, etc.), compute a sum by iterating through the elements\ \ of this field and adding \"weight\" to the sum if the node has pods which\ \ matches the corresponding podAffinityTerm; the node(s) with the highest sum\ \ are the most preferred.\n items:\n \ \ description: The weights of all of the matched WeightedPodAffinityTerm\ \ fields are added per-node to find the most preferred node(s)\n \ \ properties:\n podAffinityTerm:\n\ \ description: Required. A pod affinity term, associated\ \ with the corresponding weight.\n properties:\n\ \ labelSelector:\n \ \ description: A label query over a set of resources, in this case pods.\n\ \ properties:\n \ \ matchExpressions:\n description:\ \ matchExpressions is a list of label selector requirements. The requirements\ \ are ANDed.\n items:\n \ \ description: A label selector requirement is a selector\ \ that contains values, a key, and an operator that relates the key and values.\n\ \ properties:\n \ \ key:\n description:\ \ key is the label key that the selector applies to.\n \ \ type: string\n \ \ operator:\n description: operator\ \ represents a key's relationship to a set of values. Valid operators are In,\ \ NotIn, Exists and DoesNotExist.\n \ \ type: string\n values:\n \ \ description: values is an array of string\ \ values. If the operator is In or NotIn, the values array must be non-empty.\ \ If the operator is Exists or DoesNotExist, the values array must be empty.\ \ This array is replaced during a strategic merge patch.\n \ \ items:\n \ \ type: string\n type: array\n\ \ required:\n \ \ - key\n - operator\n\ \ type: object\n \ \ type: array\n matchLabels:\n\ \ additionalProperties:\n \ \ type: string\n \ \ description: matchLabels is a map of {key,value} pairs. A single {key,value}\ \ in the matchLabels map is equivalent to an element of matchExpressions, whose\ \ key field is \"key\", the operator is \"In\", and the values array contains\ \ only \"value\". The requirements are ANDed.\n \ \ type: object\n type: object\n \ \ namespaces:\n \ \ description: namespaces specifies which namespaces the labelSelector applies\ \ to (matches against); null or empty list means \"this pod's namespace\"\n\ \ items:\n \ \ type: string\n type: array\n \ \ topologyKey:\n description:\ \ This pod should be co-located (affinity) or not co-located (anti-affinity)\ \ with the pods matching the labelSelector in the specified namespaces, where\ \ co-located is defined as running on a node whose value of the label with key\ \ topologyKey matches that of any node on which any of the selected pods is\ \ running. Empty topologyKey is not allowed.\n \ \ type: string\n required:\n \ \ - topologyKey\n type: object\n\ \ weight:\n description:\ \ weight associated with matching the corresponding podAffinityTerm, in the\ \ range 1-100.\n format: int32\n \ \ type: integer\n required:\n \ \ - podAffinityTerm\n - weight\n\ \ type: object\n type: array\n\ \ requiredDuringSchedulingIgnoredDuringExecution:\n \ \ description: If the affinity requirements specified by\ \ this field are not met at scheduling time, the pod will not be scheduled onto\ \ the node. If the affinity requirements specified by this field cease to be\ \ met at some point during pod execution (e.g. due to a pod label update), the\ \ system may or may not try to eventually evict the pod from its node. When\ \ there are multiple elements, the lists of nodes corresponding to each podAffinityTerm\ \ are intersected, i.e. all terms must be satisfied.\n \ \ items:\n description: Defines a set of pods (namely\ \ those matching the labelSelector relative to the given namespace(s)) that\ \ this pod should be co-located (affinity) or not co-located (anti-affinity)\ \ with, where co-located is defined as running on a node whose value of the\ \ label with key matches that of any node on which a pod of the\ \ set of pods is running\n properties:\n \ \ labelSelector:\n description:\ \ A label query over a set of resources, in this case pods.\n \ \ properties:\n matchExpressions:\n\ \ description: matchExpressions is a list of\ \ label selector requirements. The requirements are ANDed.\n \ \ items:\n description:\ \ A label selector requirement is a selector that contains values, a key, and\ \ an operator that relates the key and values.\n \ \ properties:\n key:\n \ \ description: key is the label key that the\ \ selector applies to.\n type: string\n\ \ operator:\n \ \ description: operator represents a key's relationship to a set\ \ of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n \ \ type: string\n \ \ values:\n description:\ \ values is an array of string values. If the operator is In or NotIn, the values\ \ array must be non-empty. If the operator is Exists or DoesNotExist, the values\ \ array must be empty. This array is replaced during a strategic merge patch.\n\ \ items:\n \ \ type: string\n type:\ \ array\n required:\n \ \ - key\n - operator\n \ \ type: object\n \ \ type: array\n matchLabels:\n \ \ additionalProperties:\n \ \ type: string\n description: matchLabels\ \ is a map of {key,value} pairs. A single {key,value} in the matchLabels map\ \ is equivalent to an element of matchExpressions, whose key field is \"key\"\ , the operator is \"In\", and the values array contains only \"value\". The\ \ requirements are ANDed.\n type: object\n\ \ type: object\n namespaces:\n\ \ description: namespaces specifies which namespaces\ \ the labelSelector applies to (matches against); null or empty list means \"\ this pod's namespace\"\n items:\n \ \ type: string\n type: array\n\ \ topologyKey:\n description:\ \ This pod should be co-located (affinity) or not co-located (anti-affinity)\ \ with the pods matching the labelSelector in the specified namespaces, where\ \ co-located is defined as running on a node whose value of the label with key\ \ topologyKey matches that of any node on which any of the selected pods is\ \ running. Empty topologyKey is not allowed.\n \ \ type: string\n required:\n \ \ - topologyKey\n type: object\n \ \ type: array\n type: object\n podAntiAffinity:\n\ \ description: Describes pod anti-affinity scheduling rules\ \ (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\n\ \ properties:\n preferredDuringSchedulingIgnoredDuringExecution:\n\ \ description: The scheduler will prefer to schedule\ \ pods to nodes that satisfy the anti-affinity expressions specified by this\ \ field, but it may choose a node that violates one or more of the expressions.\ \ The node that is most preferred is the one with the greatest sum of weights,\ \ i.e. for each node that meets all of the scheduling requirements (resource\ \ request, requiredDuringScheduling anti-affinity expressions, etc.), compute\ \ a sum by iterating through the elements of this field and adding \"weight\"\ \ to the sum if the node has pods which matches the corresponding podAffinityTerm;\ \ the node(s) with the highest sum are the most preferred.\n \ \ items:\n description: The weights of all\ \ of the matched WeightedPodAffinityTerm fields are added per-node to find the\ \ most preferred node(s)\n properties:\n \ \ podAffinityTerm:\n description:\ \ Required. A pod affinity term, associated with the corresponding weight.\n\ \ properties:\n \ \ labelSelector:\n description: A label query\ \ over a set of resources, in this case pods.\n \ \ properties:\n matchExpressions:\n\ \ description: matchExpressions is a list\ \ of label selector requirements. The requirements are ANDed.\n \ \ items:\n description:\ \ A label selector requirement is a selector that contains values, a key, and\ \ an operator that relates the key and values.\n \ \ properties:\n key:\n\ \ description: key is the label key\ \ that the selector applies to.\n \ \ type: string\n operator:\n \ \ description: operator represents a key's\ \ relationship to a set of values. Valid operators are In, NotIn, Exists and\ \ DoesNotExist.\n type: string\n\ \ values:\n \ \ description: values is an array of string values. If the\ \ operator is In or NotIn, the values array must be non-empty. If the operator\ \ is Exists or DoesNotExist, the values array must be empty. This array is replaced\ \ during a strategic merge patch.\n \ \ items:\n type: string\n \ \ type: array\n \ \ required:\n - key\n\ \ - operator\n \ \ type: object\n type:\ \ array\n matchLabels:\n \ \ additionalProperties:\n \ \ type: string\n description:\ \ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\ \ map is equivalent to an element of matchExpressions, whose key field is \"\ key\", the operator is \"In\", and the values array contains only \"value\"\ . The requirements are ANDed.\n type: object\n\ \ type: object\n \ \ namespaces:\n description: namespaces\ \ specifies which namespaces the labelSelector applies to (matches against);\ \ null or empty list means \"this pod's namespace\"\n \ \ items:\n type: string\n \ \ type: array\n \ \ topologyKey:\n description: This pod should\ \ be co-located (affinity) or not co-located (anti-affinity) with the pods matching\ \ the labelSelector in the specified namespaces, where co-located is defined\ \ as running on a node whose value of the label with key topologyKey matches\ \ that of any node on which any of the selected pods is running. Empty topologyKey\ \ is not allowed.\n type: string\n \ \ required:\n - topologyKey\n\ \ type: object\n weight:\n\ \ description: weight associated with matching\ \ the corresponding podAffinityTerm, in the range 1-100.\n \ \ format: int32\n type: integer\n \ \ required:\n - podAffinityTerm\n\ \ - weight\n type: object\n\ \ type: array\n requiredDuringSchedulingIgnoredDuringExecution:\n\ \ description: If the anti-affinity requirements specified\ \ by this field are not met at scheduling time, the pod will not be scheduled\ \ onto the node. If the anti-affinity requirements specified by this field cease\ \ to be met at some point during pod execution (e.g. due to a pod label update),\ \ the system may or may not try to eventually evict the pod from its node. When\ \ there are multiple elements, the lists of nodes corresponding to each podAffinityTerm\ \ are intersected, i.e. all terms must be satisfied.\n \ \ items:\n description: Defines a set of pods (namely\ \ those matching the labelSelector relative to the given namespace(s)) that\ \ this pod should be co-located (affinity) or not co-located (anti-affinity)\ \ with, where co-located is defined as running on a node whose value of the\ \ label with key matches that of any node on which a pod of the\ \ set of pods is running\n properties:\n \ \ labelSelector:\n description:\ \ A label query over a set of resources, in this case pods.\n \ \ properties:\n matchExpressions:\n\ \ description: matchExpressions is a list of\ \ label selector requirements. The requirements are ANDed.\n \ \ items:\n description:\ \ A label selector requirement is a selector that contains values, a key, and\ \ an operator that relates the key and values.\n \ \ properties:\n key:\n \ \ description: key is the label key that the\ \ selector applies to.\n type: string\n\ \ operator:\n \ \ description: operator represents a key's relationship to a set\ \ of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n \ \ type: string\n \ \ values:\n description:\ \ values is an array of string values. If the operator is In or NotIn, the values\ \ array must be non-empty. If the operator is Exists or DoesNotExist, the values\ \ array must be empty. This array is replaced during a strategic merge patch.\n\ \ items:\n \ \ type: string\n type:\ \ array\n required:\n \ \ - key\n - operator\n \ \ type: object\n \ \ type: array\n matchLabels:\n \ \ additionalProperties:\n \ \ type: string\n description: matchLabels\ \ is a map of {key,value} pairs. A single {key,value} in the matchLabels map\ \ is equivalent to an element of matchExpressions, whose key field is \"key\"\ , the operator is \"In\", and the values array contains only \"value\". The\ \ requirements are ANDed.\n type: object\n\ \ type: object\n namespaces:\n\ \ description: namespaces specifies which namespaces\ \ the labelSelector applies to (matches against); null or empty list means \"\ this pod's namespace\"\n items:\n \ \ type: string\n type: array\n\ \ topologyKey:\n description:\ \ This pod should be co-located (affinity) or not co-located (anti-affinity)\ \ with the pods matching the labelSelector in the specified namespaces, where\ \ co-located is defined as running on a node whose value of the label with key\ \ topologyKey matches that of any node on which any of the selected pods is\ \ running. Empty topologyKey is not allowed.\n \ \ type: string\n required:\n \ \ - topologyKey\n type: object\n \ \ type: array\n type: object\n type:\ \ object\n autoScale:\n properties:\n \ \ enable:\n type: boolean\n maxNodeLimit:\n\ \ format: int32\n type: integer\n \ \ type: object\n cassVolumeSize:\n description:\ \ The size of the Cassandra volume in gigabytes (must be Gi)\n \ \ pattern: ^\\d+Gi$\n type: string\n cpuRequire:\n\ \ description: The amount of CPU resource to assign to Hyperstore\ \ nodes\n type: string\n desiredProvisionedGB:\n\ \ description: How many GB across the cluster we want to have\ \ provisioned as PVCs\n format: int64\n type:\ \ integer\n disableCMCLoadBalancer:\n type: boolean\n\ \ disableIAM:\n description: Whether the S3 service\ \ should disable exposing IAM endpoints (defaults to false)\n \ \ type: boolean\n enterMMFail:\n description: Whether\ \ to fail entering MM (by elevating pod toleration) or succeed (by deleting\ \ pod)\n type: boolean\n enterMMTimeSec:\n \ \ description: Time delay when entering MM, because request to enter\ \ MM and actually entering it\n format: int64\n \ \ type: integer\n externalAccess:\n description:\ \ Whether the S3/IAM service should be accessible internally or externally\n\ \ type: boolean\n hspullsecret:\n \ \ description: The secret to access to image repository (overrides operator\ \ default)\n type: string\n hyperstoreImageURL:\n\ \ description: The hyperstore image to use (overrides operator\ \ default)\n type: string\n memoryRequire:\n \ \ description: The amount of memory to assign to Hyperstore nodes\ \ in gigabytes (must be Gi)\n pattern: ^\\d+Gi$\n \ \ type: string\n metadataStorageClassName:\n \ \ description: The storage class for metadata\n type:\ \ string\n metadataVolumeSize:\n description: The\ \ size of the (single) metadata volume in gigabytes (must be Gi)\n \ \ pattern: ^\\d+Gi$\n type: string\n \ \ nodeSelector:\n additionalProperties:\n type:\ \ string\n description: A node selector to use to choose where\ \ to deploy Hyperstore nodes\n type: object\n nodes:\n\ \ description: How many Hyperstore nodes to deploy\n \ \ format: int32\n maximum: 64\n minimum:\ \ 1\n type: integer\n objectDataStorageClassName:\n\ \ description: The storage class for object data\n \ \ type: string\n pvcAnnotation:\n description:\ \ Annotaions to add to PVCs\n type: string\n pvcAnnotations:\n\ \ additionalProperties:\n type: string\n \ \ description: Annotations that are added to PVCs.\n \ \ type: object\n pvcExtensionId:\n description:\ \ Custom extension-id to be quoted in PVC annotatioon\n type:\ \ string\n pvcSizeGB:\n description: The size of\ \ an individual PVC\n format: int64\n type: integer\n\ \ pvcsize:\n description: The size of each data\ \ volume in gigabytes (must be Gi)\n pattern: ^\\d+Gi$\n\ \ type: string\n topDomain:\n description:\ \ The domain name for the Hyperstore deployment\n type: string\n\ \ totalStorageSize:\n pattern: ^\\d+Gi$\n \ \ type: string\n required:\n - metadataStorageClassName\n\ \ - objectDataStorageClassName\n - totalStorageSize\n\ \ type: object\n status:\n description: HyperstoreStatus\ \ defines the observed state of Hyperstore\n properties:\n \ \ state:\n description: \"INSERT ADDITIONAL STATUS FIELD\ \ - define observed state of cluster Important: Run \\\"operator-sdk generate\ \ k8s\\\" to regenerate code after modifying this file Add custom validation\ \ using kubebuilder tags: https://book-v1.book.kubebuilder.io/beyond_basics/generating_crd.html\ \ \\tNodes []string `json:\\\"nodes\\\"`\"\n properties:\n \ \ nodes:\n additionalProperties:\n \ \ description: 'NOTE: json tags are required. Any new fields\ \ you add must have json tags for the fields to be serialized.'\n \ \ properties:\n chunkCounts:\n \ \ additionalProperties:\n format: int64\n\ \ type: integer\n type:\ \ object\n evacAll:\n type:\ \ boolean\n nodeChangeTime:\n \ \ format: int64\n type: integer\n \ \ nodeName:\n type: string\n \ \ nodeState:\n type: integer\n \ \ numPVCs:\n type: integer\n \ \ numProvisionedChunks:\n format: int64\n\ \ type: integer\n numUsedChunks:\n\ \ format: int64\n type: integer\n\ \ podList:\n items:\n \ \ type: string\n type: array\n\ \ pvcList:\n items:\n \ \ type: string\n type: array\n\ \ type: object\n type: object\n \ \ numCurrentProvisionedChunks:\n format: int64\n\ \ type: integer\n numCurrentUsedChunks:\n\ \ format: int64\n type: integer\n \ \ pods:\n additionalProperties:\n \ \ properties:\n nodeName:\n \ \ description: This field can be empty if the pod is not yet scheduled\ \ on any node.\n type: string\n \ \ podName:\n type: string\n \ \ podPhase:\n description: PodPhase is a label\ \ for the condition of a pod at the current time.\n \ \ type: string\n podPhaseChangeTime:\n \ \ format: int64\n type: integer\n \ \ pvcList:\n description: In case\ \ of StatefulSet instance this field contains volumes that the pod needs to\ \ create, may not be created yet. In case of non StatefulSet instance it contains\ \ already created PVCs.\n items:\n \ \ type: string\n type: array\n \ \ type: object\n description: In case of StatefulSet\ \ instance this field contains the pods that are already created. In case of\ \ non StatefulSet instance this contains pods that may not be created yet.\n\ \ type: object\n pvcs:\n \ \ additionalProperties:\n properties:\n \ \ nodeName:\n description: Won't be set\ \ for regular VSAN which doesn't need PVC to be affined to a node, only set\ \ for PVCs that use WaitForFirstConsumer StorageClass(VSAN SNA and VSAN Direct)\ \ or non-StatefulSet instances.\n type: string\n \ \ podName:\n description: This\ \ field can be empty if the corresponding pod is deleted.\n \ \ type: string\n probeStatefulName:\n \ \ type: string\n pvcHealth:\n \ \ description: Will be populated using PVC health annotation\ \ volumehealth.storage.kubernetes.io/health\n type:\ \ string\n pvcName:\n type:\ \ string\n pvcPhase:\n type:\ \ string\n pvcPhaseChangeTime:\n \ \ format: int64\n type: integer\n \ \ pvcUnhealthyDuration:\n description: This\ \ will be updated with system time when the health state changes from accessible\ \ to inaccessible or vice-versa\n format: int64\n \ \ type: integer\n type: object\n\ \ type: object\n type: object\n \ \ type: object\n type: object\n served: true\n storage: true\n\ \ subresources:\n status: {}\nstatus:\n acceptedNames:\n kind: \"\ \"\n plural: \"\"\n conditions: []\n storedVersions: []\n" format: plain description: HyperStore is a scalable, distributed S3-API object storage system. eula: "Cloudian END USER License Agreement\nThis Cloudian End User License Agreement\ \ (\u201CAgreement\u201D) is an agreement between Cloudian, Inc., a Delaware corporation\ \ (\u201CCloudian\u201D) and the company identified by you on this page (\u201C\ Licensee\u201D).\n\nIT IS IMPORTANT THAT YOU READ THIS AGREEMENT CAREFULLY AND\ \ COMPLETELY. THIS AGREEMENT IS A LEGALLY BINDING AGREEMENT BETWEEN CLOUDIAN AND\ \ LICENSEE. BY CHECKING THE \u201CI HAVE READ AND AGREE TO THE AGREEMENT\u201D\ \ BOX AND/OR CLICKING THE \u201CSUBMIT\u201D BUTTON ON THIS PAGE BY DOWNLOADING\ \ OR INSTALLING ANY CLOUDIAN SOFTWARE, OR BY INSTALLING ANY CLOUDIAN LICENSE KEY\ \ OR USING ANY CLOUDIAN PRODUCT IN ANY MANNER, YOU ARE BINDING LICENSEE TO THE\ \ TERMS OF THIS AGREEMENT, AND YOU ARE REPRESENTING TO CLOUDIAN THAT YOU ARE DULY\ \ AUTHORIZED BY LICENSEE TO DO SO AND THAT LICENSEE IS A CORPORATION OR OTHER\ \ BUSINESS ENTITY. IF LICENSEE IS NOT A CORPORATION OR OTHER BUSINESS ENTITY,\ \ IF YOU ARE NOT AUTHORIZED TO BIND LICENSEE TO THE TERMS OF THIS AGREEMENT, OR\ \ IF LICENSEE DOES NOT AGREE TO BE BOUND BY ALL OF THE TERMS OF THIS AGREEMENT,\ \ DO NOT CHECK THE \u201CI HAVE READ AND AGREE TO THE AGREEMENT\u201D BOX, DO\ \ NOT CLICK THE \u201CSUBMIT\u201D BUTTON, DO NOT DOWNLOAD OR INSTALL ANY CLOUDIAN\ \ SOFTWARE, DO NOT INSTALL ANY CLOUDIAN LICENSE KEYS, AND DO NOT USE ANY CLOUDIAN\ \ PRODUCT IN ANY MANNER. IF LICENSEE DOES NOT AGREE TO BE BOUND BY ALL OF THE\ \ TERMS OF THIS AGREEMENT, THE CLOUDIAN PRODUCT MAY BE RETURNED TO THE SELLER\ \ FOR A REFUND OF THE PURCHASE PRICE ACTUALLY PAID BY LICENSEE.\n\n1. Definitions\n\ \n1.1 \u201CCloudian Product\u201D means any Cloudian product for which Cloudian\ \ provides to Licensee one or more license keys. \u201CCloudian Software Product\u201D\ \ means any Cloudian Product that is a software-only product (with no hardware),\ \ and \u201CCloudian Appliance Product\u201D means any Cloudian Product that is\ \ an appliance product.\n\n1.2 \u201CCloudian-Powered Storage System\u201D means\ \ an object storage system with a single shared namespace. The nodes of such system\ \ may be distributed across multiple data centers in multiple geographic regions.\n\ \n1.3 \u201CDocumentation\u201D means, with respect to a Cloudian Product, Cloudian\u2019\ s standard end-user manuals for such Cloudian Product and any updates thereto\ \ that may be provided by Cloudian or Seller (if Seller is not Cloudian) to Licensee.\n\ \n1.4 \u201CEvaluation License Term\u201D means, with respect to an Evaluation\ \ License, the license period encoded in the evaluation license key provided by\ \ Cloudian to Licensee for such Evaluation License; provided, however, that if,\ \ prior to the end of such period, a production license key is installed on any\ \ node of the Cloudian-Powered Storage System covered by such evaluation license\ \ key, the Evaluation License Term will terminate upon such installation of such\ \ production license key. For avoidance of doubt, there will be no Evaluation\ \ License Term for any Cloudian Product unless and until an evaluation license\ \ key is provided by Cloudian to Licensee for such Cloudian Product.\n\n1.5 \u201C\ Licensed Software\u201D means (a) with respect to a Cloudian Software Product,\ \ such Cloudian Software Product and all corrections, updates and upgrades thereto\ \ that Cloudian or Seller (if Seller is not Cloudian) may provide to Licensee,\ \ and (b) with respect to a Cloudian Appliance Product unit, (i) the software\ \ installed on such unit at the time it is originally delivered to Licensee (\u201C\ Preloaded Licensed Software\u201D), (ii) any other software that Cloudian or Seller\ \ (if Seller is not Cloudian) may provide to Licensee for use with such product\ \ (\u201CNon-Preloaded Licensed Software\u201D), and (iii) any corrections, updates\ \ and upgrades to any of the foregoing that Cloudian or Seller (if Seller is not\ \ Cloudian) may provide to Licensee.\n\n1.6 \u201CLicensed Storage Amount\u201D\ \ means, with respect to a Software License, the maximum amount of storage permitted\ \ for such Software License (which may be measured by the total data storage capacity\ \ of all storage devices that can be accessed by the applicable Cloudian Product,\ \ the amount of storage space configured for use by such Cloudian Product, or\ \ another metric defined by Cloudian), as encoded in the license key for such\ \ Software License.\n\n1.7 \u201CPermitted Purposes\u201D means (a) with respect\ \ to an Evaluation License, the testing and evaluation of the applicable Cloudian\ \ Product in a non-production capacity, and (b) with respect to a Production License,\ \ Licensee\u2019s internal business purposes.\n\n1.8 \u201CProduction License\ \ Term\u201D means, with respect to a Production License, the license period encoded\ \ in the production license key provided by Cloudian to Licensee for such Production\ \ License; provided that the Production License Term of each Production License\ \ for Licensed Software for a Cloudian Appliance Product will have a perpetual\ \ duration.\n\n1.9 \u201CSeller\u201D means, with respect to a Cloudian Product,\ \ the entity from which such Cloudian Product is obtained by Licensee.\n\n1.10\ \ \u201CSoftware License\u201D means a license granted by Cloudian to Licensee\ \ under Section 2.1 in connection with a license key provided by Cloudian to Licensee.\ \ A Software License is an \u201CEvaluation License\u201D if the corresponding\ \ license key is an evaluation license key, and a \u201CProduction License\u201D\ \ if the corresponding license key is a production license key.\n\n1.11 \u201C\ Third Party Software\u201D means any software not developed by Cloudian that may\ \ be provided by Cloudian to Licensee together with separate license terms that\ \ govern such software.\n\n2. LICENSE GRANTS\n\n2.1 Licensed Software. Subject\ \ to the terms and conditions of this Agreement (including Section 3), Cloudian\ \ hereby grants to Licensee, with respect to each license key, a non-exclusive,\ \ non-transferable (except as permitted in Section 12.3), non-sublicensable license\ \ to do all of the following during the license period (i.e., the Evaluation License\ \ Term or Production License Term) encoded in such license key:\n\n(a) if such\ \ license key is for a Cloudian Software Product, install and use such Cloudian\ \ Software Product to operate a single Cloudian-Powered Storage System solely\ \ for Permitted Purposes, subject to the applicable Licensed Storage Amount; or\n\ \n(b) if such license key is for a Cloudian Appliance Product unit, install the\ \ Non-Preloaded Licensed Software for such Cloudian Appliance Product, if any,\ \ on such unit, and use the Licensed Software on such unit solely for Permitted\ \ Purposes, subject to the applicable Licensed Storage Amount.\n\nNotwithstanding\ \ the foregoing, this Section does not apply to any Third Party Software, all\ \ of which is provided to Licensee pursuant to separate licensing terms.\n\n2.2\ \ Documentation. Subject to the terms and conditions of this Agreement (including\ \ Section 3), Cloudian hereby grants to Licensee a non-exclusive, non-transferable\ \ (except as permitted in Section 12.3), non-sublicensable license to do the following\ \ during the license period (i.e., the Evaluation License Term or Production License\ \ Term) of each Software License: make and use a reasonable number of copies of\ \ the Documentation for the applicable Cloudian Product solely in connection with\ \ the permitted use thereof.\n\n3. SOFTWARE Restrictions\n\n3.1 Appliance-Specific\ \ Restrictions. The Licensed Software for each Cloudian Appliance Product unit\ \ is licensed for use solely on the hardware of such unit. Licensee will not,\ \ and will have no right to: (a) move such Licensed Software to, or otherwise\ \ install or use such Licensed Software on, any hardware other than the hardware\ \ of such unit; or (b) use such Licensed Software if the storage capacity of such\ \ unit is expanded beyond what was originally delivered to Licensee (including\ \ through the addition of storage devices to, or the upgrading of the storage\ \ devices of, such unit). Prior to selling, leasing or otherwise transferring\ \ any Cloudian Appliance Product unit to any third party, Licensee will permanently\ \ delete all Licensed Software installed on such unit.\n\n3.2 Other Restrictions.\ \ Licensee will not, and will have no right to, do any of the following: (a) install,\ \ use or copy any Licensed Software or Documentation except as permitted in Section\ \ 2; (b) without limitation of the foregoing, use any Licensed Software or Documentation\ \ in connection with the development, marketing, distribution or exploitation\ \ of any products or services that are competitive with any Licensed Software\ \ or Cloudian Product, or use any Licensed Software or Cloudian Product under\ \ an Evaluation License in a production capacity; (c) distribute, disclose or\ \ otherwise provide any Licensed Software or Documentation to any third party;\ \ (d) grant to any third party any license, sublicense or other rights in or to,\ \ or otherwise permit any third party (other than Licensee\u2019s contractors\ \ acting on behalf of Licensee during any Production License Term) to use, any\ \ Licensed Software or Documentation (for avoidance of doubt, this subsection\ \ (d) does not prohibit or limit use by third parties of any storage service operated\ \ by Licensee using the Licensed Software during any Production License Period);\ \ (e) create derivative works of, translate, adapt or otherwise modify any Licensed\ \ Software or Documentation; (f) decompile, disassemble or reverse engineer any\ \ Licensed Software, or otherwise attempt to derive or extract any source code,\ \ ideas, algorithms, procedures, workflows or hierarchies from any Licensed Software;\ \ (g) disclose the results of any performance tests, or any benchmark tests or\ \ other comparative analyses, of any Licensed Software or Cloudian Products; (h)\ \ disclose the specifications of, or Cloudian\u2019s roadmap for, any Licensed\ \ Software or Cloudian Product to any third party; or (i) authorize, instruct\ \ or assist any third party to perform any of the foregoing activities. Licensee\ \ will comply with all applicable laws (including consumer, privacy and telecommunications\ \ laws) in connection with all activities involving any Licensed Software or Cloudian\ \ Product.\n\n3.3 Injunctive Relief. Licensee acknowledges and agrees that any\ \ breach of Sections 3.1 or 3.2 by Licensee will cause irreparable injury to Cloudian\ \ and that, in addition to any other remedies that may be available to Cloudian,\ \ Cloudian will be entitled to obtain injunctive relief against such breach or\ \ threatened breach or the continuation of such breach, without any requirement\ \ to prove actual damages or post a bond or other security.\n\n3.4 Enforcement\ \ Mechanisms. Licensee acknowledges and agrees that (a) Licensed Software will\ \ only operate on servers on which valid license keys are installed and (b) Licensed\ \ Software may contain certain other mechanisms to enforce the Licensed Storage\ \ Amount limitation and the other limitations set forth in this Agreement. Cloudian\ \ will have no liability of any kind in connection with any inability of Licensee\ \ to use the Licensed Software or the Cloudian Product in excess of such limitations\ \ due to such mechanisms or any other causes.\n\n3.5 Export restrictions. Licensee\ \ acknowledges that Licensed Software and Cloudian Products are subject to U.S.\ \ and foreign customs and export control laws and regulations (collectively, \u201C\ Export Laws\u201D). Licensee will comply with Export Laws, and Licensee will be\ \ solely responsible for obtaining any necessary licenses or other authorizations\ \ relating to the export of Licensed Software or Cloudian Products. Without limitation\ \ of the foregoing, Licensee will not import, export, re-export, sell or otherwise\ \ transfer any Licensed Software or Cloudian Product (a) to restricted end-users\ \ or to restricted countries (as defined by the Export Laws), or (b) for the design,\ \ development, production or use of nuclear weapons, materials or facilities,\ \ chemical or biological weapons, or missile technology, or for any other purposes\ \ prohibited by Export Laws.\n\n3.6 Records; Audit. Licensee will keep and maintain\ \ complete and accurate books and records relating to this Agreement, and Cloudian\ \ will have the right, from time to time and with reasonable advance notice to\ \ Licensee, to conduct an audit of Licensee\u2019s books and records and Licensee\u2019\ s use of Licensed Software to verify Licensee\u2019s compliance with the terms\ \ and conditions of this Agreement. No such audit will unreasonably interfere\ \ with Licensee\u2019s business activities. If any such audit reveals any material\ \ breach of this Agreement, Licensee will promptly pay to Cloudian all costs and\ \ expenses of such audit. Without prejudice to any other rights of Cloudian, Licensee\ \ will promptly pay Cloudian the amount of any underpayment by Licensee, and correct\ \ any other noncompliance, revealed by any such audit.\n\n3.7 Software Data Usage\ \ Files. The Licensed Software may generate electronic files containing information\ \ regarding its usage (\u201CAudit Files\u201D). Upon any request by Cloudian,\ \ Licensee will promptly generate and send to Cloudian Audit Files any other reports\ \ or logs that can be generated by the Licensed Software (such reports and logs,\ \ collectively with Audit Files, \u201CSoftware Usage Data Files\u201D), or, at\ \ Cloudian\u2019s option, permit and enable Cloudian to remotely generate Software\ \ Usage Data Files and retrieve them over the Internet.\n\n4. EVALUATION HARDWARE\ \ RESTRICTIONS\n\nLicensee will not (a) remove any hardware from, add any hardware\ \ to, or modify any hardware of, any Cloudian Appliance Product unit that is provided\ \ to Licensee for evaluation purposes, except that Licensee may remove hardware\ \ components from such unit on a temporary basis solely for failure testing purposes,\ \ or (b) distribute, disclose or otherwise provide any portion of such Cloudian\ \ Appliance Product unit to any third party. Cloudian will retain title to and\ \ ownership of any Cloudian Appliance Product unit that is provided to Licensee\ \ for evaluation purposes unless and until Licensee purchases such unit from Cloudian.\n\ 5. Support\n\n5.1 Support Agreement. With respect to any technical support services\ \ for Cloudian Products purchased by Licensee, Licensee agrees that if such technical\ \ support is to be provided to Licensee directly by Cloudian, it will be governed\ \ by Cloudian\u2019s technical support terms located at cloudian.com/disclosures/technical-support-terms,\ \ and if it is to be provided to Licensee by a Cloudian reseller or distributor,\ \ it will be governed by terms agreed to between Licensee and such reseller or\ \ distributor. Cloudian will have no obligation under this Agreement to provide\ \ any technical support or maintenance for, or any bug fixes, updates or upgrades\ \ to, any Cloudian Product or Licensed Software.\n\n5.2 Support Diagnostics. Cloudian\ \ may collect product usage data, log files, trace files, and other usage and\ \ diagnostic data (collectively, \u201CDiagnostic Data\u201D) from each Cloudian\ \ Product, which collection may be achieved using \u201Ccall home\u201D functionality\ \ of such Cloudian Product or through manual collection from such Cloudian Product\ \ (Licensee may choose the collection method). Cloudian and its business partners\ \ may use Diagnostic Data to provide, support and enhance Cloudian\u2019s products\ \ and services. Cloudian may also use Diagnostic Data to determine usage trends\ \ for Cloudian Products and Licensed Software, and Cloudian may publicly disclose\ \ such trends as long as Licensee is not identified by name as a source of Diagnostic\ \ Data.\n\n5.3 Remote support capabilities. Licensee will give Cloudian reasonable\ \ notice before removing or disabling any remote support capabilities of any Cloudian\ \ Product during any technical support term.\n\n6. PROMOTIONAL Consideration\n\ \n6.1 Cloudian will have the right to use Licensee\u2019s name and logo to identify\ \ Licensee as a user of Cloudian Products on Cloudian\u2019s websites and promotional\ \ materials until Licensee expressly objects in writing.\n\n7. Proprietary Rights\n\ \n7.1 Ownership. Licensee acknowledges and agrees that, as between Cloudian and\ \ Licensee, Cloudian and/or its licensors own and will retain all right, title\ \ and interest (including all intellectual property rights) in and to all Licensed\ \ Software and Documentation. If Licensee provides Cloudian with any feedback\ \ (including any ideas or suggestions for new features or other improvements)\ \ regarding any Cloudian Product, Cloudian will be free to implement and otherwise\ \ use such feedback for any purpose, without restriction and without compensation\ \ or attribution to Licensee.\n\n7.2 No implied rights. Except as expressly set\ \ forth in this Agreement, Cloudian grants no licenses or other rights in or to\ \ any Licensed Software or Documentation (whether by implication, estoppel, or\ \ otherwise) to Licensee or any third parties. All rights not expressly granted\ \ to Licensee are retained by Cloudian and its licensors.\n\n7.3 Proprietary rights\ \ markings. Licensee will ensure that all copies of Licensed Software and Documentation\ \ will contain all copyright, trademark, patent, confidentiality and other notices\ \ in the same manner as such notices appear on or in such Licensed Software and\ \ Documentation as originally provided to Licensee. Licensee will not remove,\ \ alter, cover or obfuscate any such notices placed on or in any Cloudian Product,\ \ Licensed Software or Documentation.\n\n8. Warranty and Disclaimers\n\n8.1 Limited\ \ warranties\n\n(a) With respect to each Production License, Cloudian warrants\ \ to Licensee that, for a period of thirty (30) days commencing on the first day\ \ of the applicable Production License Term (\u201CSoftware Warranty Period\u201D\ ), the Licensed Software covered by such Production License, in the form delivered\ \ to Licensee by Cloudian or Seller (if Seller is not Cloudian), will perform\ \ substantially in accordance with the functional specifications for such Licensed\ \ Software set forth in the applicable Documentation when installed and used in\ \ compliance with such Documentation and this Agreement. For the purposes of this\ \ Agreement, a Cloudian Software Product will be deemed to be delivered to Licensee\ \ when it is made available for download by Licensee. For avoidance of doubt,\ \ the foregoing warranty does not apply to any Licensed Software while it is being\ \ used under an Evaluation License or during any other period in which it is not\ \ covered by a Production License.\n\n(b) With respect to each Cloudian Appliance\ \ Product unit purchased by Licensee from Cloudian or Seller (if Seller is not\ \ Cloudian), Cloudian warrants to Licensee that, for a period of thirty (30) days\ \ commencing on the date of sale of such unit (\u201CHardware Warranty Period\u201D\ ), the hardware of such Cloudian Appliance Product unit, in the form delivered\ \ to Licensee by Cloudian or Seller (if Seller is not Cloudian), will be free\ \ of material defects in materials and workmanship under normal use. For avoidance\ \ of doubt, the foregoing warranty does not apply to any Cloudian Appliance Product\ \ unit that is provided by to Licensee for evaluation purposes unless and until\ \ such unit is purchased by Licensee.\n\n8.2 Remedies\n\n(a) If, during the Software\ \ Warranty Period applicable to any Production License, Licensee provides Cloudian\ \ written notice of any breach of the warranty set forth in Section 8.1(a) above\ \ with respect to the Licensed Software covered by such Production License, which\ \ notice describes such breach in detail, Cloudian will (at Cloudian\u2019s election)\ \ either (i) correct such Licensed Software so that it complies with such warranty\ \ or (ii) replace such Licensed Software with software that complies with such\ \ warrant.\n\n(b) If, during the Hardware Warranty Period applicable to any Cloudian\ \ Appliance Product unit, Licensee provides Cloudian written notice of any breach\ \ of the warranty set forth in Section 8.1(b) above with respect to such unit,\ \ which notice describes such breach in detail, Cloudian will (at Cloudian\u2019\ s election) either (i) repair the defective hardware (using new or previously\ \ used parts that are equivalent to new in performance and reliability) so that\ \ it complies with such warranty or (ii) replace the defective hardware (in part\ \ or whole) with other hardware that complies with such warranty (such replacement\ \ hardware may contain, or consist of, new or previously used parts that are equivalent\ \ to new in performance and reliability). In connection with subsections (i) and\ \ (ii) above, Cloudian may request that Licensee replace certain user-installable\ \ parts. Repaired or replacement hardware will be warranted for the remainder\ \ of the original Hardware Warranty Period.\n\n(c) Notwithstanding anything to\ \ the contrary, Cloudian will not accept the return of any hardware from Licensee\ \ unless Licensee obtains a Return Material Authorization number from Cloudian\ \ and such number is included with the return. For any such return, Licensee will\ \ prepay the shipping charges and insure the shipment (or accept the risk if the\ \ returned items are lost or damaged in shipment). All hardware returned by Licensee\ \ to Cloudian will become the property of Cloudian. Licensee will return to Cloudian\ \ all defective hardware for which Cloudian provides a replacement to Licensee,\ \ and if Licensee does not do so, Licensee will pay Cloudian\u2019s then-current\ \ spare parts price for such hardware to Cloudian.\n\n(d) This Section 8.2 sets\ \ forth Licensee\u2019s sole remedy and Cloudian\u2019s sole liability for any\ \ breach of the warranties set forth in Section 8.1.\n\n8.3 Warranty exclusions.\ \ Cloudian will have no liability and no obligations in connection with any breach\ \ of any warranty set forth in Section 8.1 if (a) the affected Licensed Software\ \ or Cloudian Appliance Product unit is used or installed in a manner that is\ \ not consistent with the Documentation or not permitted under this Agreement,\ \ (b) such Licensed Software or Cloudian Appliance Product unit is subject to\ \ any abuse, misuse, neglect, accident or casualty loss, or to any modification,\ \ alteration or repair not performed by Cloudian or its authorized representative,\ \ or (c) the original identification marks have been removed from such Licensed\ \ Software or Cloudian Appliance Product unit. In addition, Cloudian will have\ \ no liability and no obligations in connection with any problems with any Licensed\ \ Software or Cloudian Appliance Product unit arising from (i) any third party\ \ items or services with which it is used or (ii) any other causes beyond Cloudian\u2019\ s control.\n\n8.4 Disclaimer. EXCEPT FOR THE WARRANTIES SET FORTH IN SECTION 8.1,\ \ TO THE EXTENT PERMITTED UNDER APPLICABLE LAW, CLOUDIAN DOES NOT MAKE, AND CLOUDIAN\ \ HEREBY DISCLAIMS, ANY REPRESENTATIONS OR WARRANTIES (WHETHER EXPRESS, IMPLIED,\ \ STATUTORY OR OTHERWISE) WITH RESPECT TO ANY CLOUDIAN PRODUCT, LICENSED SOFTWARE,\ \ DOCUMENTATION OR THIRD PARTY SOFTWARE, OR ANY OTHER PRODUCTS, SERVICES OR MATERIALS\ \ PROVIDED BY OR FOR CLOUDIAN HEREUNDER, INCLUDING ANY WARRANTIES OF FITNESS FOR\ \ A PARTICULAR PURPOSE, MERCHANTABILITY, ACCURACY OR NONINFRINGEMENT, AND ANY\ \ WARRANTIES ARISING FROM A COURSE OF DEALING, COURSE OF PERFORMANCE OR USAGE\ \ OF TRADE. Without limitation of the foregoing, Cloudian does not represent or\ \ warrant that any Cloudian Product, Licensed Software, Documentation or Third\ \ Party Software, or any services provided by Cloudian, will meet the requirements\ \ of Licensee (even if such requirements are known to Cloudian) or will operate\ \ without interruption or be error free, or that any defects in any Cloudian Product\ \ or Licensed Software can be corrected. For purposes of clarification, Cloudian\ \ makes no representations or warranties to any of customers of Licensee or other\ \ third parties.\n\n9. Limitations of Liability\n\nIN NO EVENT WILL CLOUDIAN BE\ \ LIABLE UNDER ANY LEGAL THEORY FOR ANY INCIDENTAL, INDIRECT, CONSEQUENTIAL, SPECIAL,\ \ EXEMPLARY OR PUNITIVE DAMAGES, OR DAMAGES FOR LOSS OF PROFITS, DATA OR BUSINESS,\ \ IN CONNECTION WITH THIS AGREEMENT, EVEN IF CLOUDIAN HAS BEEN ADVISED OF THE\ \ POSSIBILITY OF SUCH DAMAGES. CLOUDIAN\u2019S AGGREGATE LIABILITY TO LICENSEE\ \ ARISING OUT OF OR IN CONNECTION WITH CLOUDIAN PRODUCTS, LICENSED SOFTWARE, DOCUMENTATION,\ \ THIRD PARTY SOFTWARE AND ALL OTHER ASPECTS OF THIS AGREEMENT WILL BE LIMITED\ \ TO PROVEN DIRECT DAMAGES IN AN AMOUNT NOT TO EXCEED THE GREATER OF (A) THE AGGREGATE\ \ OF THE AMOUNTS PAID BY LICENSEE TO CLOUDIAN FOR THE LICENSED SOFTWARE AND CLOUDIAN\ \ HARDWARE PRODUCT UNITS GIVING RISE TO SUCH LIABILITY OR (B) FIVE HUNDRED U.S.\ \ DOLLARS (US$500). CLOUDIAN will have no liability with respect to claims relating\ \ to or arising from the use of third party software OR HARDWARE or any other\ \ non-CLOUDIAN products and services, even if CLOUDIAN has recommended, referred\ \ or introduced LICENSEE to such products and services. THE FOREGOING LIMITATIONS\ \ WILL APPLY NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF ANY LIMITED REMEDY\ \ PROVIDED HEREIN. CLOUDIAN WILL HAVE NO LIABILITY IN CONNECTION WITH THIS AGREEMENT\ \ TO ANY CUSTOMERS OF LICENSEE OR OTHER THIRD PARTIES. As part of its obligation\ \ to mitigate damages, Licensee will take reasonable data back-up measures from\ \ time to time as requested by Cloudian or specified in any Documentation, manuals,\ \ release notes or support notes.\nUnless otherwise required by applicable law,\ \ the limitation period for any claim for damages under this Agreement will be\ \ the shorter of (a) eighteen (18) months after the applicable cause of action\ \ accrues and (b) the limitation period under applicable statutory law.\n\n10.\ \ Indemnification\n\n10.1 Cloudian Obligations. Subject to the limitations and\ \ conditions set forth in Sections 10.2 and 10.3, and provided that Licensee is\ \ not in breach of this Agreement, Cloudian will (i) defend, or at its option\ \ settle, any claim brought by a third party in a lawsuit or similar legal proceeding\ \ against Licensee alleging that Licensee\u2019s use of the Licensed Software\ \ (in the form delivered by Cloudian to Licensee) under a Production License as\ \ permitted under this Agreement infringes such third party\u2019s copyright or\ \ misappropriates such third party\u2019s trade secret (\u201CClaim Against Licensee\u201D\ ), and (ii) pay all damages and costs finally awarded by a court of competent\ \ jurisdiction against Licensee in such lawsuit or legal proceeding for such Claim\ \ Against Licensee, or the amount of any settlement payment for such Claim Against\ \ Licensee agreed to by Cloudian.\n\n10.2 Indemnification Conditions. The obligations\ \ of Cloudian under Section 10.1 will be contingent upon Cloudian receiving (a)\ \ prompt written notice of the Claim Against Licensee that is the subject of such\ \ obligations, (b) sole control and authority over the defense and settlement\ \ of such claim, and (c) all information in Licensee\u2019s possession regarding\ \ such claim and proper and full assistance and cooperation from Licensee in connection\ \ with the settlement and defense of such claim.\n\n10.3 Exclusions. Notwithstanding\ \ the foregoing, Cloudian will have no liability and no obligations under Section\ \ 10.1 to the extent a Claim Against Licensee arises from or relates to: (i) the\ \ use of any release of any Licensed Software other than the then-current, unaltered\ \ release if the alleged infringement would have been avoided by the use of a\ \ subsequent release that was made available to Licensee; (ii) any modification\ \ to any Licensed Software not made by Cloudian or its authorized representative;\ \ (iii) the combination, operation or use of any Licensed Software with software,\ \ hardware or data not provided by Cloudian; (iv) the use of any Licensed Software\ \ other than in the manner specified in the Documentation; (v) the use, reproduction,\ \ distribution or other exploitation of any Licensed Software in a manner not\ \ authorized by this Agreement; or (vi) the use of any Licensed Software under\ \ an Evaluation License. In addition, Cloudian will have no obligations under\ \ Section 10.1 in connection with a Claim Against Licensee if, prior to such Claim\ \ Against Licensee being brought, Cloudian did not receive full payment of all\ \ amounts payable by Licensee for the Licensed Software that is the subject of\ \ such Claim Against Licensee.\n\n10.4 Remedial Options. Licensee will promptly\ \ install each mandatory update to any Licensed Software issued by Cloudian that\ \ is designed to avoid or reduce the likelihood of infringement or misappropriation\ \ by such Licensed Software. If Licensee\u2019s use of any Licensed Software is\ \ enjoined by a court of competent jurisdiction, either party may terminate any\ \ or all Licenses of such Licensed Software upon written notice to the other party.\n\ \n10.5 Entire Liability. Notwithstanding anything to the contrary, this Section\ \ 10 states the entire liability and obligations of Cloudian, and the sole and\ \ exclusive remedy of Licensee, in connection with any infringement or misappropriation\ \ of intellectual property rights (and any claims of such infringement or misappropriation)\ \ arising out of or related to Cloudian Products and Licensed Software.\n\n11.\ \ License Termination\n\n11.1 Termination for Cause\n\n(a)Either party may terminate\ \ any Evaluation License during the applicable Evaluation License Term (i) at\ \ any time upon five (5) days\u2019 written notice to the other party, or (ii)\ \ immediately upon written notice to the other party if the other party commits\ \ a material breach of this Agreement in connection with any Licensed Software\ \ covered by such Evaluation License or the corresponding Cloudian Product.\n\n\ (b) Either party may terminate any Production License during the applicable Production\ \ License Term immediately upon written notice to the other party if the other\ \ party commits any material breach of this Agreement in connection with any Licensed\ \ Software covered by such Production License or the corresponding Cloudian Product\ \ and fails to remedy such breach within thirty (30) days after receipt of written\ \ notice specifying the occurrence or existence of such breach. In addition, (i)\ \ upon any sale, lease or other transfer of a Cloudian Appliance Product unit\ \ by Licensee to a third party, the then-current Software License for the Licensed\ \ Software corresponding to such Cloudian Appliance Product unit, and all of Cloudian\u2019\ s obligations and liabilities under Sections 5, 8 and 10, will immediately terminate\ \ with respect to such Licensed Software, and (ii) if any Production License is\ \ terminated by Cloudian under this paragraph due to a breach of Section 3 by\ \ Licensee, Cloudian may terminate all other Software Licenses granted to Licensee.\n\ \n11.2 Effect of Termination. Upon any expiration or termination of any Software\ \ License, Licensee will promptly (a) remove, delete and purge all copies of the\ \ Licensed Software covered by such Software License from all computer systems\ \ and storage media in or under the possession or control of Licensee (including\ \ any such copies installed on the hardware of Cloudian Appliance Product units\ \ that are not returned to Cloudian, but excluding any such copies installed on\ \ the hardware of Cloudian Appliance Product units that are returned by Licensee\ \ to Cloudian), (b) delete all copies of the Documentation used in connection\ \ with such Licensed Software, (c) provide Cloudian with a written certification,\ \ signed by an officer of Licensee, that Licensee has complied with the foregoing,\ \ and (d) promptly generate and send to Cloudian (by e-mail) Audit Files and any\ \ other Software Usage Data Files for such Licensed Software requested by Cloudian\ \ covering any periods for which Cloudian did not previously receive an Audit\ \ File and any other periods requested by Cloudian. In addition, upon any expiration\ \ or termination of any licenses of Licensed Software and Documentation granted\ \ in Section 2, all rights and obligations of the parties under Sections 5, 8\ \ and 10 will terminate with respect to such Licensed Software and Documentation.\n\ \n11.3 Return of Appliance. Within ten (10) days of the expiration or termination\ \ of any Evaluation License applicable to a Cloudian Appliance Product unit (\u201C\ Appliance Return Period\u201D), Licensee will, at its own expense, return such\ \ unit to Cloudian (to an address specified by Cloudian) undamaged and in good\ \ working order (excluding ordinary wear and tear), and free and clear of all\ \ liens and other encumbrances. If such unit is returned with any hardware damage\ \ (excluding ordinary wear and tear), Licensee will promptly pay for the repair\ \ of such damage at Cloudian\u2019s then-current list prices. If Licensee does\ \ not return such unit within the Appliance Return Period, Licensee will be deemed\ \ to have purchased such unit at Cloudian\u2019s then-current list price, and\ \ Licensee will pay such list price to Cloudian promptly upon receipt of Cloudian\u2019\ s invoice therefor. This paragraph will not apply if such unit is purchased by\ \ Licensee prior to the end of such Evaluation License Term or Appliance Return\ \ Period.\n\n11.4 No Liability. If a party terminates any Software License in\ \ accordance with any of the provisions of this Agreement, such party will not\ \ be liable to the other party because of such termination: (a) for compensation\ \ for the other party\u2019s loss of prospective profits or anticipated sales;\ \ (b) on account of any expenditures, investments or commitments made by the other\ \ party; or (c) for any other damages, losses or expenses incurred by the other\ \ party based upon or arising out of such termination.\n\n12. General Provisions\n\ \n12.1 Force Majeure. Neither party will be responsible or have any liability\ \ for any delay or failure to perform any of its obligations under this Agreement\ \ (excluding payment obligations) to the extent such failure is due to unforeseen\ \ circumstances or to causes beyond such party\u2019s reasonable control, including\ \ acts of God, earthquake, fire, flood, embargoes, labor disputes and strikes,\ \ riots, acts of terrorism, war, and acts of civil and military authorities.\n\ \n12.2 Severability. If any provision of this Agreement is declared or found by\ \ a court or arbitral panel of competent jurisdiction to be invalid, illegal or\ \ otherwise unenforceable, (a) the parties will negotiate, in good faith, a substitute,\ \ valid and enforceable provision which most nearly effects the parties\u2019\ \ intent in entering into this Agreement, and (b) the remainder of this Agreement\ \ will remain in full force and effect.\n\n12.3 Assignment. Neither party may\ \ assign, delegate or otherwise transfer this Agreement or any of its rights or\ \ obligations under this Agreement, whether voluntarily, by operation of law or\ \ otherwise, without the prior written consent of the other party. Notwithstanding\ \ the foregoing, either party may, with written notice to the other party (but\ \ without any requirement to obtain the other party\u2019s consent), assign this\ \ Agreement, together with all of its rights and obligations hereunder, to a third\ \ party that acquires (whether by asset purchase, merger or other transaction\ \ or series of transactions) all or substantially all of its business to which\ \ this Agreement relates; provided that if Licensee assigns this Agreement pursuant\ \ to this sentence, all Evaluation Licenses then in effect will immediately terminate.\ \ Any attempted assignment, delegation or other transfer prohibited by the foregoing\ \ will be null and void. Subject to the foregoing, this Agreement will inure to\ \ the benefit of and bind each party\u2019s successors and assigns.\n\n12.4 Governing\ \ Law. This Agreement is to be construed in accordance with and governed by the\ \ laws of the State of California without giving effect to any choice of law rule\ \ that would cause the application of the laws of any other jurisdiction. This\ \ Agreement will not be governed by the U.N. Convention on Contracts for the International\ \ Sale of Goods, the application of which is expressly excluded.\n\n12.5 Dispute\ \ Resolution. Any dispute relating to this Agreement (other than claims for injunctions\ \ and other equitable relief) will be settled exclusively by arbitration in San\ \ Mateo, California in accordance with the then-prevailing Commercial Arbitration\ \ Rules of the American Arbitration Association. Judgment upon the award rendered\ \ by such arbitration will be final and binding upon the parties and may be entered\ \ in any court having jurisdiction. The arbitrator(s) will not have the power\ \ to add to, subtract from or otherwise modify any provision of this Agreement,\ \ to grant any extension or renewal of this Agreement, or to award damages or\ \ other remedies expressly prohibited by the Agreement. Notwithstanding the foregoing,\ \ each party will have the right to seek injunctive or other equitable relief\ \ at any time from any court of competent jurisdiction.\n\n12.6 No Waiver. No\ \ waiver of any provision of this Agreement will be effective unless it is specified\ \ in a writing signed by an authorized representative of each party. No course\ \ of dealing, course of performance or failure of either party to enforce any\ \ provision of this Agreement in a strict or timely manner will be construed as\ \ a waiver of such provision or any other provision. No waiver or breach of any\ \ provision of this Agreement will be construed to be a waiver of any subsequent\ \ breach of the same or any other provision.\n\n12.7 Relationship of the Parties.\ \ This Agreement will not be construed as creating an agency, partnership, joint\ \ venture or any other form of association between the parties, and the parties\ \ will at all times be and remain independent contractors. Except as expressly\ \ agreed by the parties in writing, neither party will have any right or authority,\ \ express or implied, to assume or create any obligation of any kind, or to make\ \ any representation or warranty, on behalf of the other party or to bind the\ \ other party in any respect whatsoever.\n\n12.8 Notices. Unless otherwise set\ \ forth in this Agreement, any notice required or permitted hereunder will be\ \ deemed to be a valid notice for the purposes of this Agreement only if it (a)\ \ is in writing, (b) makes reference to this Agreement, and (c) is delivered in\ \ person, by reputable courier, or mailed by certified or registered mail, postage\ \ prepaid, return receipt requested, in each case to the address of the intended\ \ recipient specified on the first page of this Agreement (or to such other address\ \ as may be designated by the intended recipient to the other party in accordance\ \ with this Section 12.8). Each such notice will be deemed given when received\ \ by the intended recipient.\n\n12.9 Interpretation. The captions and headings\ \ used in this Agreement are inserted for convenience only, do not form a part\ \ of this Agreement and will not be used in any way to construe or interpret this\ \ Agreement. This Agreement will be deemed to have been drafted by all parties;\ \ no provision will be construed against either party by reason of the fact that\ \ it was drafted by such party. The words \u201Cinclude\u201D and \u201Cincluding\u201D\ \ will not be construed as terms of limitation and will therefore mean \u201C\ including but not limited to\u201D and \u201Cincluding without limitation.\u201D\ \n\n12.10 Entire Agreement; Amendment. This Agreement contains the entire agreement\ \ of the parties with respect to the subject matter of this Agreement and merge\ \ and supersede any and all prior and contemporaneous agreements, understandings\ \ and communications between the parties, whether oral or written, with respect\ \ to such subject matter. This Agreement cannot be modified or amended except\ \ in a writing signed by both parties. No terms or conditions that are contained\ \ in any purchase order or other document submitted by Licensee will in any way\ \ modify or add to the terms of this Agreement, and any such terms or conditions\ \ that are in any way inconsistent with or additional to the terms of this Agreement\ \ are hereby rejected by Cloudian and will have no force or effect." label: Cloudian HyperStore operatorYaml: content: "apiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n name:\ \ '{{ .service.prefix }}-leader-election-role'\n namespace: '{{ .service.namespace\ \ }}'\nrules:\n- apiGroups:\n - \"\"\n resources:\n - configmaps\n verbs:\n\ \ - get\n - list\n - watch\n - create\n - update\n - patch\n - delete\n\ - apiGroups:\n - \"\"\n resources:\n - configmaps/status\n verbs:\n - get\n\ \ - update\n - patch\n- apiGroups:\n - \"\"\n resources:\n - events\n \ \ verbs:\n - create\n - patch\n---\napiVersion: rbac.authorization.k8s.io/v1\n\ kind: ClusterRole\nmetadata:\n labels:\n rbac.authorization.k8s.io/aggregate-to-edit:\ \ \"true\"\n name: '{{ .service.prefix }}-edit-role'\nrules:\n- apiGroups:\n\ \ - hs.cloudian.com\n resources:\n - hyperstores\n verbs:\n - create\n\ \ - delete\n - get\n - list\n - patch\n - update\n - watch\n- apiGroups:\n\ \ - hs.cloudian.com\n resources:\n - hyperstores/status\n verbs:\n - get\n\ ---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n\ \ creationTimestamp: null\n name: '{{ .service.prefix }}-operator-role'\n\ rules:\n- apiGroups:\n - apps\n resources:\n - statefulsets\n verbs:\n \ \ - create\n - delete\n - get\n - list\n - patch\n - update\n - watch\n\ - apiGroups:\n - cns.vmware.com\n resources:\n - storagepools\n verbs:\n\ \ - get\n - list\n - watch\n- apiGroups:\n - \"\"\n resources:\n - configmaps\n\ \ - pods/exec\n - secrets\n verbs:\n - create\n - get\n - list\n - patch\n\ \ - update\n - watch\n- apiGroups:\n - \"\"\n resources:\n - events\n \ \ verbs:\n - create\n - patch\n- apiGroups:\n - \"\"\n resources:\n - namespaces\n\ \ - namespaces/status\n - nodes\n - resourcequotas\n - resourcequotas/status\n\ \ verbs:\n - get\n - list\n - watch\n- apiGroups:\n - \"\"\n resources:\n\ \ - persistentvolumeclaims\n - pods\n - services\n verbs:\n - create\n\ \ - delete\n - get\n - list\n - patch\n - update\n - watch\n- apiGroups:\n\ \ - hs.cloudian.com\n resources:\n - hyperstores\n verbs:\n - create\n\ \ - get\n - list\n - patch\n - update\n - watch\n- apiGroups:\n - hs.cloudian.com\n\ \ resources:\n - hyperstores/status\n verbs:\n - get\n - patch\n - update\n\ - apiGroups:\n - networking.k8s.io\n resources:\n - networkpolicies\n verbs:\n\ \ - create\n - get\n - list\n - watch\n- apiGroups:\n - storage.k8s.io\n\ \ resources:\n - storageclasses\n verbs:\n - get\n - list\n - watch\n\ ---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n\ \ labels:\n rbac.authorization.k8s.io/aggregate-to-view: \"true\"\n name:\ \ '{{ .service.prefix }}-view-role'\nrules:\n- apiGroups:\n - hs.cloudian.com\n\ \ resources:\n - hyperstores\n verbs:\n - get\n - list\n - watch\n- apiGroups:\n\ \ - hs.cloudian.com\n resources:\n - hyperstores/status\n verbs:\n - get\n\ ---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n\ \ name: '{{ .service.prefix }}-leader-election-rolebinding'\n namespace: '{{\ \ .service.namespace }}'\nroleRef:\n apiGroup: rbac.authorization.k8s.io\n\ \ kind: Role\n name: '{{ .service.prefix }}-leader-election-role'\nsubjects:\n\ - kind: ServiceAccount\n name: default\n namespace: '{{ .service.namespace\ \ }}'\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\n\ metadata:\n name: '{{ .service.prefix }}-operator-rolebinding'\nroleRef:\n\ \ apiGroup: rbac.authorization.k8s.io\n kind: ClusterRole\n name: '{{ .service.prefix\ \ }}-operator-role'\nsubjects:\n- kind: ServiceAccount\n name: default\n namespace:\ \ '{{ .service.namespace }}'\n---\napiVersion: v1\ndata:\n .dockerconfigjson:\ \ '{{ if .Values.registryUsername }}{{ printf \"{\\\"auths\\\": {\\\"%s\\\"\ : {\\\"auth\\\": \\\"%s\\\"}}}\" .Values.registryName (printf \"%s:%s\" .Values.registryUsername\ \ .Values.registryPasswd | b64enc) | b64enc }}{{ else }}ewogICJhdXRocyI6IHsKICAgICJxdWF5LmlvIjogewogICAgICAiYXV0aCI6ICJZMnh2ZFdScFlXNHJhSE5qWkc5M2JteHZZV1E2TmpGYVRqTlBWRFZCTmxwUU1rcFNWalF5T1ZsRFJGSkJRamhHTWpGTFMxVXhNemRaUVZsTk1EUmFOa0ZYTlZWSFFsaFFSMVJTTWxSWlFqTlFTVGRHV1E9PSIsCiAgICAgICJlbWFpbCI6ICIiCiAgICB9CiAgfQp9{{\ \ end }}'\nkind: Secret\nmetadata:\n name: '{{ .service.prefix }}-regcred'\n\ \ namespace: '{{ .service.namespace }}'\ntype: kubernetes.io/dockerconfigjson\n\ ---\napiVersion: v1\nkind: Service\nmetadata:\n name: '{{ .service.prefix }}-vcuiplugin-svc'\n\ \ namespace: '{{ .service.namespace }}'\nspec:\n ports:\n - name: https\n\ \ port: 3000\n selector:\n app: '{{ .service.prefix }}-vcuiplugin'\n\ \ type: ClusterIP\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n\ \ name: '{{ .service.prefix }}-operator'\n namespace: '{{ .service.namespace\ \ }}'\nspec:\n replicas: 3\n selector:\n matchLabels:\n managedBy:\ \ cloudian\n name: '{{ .service.prefix }}-operator'\n template:\n metadata:\n\ \ labels:\n managedBy: cloudian\n name: '{{ .service.prefix\ \ }}-operator'\n spec:\n containers:\n - args:\n - --enable-leader-election\n\ \ command:\n - hyperstore-operator\n env:\n - name:\ \ VMW_INSUFF_LOCAL_STORAGE\n value: enable\n - name: REBUILD_TIMER_EMM\n\ \ value: '{{ default 360 .Values.rebuild_timer_emm }}'\n - name:\ \ REBUILD_TIMER_NODE\n value: '{{ default 360 .Values.rebuild_timer_node\ \ }}'\n - name: REBUILD_TIMER_PVC\n value: '{{ default 60 .Values.rebuild_timer_pvc\ \ }}'\n - name: IMAGE_PULL_SECRETS\n value: '{{ .service.prefix\ \ }}-regcred'\n - name: IMAGE_HSC\n value: '{{ default \"quay.io\"\ \ .Values.registryName }}/cloudian/hyperstorec:v1.2.1rc1@sha256:03f30a7bc467872e4ba34048265c3889c891b6c98baf2c74b7c7189880a92420'\n\ \ - name: WATCH_NAMESPACE\n valueFrom:\n fieldRef:\n\ \ fieldPath: metadata.namespace\n - name: POD_NAME\n \ \ valueFrom:\n fieldRef:\n fieldPath: metadata.name\n\ \ - name: OPERATOR_NAME\n value: hyperstore-operator\n \ \ - name: IMAGE_PULL_POLICY\n value: IfNotPresent\n image:\ \ '{{ default \"quay.io\" .Values.registryName }}/cloudian/hyperstore-operator:v1.2.1rc1@sha256:668f7530022f1982258ce94906e7f55aacc71fd6dc7bba2cb7ec917345485408'\n\ \ imagePullPolicy: IfNotPresent\n name: hyperstore-operator\n\ \ resources:\n limits:\n cpu: 100m\n memory:\ \ 1Gi\n requests:\n cpu: 100m\n memory: 500Mi\n\ \ imagePullSecrets:\n - name: '{{ .service.prefix }}-regcred'\n \ \ terminationGracePeriodSeconds: 10\n---\napiVersion: apps/v1\nkind: Deployment\n\ metadata:\n labels:\n app: '{{ .service.prefix }}-vcuiplugin'\n name: '{{\ \ .service.prefix }}-vcuiplugin'\n namespace: '{{ .service.namespace }}'\n\ spec:\n replicas: 3\n selector:\n matchLabels:\n app: '{{ .service.prefix\ \ }}-vcuiplugin'\n template:\n metadata:\n labels:\n app: '{{\ \ .service.prefix }}-vcuiplugin'\n managedBy: cloudian\n spec:\n \ \ containers:\n - image: '{{ default \"quay.io\" .Values.registryName\ \ }}/cloudian/vc-ui-plugin-server:v1.2.1rc1@sha256:fabfd519bf87b36d68358fb31796f244e6bd6969b4398cf08b3388ad67e255c4'\n\ \ imagePullPolicy: IfNotPresent\n name: '{{ .service.prefix }}-vcuiplugin'\n\ \ ports:\n - containerPort: 3000\n resources:\n \ \ requests:\n memory: 2Gi\n volumeMounts:\n - mountPath:\ \ /app/certs\n name: certsecret\n imagePullSecrets:\n - name:\ \ '{{ .service.prefix }}-regcred'\n serviceAccountName: default\n \ \ volumes:\n - name: certsecret\n secret:\n items:\n \ \ - key: tls.crt\n path: cert.crt\n - key: tls.key\n\ \ path: cert.key\n secretName: hs-cmc-uiplugin-secret\n\ ---\napiVersion: appplatform.wcp.vmware.com/v1beta1\nkind: VCUIPlugin\nmetadata:\n\ \ labels:\n controller-tools.k8s.io: \"1.0\"\n name: '{{ .service.prefix\ \ }}-vcuiplugin'\n namespace: '{{ .service.namespace }}'\nspec:\n name: '{{\ \ .service.prefix }}-vcuiplugin'\n uiBackendSecret: hs-cmc-uiplugin-secret\n\ \ uiBackendService: '{{ .service.prefix }}-vcuiplugin-svc'\n vSphereExtensionKey:\ \ com.cloudian.hs.cmc\n vSphereUiPluginUrl: plugin.json\n version: 1.2.1\n\ ---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n name:\ \ '{{ .service.prefix }}-operator-allow'\n namespace: '{{ .service.namespace\ \ }}'\nspec:\n ingress:\n - {}\n podSelector:\n matchLabels:\n managedBy:\ \ cloudian\n policyTypes:\n - Ingress\n\n---\napiVersion: psp.wcp.vmware.com/v1beta1\n\ kind: PersistenceServiceConfiguration\nmetadata:\n name: {{ .service.prefix\ \ }}-psp-config\n namespace: {{ .service.namespace }}\nspec:\n enableHostLocalStorage:\ \ true\n serviceID: hyperstore\n" format: plain serviceID: hyperstore version: 1.2.1