apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.15.0
  creationTimestamp: null
  name: nexusblobstores.edp.epam.com
spec:
  group: edp.epam.com
  names:
    kind: NexusBlobStore
    listKind: NexusBlobStoreList
    plural: nexusblobstores
    singular: nexusblobstore
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: Status of the blob store
      jsonPath: .status.value
      name: Status
      type: string
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: NexusBlobStore is the Schema for the nexusblobstores 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: NexusBlobStoreSpec defines the desired state of NexusBlobStore.
            properties:
              file:
                description: File type blobstore.
                properties:
                  path:
                    description: |-
                      The path to the blobstore contents.
                      This can be an absolute path to anywhere on the system Nexus Repository Manager has access to it or can be a path relative to the sonatype-work directory.
                    type: string
                type: object
              name:
                description: |-
                  Name of the BlobStore.
                  Name should be unique across all BlobStores.
                type: string
                x-kubernetes-validations:
                - message: Value is immutable
                  rule: self == oldSelf
              nexusRef:
                description: NexusRef is a reference to Nexus custom resource.
                properties:
                  kind:
                    default: Nexus
                    description: Kind specifies the kind of the Nexus resource.
                    type: string
                  name:
                    description: Name specifies the name of the Nexus resource.
                    type: string
                required:
                - name
                type: object
              s3:
                description: S3 type blobstore.
                properties:
                  advancedBucketConnection:
                    description: A custom endpoint URL, signer type and whether path
                      style access is enabled.
                    properties:
                      endpoint:
                        description: A custom endpoint URL for third party object
                          stores using the S3 API.
                        type: string
                      forcePathStyle:
                        default: false
                        description: Setting this flag will result in path-style access
                          being used for all requests.
                        type: boolean
                      maxConnectionPoolSize:
                        description: Setting this value will override the default
                          connection pool size of Nexus of the s3 client for this
                          blobstore.
                        format: int32
                        type: integer
                      signerType:
                        description: An API signature version which may be required
                          for third party object stores using the S3 API.
                        enum:
                        - DEFAULT
                        - S3SignerType
                        - AWSS3V4SignerType
                        type: string
                    type: object
                  bucket:
                    description: Details of the S3 bucket such as name and region.
                    properties:
                      expiration:
                        default: 3
                        description: How many days until deleted blobs are finally
                          removed from the S3 bucket (-1 to disable).
                        format: int32
                        type: integer
                      name:
                        description: The name of the S3 bucket.
                        type: string
                      prefix:
                        description: The S3 blob store (i.e. S3 object) key prefix.
                        type: string
                      region:
                        default: DEFAULT
                        description: The AWS region to create a new S3 bucket in or
                          an existing S3 bucket's region.
                        type: string
                    required:
                    - name
                    type: object
                  bucketSecurity:
                    description: Security details for granting access the S3 API.
                    properties:
                      accessKeyId:
                        description: An IAM access key ID for granting access to the
                          S3 bucket.
                        properties:
                          configMapKeyRef:
                            description: Selects a key of a ConfigMap.
                            properties:
                              key:
                                description: The key to select.
                                type: string
                              name:
                                description: |-
                                  Name of the referent.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  TODO: Add other useful fields. apiVersion, kind, uid?
                                type: string
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          secretKeyRef:
                            description: Selects a key of a secret.
                            properties:
                              key:
                                description: The key of the secret to select from.
                                type: string
                              name:
                                description: |-
                                  Name of the referent.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  TODO: Add other useful fields. apiVersion, kind, uid?
                                type: string
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                        type: object
                      role:
                        description: An IAM role to assume in order to access the
                          S3 bucket.
                        type: string
                      secretAccessKey:
                        description: The secret access key associated with the specified
                          IAM access key ID.
                        properties:
                          configMapKeyRef:
                            description: Selects a key of a ConfigMap.
                            properties:
                              key:
                                description: The key to select.
                                type: string
                              name:
                                description: |-
                                  Name of the referent.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  TODO: Add other useful fields. apiVersion, kind, uid?
                                type: string
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          secretKeyRef:
                            description: Selects a key of a secret.
                            properties:
                              key:
                                description: The key of the secret to select from.
                                type: string
                              name:
                                description: |-
                                  Name of the referent.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  TODO: Add other useful fields. apiVersion, kind, uid?
                                type: string
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                        type: object
                      sessionToken:
                        description: An AWS STS session token associated with temporary
                          security credentials which grant access to the S3 bucket.
                        properties:
                          configMapKeyRef:
                            description: Selects a key of a ConfigMap.
                            properties:
                              key:
                                description: The key to select.
                                type: string
                              name:
                                description: |-
                                  Name of the referent.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  TODO: Add other useful fields. apiVersion, kind, uid?
                                type: string
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          secretKeyRef:
                            description: Selects a key of a secret.
                            properties:
                              key:
                                description: The key of the secret to select from.
                                type: string
                              name:
                                description: |-
                                  Name of the referent.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  TODO: Add other useful fields. apiVersion, kind, uid?
                                type: string
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                        type: object
                    required:
                    - accessKeyId
                    - secretAccessKey
                    type: object
                  encryption:
                    description: The type of encryption to use if any.
                    properties:
                      encryptionKey:
                        description: If using KMS encryption, you can supply a Key
                          ID. If left blank, then the default will be used.
                        type: string
                      encryptionType:
                        description: The type of S3 server side encryption to use.
                        enum:
                        - none
                        - s3ManagedEncryption
                        - kmsManagedEncryption
                        type: string
                    type: object
                required:
                - bucket
                type: object
              softQuota:
                description: Settings to control the soft quota.
                properties:
                  limit:
                    description: The limit in MB.
                    format: int64
                    minimum: 1
                    type: integer
                  type:
                    description: Type of the soft quota.
                    enum:
                    - spaceRemainingQuota
                    - spaceUsedQuota
                    type: string
                type: object
            required:
            - name
            - nexusRef
            type: object
          status:
            description: NexusBlobStoreStatus defines the observed state of NexusBlobStore.
            properties:
              error:
                description: Error is an error message if something went wrong.
                type: string
              value:
                description: Value is a status of the blob store.
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: null
  storedVersions: null
