Skip to content

Custom Resource Definitions

This document gives details about the Custom Resource Definitions (CRDs) that the SF-Operator installs on a cluster.

The specs are constantly evolving during alpha development, and should be considered unstable but the ultimate source of truth for documentation about their properties.

  1. SoftwareFactory

SoftwareFactory

This custom resource describes a Software Factory instance.

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.15.0
  name: softwarefactories.sf.softwarefactory-project.io
spec:
  group: sf.softwarefactory-project.io
  names:
    kind: SoftwareFactory
    listKind: SoftwareFactoryList
    plural: softwarefactories
    shortNames:
    - sf
    singular: softwarefactory
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .status.ready
      name: Ready
      type: boolean
    - description: Status
      jsonPath: .status.conditions[0].status
      name: Status
      type: string
    - description: Message
      jsonPath: .status.conditions[0].message
      name: Message
      type: string
    name: v1
    schema:
      openAPIV3Schema:
        description: SoftwareFactory is the Schema for the softwarefactories 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: SoftwareFactorySpec defines the desired state of SoftwareFactory
            properties:
              FluentBitLogForwarding:
                description: Enable log forwarding to a [Fluent Bit HTTP input](https://docs.fluentbit.io/manual/pipeline/inputs/http)
                properties:
                  debug:
                    default: false
                    description: Run fluent bit sidecars in debug mode. This will
                      output forwarded payloads and additional info in the sidecar's
                      logs. Defaults to false.
                    type: boolean
                  forwardInputHost:
                    description: The Host for the Fluent Bit Forward Input to forward
                      logs to.
                    type: string
                  forwardInputPort:
                    default: 24224
                    description: The (optional) port of the forward input, defaults
                      to 24224.
                    format: int32
                    type: integer
                type: object
              config-location:
                description: Config repository spec
                properties:
                  base-url:
                    description: Base URL to use to perform git-related actions on
                      the config repository. For example, if hosted on GitHub, the
                      Base URL would be `https://github.com/<username>/`
                    pattern: ^https?:\/\/.+$
                    type: string
                  branch:
                    description: The branch of the `config` repository. This value
                      is set to the load-branch.
                    type: string
                  k8s-api-url:
                    description: |-
                      Public URL of the k8s cluster API. This is useful when running zuul executors outside
                      of the cluster. This is mainly used for config-update secret generation
                    type: string
                  logserver-host:
                    description: |-
                      Public HOST of the default logserver. This is useful when running zuul executors outside
                      of the cluster. This is mainly used for config-update secret generation
                    type: string
                  name:
                    description: The name of the `config` repository. This value is
                      appended to `base-url` to clone the repository
                    minLength: 1
                    type: string
                  zuul-connection-name:
                    description: Name of the Zuul connection through which Zuul can
                      handle git events on the config repository
                    minLength: 1
                    type: string
                required:
                - base-url
                - name
                - zuul-connection-name
                type: object
              extraLabels:
                additionalProperties:
                  type: string
                description: Whether you need to add extra labels on all managed resources
                type: object
              fqdn:
                description: |-
                  The fully qualified domain name to use with the deployment. Relevant services will be served
                  at https://`service`.`FQDN`
                type: string
              gitserver:
                description: Git server spec
                properties:
                  storage:
                    properties:
                      className:
                        description: Default storage class to use with Persistent
                          Volume Claims issued by this resource. Consult your cluster's
                          configuration to see what storage classes are available
                          and recommended for your use case.
                        type: string
                      size:
                        anyOf:
                        - type: integer
                        - type: string
                        description: Storage space to allocate to the resource, expressed
                          as a [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/)
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                    required:
                    - size
                    type: object
                type: object
              logserver:
                default:
                  loopDelay: 3600
                  retentionDays: 60
                description: Logserver service spec
                properties:
                  loopDelay:
                    default: 3600
                    description: The frequency, in seconds, at which the log pruning
                      cronjob is running. Defaults to 3600s, i.e. logs are checked
                      for pruning every hour
                    minimum: 1
                    type: integer
                  retentionDays:
                    default: 60
                    description: Logs retention time in days. Logs older than this
                      setting in days will be purged by a pruning cronjob. Defaults
                      to 60 days
                    minimum: 1
                    type: integer
                  storage:
                    description: Storage-related settings
                    properties:
                      className:
                        description: Default storage class to use with Persistent
                          Volume Claims issued by this resource. Consult your cluster's
                          configuration to see what storage classes are available
                          and recommended for your use case.
                        type: string
                      size:
                        anyOf:
                        - type: integer
                        - type: string
                        description: Storage space to allocate to the resource, expressed
                          as a [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/)
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                    required:
                    - size
                    type: object
                type: object
              mariadb:
                description: MariaDB service spec
                properties:
                  dbStorage:
                    description: Storage parameters related to mariaDB's data
                    properties:
                      className:
                        description: Default storage class to use with Persistent
                          Volume Claims issued by this resource. Consult your cluster's
                          configuration to see what storage classes are available
                          and recommended for your use case.
                        type: string
                      size:
                        anyOf:
                        - type: integer
                        - type: string
                        description: Storage space to allocate to the resource, expressed
                          as a [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/)
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                    required:
                    - size
                    type: object
                  limits:
                    default:
                      cpu: 2000m
                      memory: 2Gi
                    description: Memory/CPU Limit
                    properties:
                      cpu:
                        anyOf:
                        - type: integer
                        - type: string
                        default: 2000m
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                      memory:
                        anyOf:
                        - type: integer
                        - type: string
                        default: 2Gi
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                    required:
                    - cpu
                    - memory
                    type: object
                  logStorage:
                    description: Storage parameters related to the database's logging
                    properties:
                      className:
                        description: Default storage class to use with Persistent
                          Volume Claims issued by this resource. Consult your cluster's
                          configuration to see what storage classes are available
                          and recommended for your use case.
                        type: string
                      size:
                        anyOf:
                        - type: integer
                        - type: string
                        description: Storage space to allocate to the resource, expressed
                          as a [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/)
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                    required:
                    - size
                    type: object
                required:
                - dbStorage
                - logStorage
                type: object
              nodepool:
                description: Nodepool services spec
                properties:
                  builder:
                    description: Nodepool-builder related settings
                    properties:
                      limits:
                        default:
                          cpu: 2000m
                          memory: 2Gi
                        description: Memory/CPU Limit
                        properties:
                          cpu:
                            anyOf:
                            - type: integer
                            - type: string
                            default: 2000m
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          memory:
                            anyOf:
                            - type: integer
                            - type: string
                            default: 2Gi
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                        required:
                        - cpu
                        - memory
                        type: object
                      logLevel:
                        description: |-
                          Specify the Log Level of the nodepool launcher process.
                          Valid values are:
                          "INFO" (default),
                          "WARN",
                          "DEBUG".
                        enum:
                        - INFO
                        - WARN
                        - DEBUG
                        type: string
                      storage:
                        description: Storage related settings
                        properties:
                          className:
                            description: Default storage class to use with Persistent
                              Volume Claims issued by this resource. Consult your
                              cluster's configuration to see what storage classes
                              are available and recommended for your use case.
                            type: string
                          size:
                            anyOf:
                            - type: integer
                            - type: string
                            description: Storage space to allocate to the resource,
                              expressed as a [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/)
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                        required:
                        - size
                        type: object
                    type: object
                  launcher:
                    description: Nodepool-launcher related settings
                    properties:
                      limits:
                        default:
                          cpu: 2000m
                          memory: 2Gi
                        description: Memory/CPU Limit
                        properties:
                          cpu:
                            anyOf:
                            - type: integer
                            - type: string
                            default: 2000m
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          memory:
                            anyOf:
                            - type: integer
                            - type: string
                            default: 2Gi
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                        required:
                        - cpu
                        - memory
                        type: object
                      logLevel:
                        description: |-
                          Specify the Log Level of the nodepool launcher service.
                          Valid values are:
                          "INFO" (default),
                          "WARN",
                          "DEBUG".
                          Changing this value will restart the service.
                        enum:
                        - INFO
                        - WARN
                        - DEBUG
                        type: string
                    type: object
                  statsdTarget:
                    description: The address to forward statsd metrics to (optional),
                      in the form "host:port"
                    type: string
                type: object
              prometheusMonitorsDisabled:
                default: false
                description: Set to true to disable deployment of PodMonitors and
                  related Prometheus resource
                type: boolean
              storageDefault:
                description: Default setting to use by Persistent Volume Claims
                properties:
                  className:
                    default: topolvm-provisioner
                    description: Default storage class to use with Persistent Volume
                      Claims issued by this resource. Consult your cluster's configuration
                      to see what storage classes are available and recommended for
                      your use case.
                    type: string
                  extraAnnotations:
                    additionalProperties:
                      type: string
                    description: Whether you need to add extra annotations to the
                      Persistent Volume Claims
                    type: object
                type: object
              zookeeper:
                description: Zookeeper service spec
                properties:
                  limits:
                    default:
                      cpu: 2000m
                      memory: 2Gi
                    description: Memory/CPU Limit
                    properties:
                      cpu:
                        anyOf:
                        - type: integer
                        - type: string
                        default: 2000m
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                      memory:
                        anyOf:
                        - type: integer
                        - type: string
                        default: 2Gi
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                    required:
                    - cpu
                    - memory
                    type: object
                  storage:
                    properties:
                      className:
                        description: Default storage class to use with Persistent
                          Volume Claims issued by this resource. Consult your cluster's
                          configuration to see what storage classes are available
                          and recommended for your use case.
                        type: string
                      size:
                        anyOf:
                        - type: integer
                        - type: string
                        description: Storage space to allocate to the resource, expressed
                          as a [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/)
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                    required:
                    - size
                    type: object
                required:
                - storage
                type: object
              zuul:
                description: Zuul service spec
                properties:
                  defaultAuthenticator:
                    description: The name of the default authenticator to use if no
                      authenticator is bound explicitly to a tenant with zuul-web
                    type: string
                  elasticsearchconns:
                    description: The list of ElasticSearch-based connections to add
                      to Zuul's configuration
                    items:
                      description: |-
                        Describes a Zuul connection using the [ElasticSearch driver](https://zuul-ci.org/docs/zuul/latest/drivers/elasticsearch.html#connection-configuration).
                        When an optional parameter is not specified then Zuul's defaults apply
                      properties:
                        name:
                          description: How the connection will be named in Zuul's
                            configuration and appear in zuul-web
                          type: string
                        uri:
                          description: '[uri](https://zuul-ci.org/docs/zuul/latest/drivers/elasticsearch.html#attr-%3CElasticsearch%20connection%3E.uri)'
                          type: string
                        useSSL:
                          description: '[useSSL](https://zuul-ci.org/docs/zuul/latest/drivers/elasticsearch.html#attr-%3CElasticsearch%20connection%3E.use_ssl)'
                          type: boolean
                        verifyCerts:
                          description: '[verifyCerts](https://zuul-ci.org/docs/zuul/latest/drivers/elasticsearch.html#attr-%3CElasticsearch%20connection%3E.verify_certs)'
                          type: boolean
                      required:
                      - name
                      - uri
                      type: object
                    type: array
                  executor:
                    description: Configuration of the executor microservices
                    properties:
                      diskLimitPerJob:
                        default: 250
                        description: the [disk_limit_per_job](https://zuul-ci.org/docs/zuul/latest/configuration.html#attr-executor.disk_limit_per_job)
                        minimum: -1
                        type: integer
                      enabled:
                        default: true
                        description: If set to false, the zuul-executor deployment
                          won't be applied
                        type: boolean
                      limits:
                        default:
                          cpu: 2000m
                          memory: 2Gi
                        description: Memory/CPU Limit
                        properties:
                          cpu:
                            anyOf:
                            - type: integer
                            - type: string
                            default: 2000m
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          memory:
                            anyOf:
                            - type: integer
                            - type: string
                            default: 2Gi
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                        required:
                        - cpu
                        - memory
                        type: object
                      logLevel:
                        description: |-
                          Specify the Log Level of the zuul-executor service.
                          Valid values are:
                          "INFO" (default),
                          "WARN",
                          "DEBUG".
                          Changing this value will restart the service.
                        enum:
                        - INFO
                        - WARN
                        - DEBUG
                        type: string
                      standalone:
                        description: |-
                          When set the Control plane is not deployed.
                          The standalone executor must be able to connect to the control plane
                        properties:
                          controlPlanePublicGSHostname:
                            description: This is the public hostname or IP where control
                              plane's GitServer can be reached
                            type: string
                          controlPlanePublicZKHostname:
                            description: This is the public hostname or IP where control
                              plane's Zookeeper can be reached
                            type: string
                          publicHostname:
                            description: This is the public host or IP address reachable
                              from zuul-web
                            type: string
                        required:
                        - controlPlanePublicGSHostname
                        - controlPlanePublicZKHostname
                        - publicHostname
                        type: object
                      storage:
                        description: Storage-related settings
                        properties:
                          className:
                            description: Default storage class to use with Persistent
                              Volume Claims issued by this resource. Consult your
                              cluster's configuration to see what storage classes
                              are available and recommended for your use case.
                            type: string
                          size:
                            anyOf:
                            - type: integer
                            - type: string
                            description: Storage space to allocate to the resource,
                              expressed as a [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/)
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                        required:
                        - size
                        type: object
                    type: object
                  gerritconns:
                    description: The list of Gerrit-based connections to add to Zuul's
                      configuration
                    items:
                      description: |-
                        Describes a Zuul connection using the [gerrit driver](https://zuul-ci.org/docs/zuul/latest/drivers/gerrit.html#connection-configuration)
                        When an optional parameter is not specified then Zuul's defaults apply
                      properties:
                        canonicalhostname:
                          description: The canonical hostname associated with the
                            git repositories on the Gerrit server. Equivalent to the
                            [canonical_hostname](https://zuul-ci.org/docs/zuul/latest/drivers/gerrit.html#attr-%3Cgerrit%20connection%3E.canonical_hostname)
                            parameter.
                          type: string
                        git-over-ssh:
                          description: Set to true to force git operations over SSH
                            even if the password attribute is set. Equivalent to the
                            [git_over_ssh](https://zuul-ci.org/docs/zuul/latest/drivers/gerrit.html#attr-%3Cgerrit%20ssh%20connection%3E.git_over_ssh)
                            parameter.
                          type: boolean
                        hostname:
                          description: The gerrit server hostname. Equivalent to the
                            [server](https://zuul-ci.org/docs/zuul/latest/drivers/gerrit.html#attr-%3Cgerrit%20connection%3E.server)
                            parameter.
                          type: string
                        name:
                          description: How the connection will be named in Zuul's
                            configuration and appear in zuul-web
                          type: string
                        password:
                          description: The name of a Kubernetes secret holding the
                            Gerrit user's API Password. The secret's data must have
                            a key called "password". Equivalent to the [password](https://zuul-ci.org/docs/zuul/latest/drivers/gerrit.html#attr-%3Cgerrit%20ssh%20connection%3E.password)
                            parameter.
                          type: string
                        port:
                          description: SSH port number to the Gerrit instance. Equivalent
                            to the [port](https://zuul-ci.org/docs/zuul/latest/drivers/gerrit.html#attr-%3Cgerrit%20ssh%20connection%3E.port)
                            parameter.
                          maximum: 65535
                          minimum: 1024
                          type: integer
                        puburl:
                          description: URL to Gerrit's web interface. the [baseurl](https://zuul-ci.org/docs/zuul/latest/drivers/gerrit.html#attr-%3Cgerrit%20connection%3E.baseurl)
                            parameter.
                          pattern: ^https?:\/\/.+$
                          type: string
                        sshkey:
                          description: The name of a Kubernetes secret holding the
                            Gerrit user's SSH key. The secret's data must have a key
                            called "priv".
                          type: string
                        username:
                          description: Username that Zuul will use to authenticate
                            on the Gerrit instance. Equivalent to the [user](https://zuul-ci.org/docs/zuul/latest/drivers/gerrit.html#attr-%3Cgerrit%20connection%3E.user)
                            parameter.
                          type: string
                        verifyssl:
                          description: Disable SSL certificate verification with the
                            Gerrit instance when set to false. Equivalent to the [verify_ssl](https://zuul-ci.org/docs/zuul/latest/drivers/gerrit.html#attr-%3Cgerrit%20ssh%20connection%3E.verify_ssl)
                            parameter.
                          type: boolean
                      required:
                      - hostname
                      - name
                      type: object
                    type: array
                  gitconns:
                    description: The list of Git-based connections to add to Zuul's
                      configuration
                    items:
                      description: |-
                        Describes a Zuul connection using the [git driver](https://zuul-ci.org/docs/zuul/latest/drivers/git.html#connection-configuration).
                        When an optional parameter is not specified then Zuul's defaults apply
                      properties:
                        baseurl:
                          description: '[baseurl](https://zuul-ci.org/docs/zuul/latest/drivers/git.html#attr-%3Cgit%20connection%3E.baseurl)'
                          pattern: ^(https?|git):\/\/.+$
                          type: string
                        name:
                          description: How the connection will be named in Zuul's
                            configuration and appear in zuul-web
                          type: string
                        pollDelay:
                          description: '[poolDelay](https://zuul-ci.org/docs/zuul/latest/drivers/git.html#attr-%3Cgit%20connection%3E.poll_delays)'
                          format: int32
                          type: integer
                      required:
                      - baseurl
                      - name
                      type: object
                    type: array
                  githubconns:
                    description: The list of GitHub-based connections to add to Zuul's
                      configuration
                    items:
                      description: Describes a Zuul connection using the [github driver](https://zuul-ci.org/docs/zuul/latest/drivers/github.html#).
                      properties:
                        appID:
                          description: GitHub [appID](https://zuul-ci.org/docs/zuul/latest/drivers/github.html#attr-%3Cgithub%20connection%3E.app_id)
                          type: integer
                        canonicalHostname:
                          description: the [canonical_hostname](https://zuul-ci.org/docs/zuul/latest/drivers/github.html#attr-%3Cgithub%20connection%3E.canonical_hostname)
                            parameter
                          type: string
                        name:
                          description: How the connection will be named in Zuul's
                            configuration and appear in zuul-web
                          type: string
                        secrets:
                          description: |-
                            Name of the secret which contains the following keys:
                            [app_key](https://zuul-ci.org/docs/zuul/latest/drivers/github.html#attr-%3Cgithub%20connection%3E.app_key) must be defined if appId is defined
                            [api_token(optional)](https://zuul-ci.org/docs/zuul/latest/drivers/github.html#attr-%3Cgithub%20connection%3E.api_token)
                            [webhook_token (optional)](https://zuul-ci.org/docs/zuul/latest/drivers/github.html#attr-%3Cgithub%20connection%3E.webhook_token)
                            The keys must have the same name as above
                          type: string
                        server:
                          description: the [server](https://zuul-ci.org/docs/zuul/latest/drivers/github.html#attr-%3Cgithub%20connection%3E.server)
                          type: string
                        verifySsl:
                          default: true
                          description: the [verify_ssl](https://zuul-ci.org/docs/zuul/latest/drivers/github.html#attr-%3Cgithub%20connection%3E.verify_ssl)
                            parameter
                          type: boolean
                      required:
                      - name
                      type: object
                    type: array
                  gitlabconns:
                    description: The list of GitLab-based connections to add to Zuul's
                      configuration
                    items:
                      description: Describes a Zuul connection using the [gitlab driver](https://zuul-ci.org/docs/zuul/latest/drivers/gitlab.html#gitlab).
                      properties:
                        apiTokenName:
                          description: the [apiTokenName](https://zuul-ci.org/docs/zuul/latest/drivers/gitlab.html#attr-%3Cgitlab%20connection%3E.api_token_name)
                          type: string
                        baseUrl:
                          description: the (baseUrl)[https://zuul-ci.org/docs/zuul/latest/drivers/gitlab.html#attr-%3Cgitlab%20connection%3E.baseurl)
                          type: string
                        canonicalHostname:
                          description: the [canonicalHostname](https://zuul-ci.org/docs/zuul/latest/drivers/gitlab.html#attr-%3Cgitlab%20connection%3E.canonical_hostname)
                          type: string
                        cloneUrl:
                          description: the [cloneUrl](https://zuul-ci.org/docs/zuul/latest/drivers/gitlab.html#attr-%3Cgitlab%20connection%3E.cloneurl)
                          type: string
                        disableConnectionPool:
                          description: the [disableConnectionPool](https://zuul-ci.org/docs/zuul/latest/drivers/gitlab.html#attr-%3Cgitlab%20connection%3E.disable_connection_pool)
                          type: boolean
                        keepAlive:
                          description: the [keepAlive](https://zuul-ci.org/docs/zuul/latest/drivers/gitlab.html#attr-%3Cgitlab%20connection%3E.keepalive)
                          minimum: 0
                          type: integer
                        name:
                          description: How the connection will be named in Zuul's
                            configuration and appear in zuul-web
                          type: string
                        secrets:
                          description: |-
                            Name of the secret which containes the following keys:
                            the [api_token](https://zuul-ci.org/docs/zuul/latest/drivers/gitlab.html#attr-%3Cgitlab%20connection%3E.api_token)
                            the [api_token_name](https://zuul-ci.org/docs/zuul/latest/drivers/gitlab.html#attr-%3Cgitlab%20connection%3E.api_token_name)
                            the [webhook_token](https://zuul-ci.org/docs/zuul/latest/drivers/gitlab.html#attr-%3Cgitlab%20connection%3E.webhook_token)
                          minLength: 1
                          type: string
                        server:
                          description: the [server](https://zuul-ci.org/docs/zuul/latest/drivers/gitlab.html#attr-%3Cgitlab%20connection%3E.server)
                          type: string
                      required:
                      - name
                      - secrets
                      type: object
                    type: array
                  merger:
                    description: Configuration of the merger microservice
                    properties:
                      gitHttpLowSpeedLimit:
                        description: the [git_http_low_speed_limit](https://zuul-ci.org/docs/zuul/latest/configuration.html#attr-merger.git_http_low_speed_limit)
                          parameter
                        format: int32
                        minimum: 0
                        type: integer
                      gitHttpLowSpeedTime:
                        description: the [git_http_low_speed_time](https://zuul-ci.org/docs/zuul/latest/configuration.html#attr-merger.git_http_low_speed_time)
                          parameter
                        format: int32
                        minimum: 0
                        type: integer
                      gitTimeout:
                        description: the [git_timeout](https://zuul-ci.org/docs/zuul/latest/configuration.html#attr-merger.git_timeout)
                          parameter
                        format: int32
                        minimum: 1
                        type: integer
                      gitUserEmail:
                        description: the [git_user_email](https://zuul-ci.org/docs/zuul/latest/configuration.html#attr-merger.git_user_email)
                          parameter
                        type: string
                      gitUserName:
                        description: the [git_user_name](https://zuul-ci.org/docs/zuul/latest/configuration.html#attr-merger.git_user_name)
                          parameter
                        type: string
                      limits:
                        default:
                          cpu: 2000m
                          memory: 2Gi
                        description: Memory/CPU Limit
                        properties:
                          cpu:
                            anyOf:
                            - type: integer
                            - type: string
                            default: 2000m
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          memory:
                            anyOf:
                            - type: integer
                            - type: string
                            default: 2Gi
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                        required:
                        - cpu
                        - memory
                        type: object
                      logLevel:
                        description: |-
                          Specify the Log Level of the nodepool launcher service.
                          Valid values are:
                          "INFO" (default),
                          "WARN",
                          "DEBUG".
                          Changing this value will restart the service.
                        enum:
                        - INFO
                        - WARN
                        - DEBUG
                        type: string
                      storage:
                        description: Storage-related settings
                        properties:
                          className:
                            description: Default storage class to use with Persistent
                              Volume Claims issued by this resource. Consult your
                              cluster's configuration to see what storage classes
                              are available and recommended for your use case.
                            type: string
                          size:
                            anyOf:
                            - type: integer
                            - type: string
                            description: Storage space to allocate to the resource,
                              expressed as a [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/)
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                        required:
                        - size
                        type: object
                    type: object
                  oidcAuthenticators:
                    description: A list of OpenID Connect authenticators that will
                      enable admin API access on zuul-web
                    items:
                      description: The description of an OpenIDConnect authenticator,
                        see [Zuul's authentication documentation](https://zuul-ci.org/docs/zuul/latest/configuration.html#authentication)
                      properties:
                        audience:
                          description: Optionally provide the claim where the audience
                            is set if not in `aud`, equivalent to the [audience](https://zuul-ci.org/docs/zuul/latest/configuration.html#attr-audience)
                            parameter
                          type: string
                        authority:
                          description: Optionally provide the claim where the authority
                            is set if not in `iss`, equivalent to the [authority](https://zuul-ci.org/docs/zuul/latest/configuration.html#attr-authority)
                            parameter
                          type: string
                        clientID:
                          description: The client ID, as exposed in the `aud` claim
                            of a JWT. Equivalent to the [client_id](https://zuul-ci.org/docs/zuul/latest/configuration.html#attr-auth%20%3Cauthenticator%20name%3E.client_id)
                            parameter
                          type: string
                        issuerID:
                          description: The issuer ID, as exposed in the `iss` claim
                            of a JWT. Equivalent to the [issuer_id](https://zuul-ci.org/docs/zuul/latest/configuration.html#attr-auth%20%3Cauthenticator%20name%3E.issuer_id)
                            parameter
                          type: string
                        keysURL:
                          description: Optionally provide a URL to fetch the Identity
                            Provider's key set, equivalent to the [keys_url](https://zuul-ci.org/docs/zuul/latest/configuration.html#attr-keys_url)
                            parameter
                          type: string
                        loadUserInfo:
                          default: true
                          description: If set to false, zuul-web will skip loading
                            the Identity Provider's `userinfo` endpoint and rely on
                            what's available in the JWT. Equivalent to the [load_user_info](https://zuul-ci.org/docs/zuul/latest/configuration.html#attr-load_user_info)
                            parameter
                          type: boolean
                        maxValidityTime:
                          description: Optionally override the `expires_at` claim
                            in a JWT to enforce a custom expiration time on a token.
                            Equivalent to the [max_validity_time](https://zuul-ci.org/docs/zuul/latest/configuration.html#attr-auth%20%3Cauthenticator%20name%3E.max_validity_time)
                            parameter
                          format: int32
                          type: integer
                        name:
                          description: The [name of the authenticator in Zuul's configuration](https://zuul-ci.org/docs/zuul/latest/configuration.html#attr-auth%20%3Cauthenticator%20name%3E)
                          type: string
                        realm:
                          description: Authentication realm, equivalent to the [realm](https://zuul-ci.org/docs/zuul/latest/configuration.html#attr-auth%20%3Cauthenticator%20name%3E.realm)
                            parameter
                          type: string
                        scope:
                          default: openid profile
                          description: The scope used to fetch a user's details, equivalent
                            to the [scope](https://zuul-ci.org/docs/zuul/latest/configuration.html#attr-scope)
                            parameter
                          type: string
                        skew:
                          default: 0
                          description: Optionally compensate for skew between Zuul's
                            and the Identity Provider's clocks, equivalent to the
                            [skew](https://zuul-ci.org/docs/zuul/latest/configuration.html#attr-auth%20%3Cauthenticator%20name%3E.skew)
                            parameter
                          format: int32
                          type: integer
                        uidClaim:
                          default: sub
                          description: The JWT claim to use as a unique identifier
                            in audit logs, equivalent to the [uid_claim](https://zuul-ci.org/docs/zuul/latest/configuration.html#attr-auth%20%3Cauthenticator%20name%3E.uid_claim)
                            parameter
                          type: string
                      required:
                      - clientID
                      - issuerID
                      - name
                      - realm
                      type: object
                    type: array
                  pagureconns:
                    description: The list of Pagure-based connections to add to Zuul's
                      configuration
                    items:
                      description: Describes a Zuul connection using the [pagure driver](https://zuul-ci.org/docs/zuul/latest/drivers/pagure.html#connection-configuration).
                      properties:
                        appName:
                          description: the [appName](https://zuul-ci.org/docs/zuul/latest/drivers/pagure.html#attr-<pagure
                            connection>.app_name)
                          type: string
                        baseUrl:
                          description: the (baseUrl)[https://zuul-ci.org/docs/zuul/latest/drivers/pagure.html#attr-%3Cpagure%20connection%3E.baseurl)
                          type: string
                        canonicalHostname:
                          description: the [canonicalHostname](https://zuul-ci.org/docs/zuul/latest/drivers/pagure.html#attr-<pagure
                            connection>.canonical_hostname)
                          type: string
                        cloneUrl:
                          description: the [cloneUrl](https://zuul-ci.org/docs/zuul/latest/drivers/pagure.html#attr-<pagure
                            connection>.cloneurl)
                          type: string
                        name:
                          description: How the connection will be named in Zuul's
                            configuration and appear in zuul-web
                          type: string
                        secrets:
                          description: |-
                            Name of the secret which containes the following keys:
                            the [api_token](https://zuul-ci.org/docs/zuul/latest/drivers/pagure.html#attr-<pagure connection>.api_token)
                          type: string
                        server:
                          description: the [server](https://zuul-ci.org/docs/zuul/latest/drivers/pagure.html#attr-<pagure
                            connection>.server)
                          type: string
                        sourceWhitelist:
                          description: the [sourceWhitelist](https://zuul-ci.org/docs/zuul/latest/drivers/pagure.html#attr-<pagure
                            connection>.source_whitelist)
                          type: string
                      required:
                      - name
                      type: object
                    type: array
                  scheduler:
                    description: Configuration of the scheduler microservice
                    properties:
                      DefaultHoldExpiration:
                        description: the [DefaultHoldExpiration](https://zuul-ci.org/docs/zuul/latest/configuration.html#attr-scheduler.default_hold_expiration)
                        format: int32
                        minimum: 0
                        type: integer
                      MaxHoldExpiration:
                        description: the [MaxHoldExpiration](https://zuul-ci.org/docs/zuul/latest/configuration.html#attr-scheduler.max_hold_expiration)
                        format: int32
                        minimum: 0
                        type: integer
                      limits:
                        default:
                          cpu: 2000m
                          memory: 2Gi
                        description: Memory/CPU Limit
                        properties:
                          cpu:
                            anyOf:
                            - type: integer
                            - type: string
                            default: 2000m
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          memory:
                            anyOf:
                            - type: integer
                            - type: string
                            default: 2Gi
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                        required:
                        - cpu
                        - memory
                        type: object
                      logLevel:
                        description: |-
                          Specify the Log Level of the zuul-scheduler service.
                          Valid values are:
                          "INFO" (default),
                          "WARN",
                          "DEBUG".
                          Changing this value will restart the service.
                        enum:
                        - INFO
                        - WARN
                        - DEBUG
                        type: string
                      statsdTarget:
                        description: The address to forward statsd metrics to (optional),
                          in the form "host:port"
                        type: string
                      storage:
                        description: Storage-related settings
                        properties:
                          className:
                            description: Default storage class to use with Persistent
                              Volume Claims issued by this resource. Consult your
                              cluster's configuration to see what storage classes
                              are available and recommended for your use case.
                            type: string
                          size:
                            anyOf:
                            - type: integer
                            - type: string
                            description: Storage space to allocate to the resource,
                              expressed as a [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/)
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                        required:
                        - size
                        type: object
                    type: object
                  smtpconns:
                    description: The list of SMTP-based connections to add to Zuul's
                      configuration
                    items:
                      description: |-
                        Describes a Zuul connection using the [SMTP driver](https://zuul-ci.org/docs/zuul/latest/drivers/smtp.html#connection-configuration).
                        When an optional parameter is not specified then Zuul's defaults apply
                      properties:
                        defaultFrom:
                          description: '[default_from](https://zuul-ci.org/docs/zuul/latest/drivers/smtp.html#attr-%3Csmtp%20connection%3E.default_from)'
                          type: string
                        defaultTo:
                          description: '[default_to](https://zuul-ci.org/docs/zuul/latest/drivers/smtp.html#attr-%3Csmtp%20connection%3E.default_to)'
                          type: string
                        name:
                          description: How the connection will be named in Zuul's
                            configuration and appear in zuul-web
                          type: string
                        password:
                          description: '[password](https://zuul-ci.org/docs/zuul/latest/drivers/smtp.html#attr-%3Csmtp%20connection%3E.password)'
                          type: string
                        port:
                          description: '[port](https://zuul-ci.org/docs/zuul/latest/drivers/smtp.html#attr-%3Csmtp%20connection%3E.port)'
                          type: integer
                        server:
                          description: '[server](https://zuul-ci.org/docs/zuul/latest/drivers/smtp.html#attr-%3Csmtp%20connection%3E.server)'
                          type: string
                        tls:
                          description: '[use_starttls](https://zuul-ci.org/docs/zuul/latest/drivers/smtp.html#attr-%3Csmtp%20connection%3E.use_starttls)'
                          type: boolean
                        user:
                          description: '[user](https://zuul-ci.org/docs/zuul/latest/drivers/smtp.html#attr-%3Csmtp%20connection%3E.user)'
                          type: string
                      required:
                      - name
                      - server
                      type: object
                    type: array
                  web:
                    description: Configuration of the web microservice
                    properties:
                      limits:
                        default:
                          cpu: 2000m
                          memory: 2Gi
                        description: Memory/CPU Limit
                        properties:
                          cpu:
                            anyOf:
                            - type: integer
                            - type: string
                            default: 2000m
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          memory:
                            anyOf:
                            - type: integer
                            - type: string
                            default: 2Gi
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                        required:
                        - cpu
                        - memory
                        type: object
                      logLevel:
                        description: |-
                          Specify the Log Level of the zuul-web launcher service.
                          Valid values are:
                          "INFO" (default),
                          "WARN",
                          "DEBUG".
                          Changing this value will restart the service.
                        enum:
                        - INFO
                        - WARN
                        - DEBUG
                        type: string
                    type: object
                type: object
            required:
            - fqdn
            type: object
          status:
            description: SoftwareFactoryStatus defines the observed state of SoftwareFactory
            properties:
              conditions:
                description: Information about ongoing or completed reconciliation
                  processes between the Log server spec and the observed state of
                  the cluster
                items:
                  description: "Condition contains details for one aspect of the current
                    state of this API Resource.\n---\nThis struct is intended for
                    direct use as an array at the field path .status.conditions.  For
                    example,\n\n\n\ttype FooStatus struct{\n\t    // Represents the
                    observations of a foo's current state.\n\t    // Known .status.conditions.type
                    are: \"Available\", \"Progressing\", and \"Degraded\"\n\t    //
                    +patchMergeKey=type\n\t    // +patchStrategy=merge\n\t    // +listType=map\n\t
                    \   // +listMapKey=type\n\t    Conditions []metav1.Condition `json:\"conditions,omitempty\"
                    patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t
                    \   // other fields\n\t}"
                  properties:
                    lastTransitionTime:
                      description: |-
                        lastTransitionTime is the last time the condition transitioned from one status to another.
                        This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        message is a human readable message indicating details about the transition.
                        This may be an empty string.
                      maxLength: 32768
                      type: string
                    observedGeneration:
                      description: |-
                        observedGeneration represents the .metadata.generation that the condition was set based upon.
                        For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                        with respect to the current state of the instance.
                      format: int64
                      minimum: 0
                      type: integer
                    reason:
                      description: |-
                        reason contains a programmatic identifier indicating the reason for the condition's last transition.
                        Producers of specific condition types may define expected values and meanings for this field,
                        and whether the values are considered a guaranteed API.
                        The value should be a CamelCase string.
                        This field may not be empty.
                      maxLength: 1024
                      minLength: 1
                      pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                      type: string
                    status:
                      description: status of the condition, one of True, False, Unknown.
                      enum:
                      - "True"
                      - "False"
                      - Unknown
                      type: string
                    type:
                      description: |-
                        type of condition in CamelCase or in foo.example.com/CamelCase.
                        ---
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be
                        useful (see .node.status.conditions), the ability to deconflict is important.
                        The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
                      maxLength: 316
                      pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                      type: string
                  required:
                  - lastTransitionTime
                  - message
                  - reason
                  - status
                  - type
                  type: object
                type: array
              observedGeneration:
                description: The Generation of the related Custom Resource that was
                  last processed by the operator controller
                format: int64
                type: integer
              ready:
                description: The deployment status.
                type: boolean
              reconciledBy:
                description: The name of the operator handling this Custom Resource's
                  reconciliation
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}