apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.6.2
  name: installplans.operators.coreos.com
spec:
  group: operators.coreos.com
  names:
    categories:
    - olm
    kind: InstallPlan
    listKind: InstallPlanList
    plural: installplans
    shortNames:
    - ip
    singular: installplan
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The first CSV in the list of clusterServiceVersionNames
      jsonPath: .spec.clusterServiceVersionNames[0]
      name: CSV
      type: string
    - description: The approval mode
      jsonPath: .spec.approval
      name: Approval
      type: string
    - jsonPath: .spec.approved
      name: Approved
      type: boolean
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: InstallPlan defines the installation of a set of operators.
        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: InstallPlanSpec defines a set of Application resources to
              be installed
            properties:
              approval:
                description: Approval is the user approval policy for an InstallPlan.
                  It must be one of "Automatic" or "Manual".
                type: string
              approved:
                type: boolean
              clusterServiceVersionNames:
                items:
                  type: string
                type: array
              generation:
                type: integer
              source:
                type: string
              sourceNamespace:
                type: string
            required:
            - approval
            - approved
            - clusterServiceVersionNames
            type: object
          status:
            description: "InstallPlanStatus represents the information about the status
              of steps required to complete installation. \n Status may trail the
              actual state of a system."
            properties:
              attenuatedServiceAccountRef:
                description: AttenuatedServiceAccountRef references the service account
                  that is used to do scoped operator install.
                properties:
                  apiVersion:
                    description: API version of the referent.
                    type: string
                  fieldPath:
                    description: 'If referring to a piece of an object instead of
                      an entire object, this string should contain a valid JSON/Go
                      field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within
                      a pod, this would take on a value like: "spec.containers{name}"
                      (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]"
                      (container with index 2 in this pod). This syntax is chosen
                      only to have some well-defined way of referencing a part of
                      an object. TODO: this design is not final and this field is
                      subject to change in the future.'
                    type: string
                  kind:
                    description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                    type: string
                  name:
                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                  namespace:
                    description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                    type: string
                  resourceVersion:
                    description: 'Specific resourceVersion to which this reference
                      is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                    type: string
                  uid:
                    description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                    type: string
                type: object
              bundleLookups:
                description: BundleLookups is the set of in-progress requests to pull
                  and unpackage bundle content to the cluster.
                items:
                  description: BundleLookup is a request to pull and unpackage the
                    content of a bundle to the cluster.
                  properties:
                    catalogSourceRef:
                      description: CatalogSourceRef is a reference to the CatalogSource
                        the bundle path was resolved from.
                      properties:
                        apiVersion:
                          description: API version of the referent.
                          type: string
                        fieldPath:
                          description: 'If referring to a piece of an object instead
                            of an entire object, this string should contain a valid
                            JSON/Go field access statement, such as desiredState.manifest.containers[2].
                            For example, if the object reference is to a container
                            within a pod, this would take on a value like: "spec.containers{name}"
                            (where "name" refers to the name of the container that
                            triggered the event) or if no container name is specified
                            "spec.containers[2]" (container with index 2 in this pod).
                            This syntax is chosen only to have some well-defined way
                            of referencing a part of an object. TODO: this design
                            is not final and this field is subject to change in the
                            future.'
                          type: string
                        kind:
                          description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                          type: string
                        name:
                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                          type: string
                        namespace:
                          description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                          type: string
                        resourceVersion:
                          description: 'Specific resourceVersion to which this reference
                            is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                          type: string
                        uid:
                          description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                          type: string
                      type: object
                    conditions:
                      description: Conditions represents the overall state of a BundleLookup.
                      items:
                        properties:
                          lastTransitionTime:
                            description: Last time the condition transitioned from
                              one status to another.
                            format: date-time
                            type: string
                          lastUpdateTime:
                            description: Last time the condition was probed.
                            format: date-time
                            type: string
                          message:
                            description: A human readable message indicating details
                              about the transition.
                            type: string
                          reason:
                            description: The reason for the condition's last transition.
                            type: string
                          status:
                            description: Status of the condition, one of True, False,
                              Unknown.
                            type: string
                          type:
                            description: Type of condition.
                            type: string
                        required:
                        - status
                        - type
                        type: object
                      type: array
                    identifier:
                      description: Identifier is the catalog-unique name of the operator
                        (the name of the CSV for bundles that contain CSVs)
                      type: string
                    path:
                      description: Path refers to the location of a bundle to pull.
                        It's typically an image reference.
                      type: string
                    properties:
                      description: The effective properties of the unpacked bundle.
                      type: string
                    replaces:
                      description: Replaces is the name of the bundle to replace with
                        the one found at Path.
                      type: string
                  required:
                  - catalogSourceRef
                  - identifier
                  - path
                  - replaces
                  type: object
                type: array
              catalogSources:
                items:
                  type: string
                type: array
              conditions:
                items:
                  description: InstallPlanCondition represents the overall status
                    of the execution of an InstallPlan.
                  properties:
                    lastTransitionTime:
                      format: date-time
                      type: string
                    lastUpdateTime:
                      format: date-time
                      type: string
                    message:
                      type: string
                    reason:
                      description: ConditionReason is a camelcased reason for the
                        state transition.
                      type: string
                    status:
                      type: string
                    type:
                      description: InstallPlanConditionType describes the state of
                        an InstallPlan at a certain point as a whole.
                      type: string
                  type: object
                type: array
              message:
                description: Message is a human-readable message containing detailed
                  information that may be important to understanding why the plan
                  has its current status.
                type: string
              phase:
                description: InstallPlanPhase is the current status of a InstallPlan
                  as a whole.
                type: string
              plan:
                items:
                  description: Step represents the status of an individual step in
                    an InstallPlan.
                  properties:
                    resolving:
                      type: string
                    resource:
                      description: StepResource represents the status of a resource
                        to be tracked by an InstallPlan.
                      properties:
                        group:
                          type: string
                        kind:
                          type: string
                        manifest:
                          type: string
                        name:
                          type: string
                        sourceName:
                          type: string
                        sourceNamespace:
                          type: string
                        version:
                          type: string
                      required:
                      - group
                      - kind
                      - name
                      - sourceName
                      - sourceNamespace
                      - version
                      type: object
                    status:
                      description: StepStatus is the current status of a particular
                        resource an in InstallPlan
                      type: string
                  required:
                  - resolving
                  - resource
                  - status
                  type: object
                type: array
              startTime:
                description: StartTime is the time when the controller began applying
                  the resources listed in the plan to the cluster.
                format: date-time
                type: string
            required:
            - catalogSources
            - phase
            type: object
        required:
        - metadata
        - spec
        type: object
    served: true
    storage: true
    subresources:
      status: {}
