# Copyright (c) 2020 Red Hat, Inc.
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: klusterletaddonconfigs.agent.open-cluster-management.io
spec:
  group: agent.open-cluster-management.io
  names:
    kind: KlusterletAddonConfig
    listKind: KlusterletAddonConfigList
    plural: klusterletaddonconfigs
    singular: klusterletaddonconfig
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      description: KlusterletAddonConfig is the Schema for the klusterletaddonconfigs
        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: KlusterletAddonConfigSpec defines the desired state of KlusterletAddonConfig
          properties:
            applicationManager:
              description: KlusterletAddonConfigApplicationManagerSpec defines configuration
                for the ApplicationManager component
              properties:
                argocdCluster:
                  type: boolean
                enabled:
                  type: boolean
              required:
              - enabled
              type: object
            certPolicyController:
              description: KlusterletAddonConfigCertPolicyControllerSpec defines configuration
                for the CertPolicyController component
              properties:
                enabled:
                  type: boolean
              required:
              - enabled
              type: object
            clusterLabels:
              additionalProperties:
                type: string
              type: object
            clusterName:
              minLength: 1
              type: string
            clusterNamespace:
              minLength: 1
              type: string
            componentOperatorImage:
              description: used for dev work only
              type: string
            iamPolicyController:
              description: KlusterletAddonConfigIAMPolicyControllerSpec defines configuration
                for the IAMPolicyController component
              properties:
                enabled:
                  type: boolean
              required:
              - enabled
              type: object
            imageNamePostfix:
              type: string
            imagePullPolicy:
              description: PullPolicy describes a policy for if/when to pull a container
                image
              enum:
              - Always
              - Never
              - IfNotPresent
              type: string
            imagePullSecret:
              minLength: 1
              type: string
            imageRegistry:
              type: string
            policyController:
              description: KlusterletAddonConfigPolicyControllerSpec defines configuration
                for the PolicyController component
              properties:
                enabled:
                  type: boolean
              required:
              - enabled
              type: object
            searchCollector:
              description: KlusterletAddonConfigSearchCollectorSpec defines configuration
                for the SearchCollector component
              properties:
                enabled:
                  type: boolean
              required:
              - enabled
              type: object
            version:
              type: string
          required:
          - applicationManager
          - certPolicyController
          - clusterLabels
          - clusterName
          - clusterNamespace
          - iamPolicyController
          - policyController
          - searchCollector
          type: object
        status:
          description: KlusterletAddonConfigStatus defines the observed state of KlusterletAddonConfig
          type: object
      type: object
  version: v1
  versions:
  - name: v1
    served: true
    storage: true
