apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: analyticssnmp.tf.tungsten.io
spec:
  group: tf.tungsten.io
  names:
    kind: AnalyticsSnmp
    listKind: AnalyticsSnmpList
    plural: analyticssnmp
    singular: analyticssnmp
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .status.active
      name: Active
      type: boolean
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: AnalyticsSnmp is the Schema for the Analytics SNMP 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: AnalyticsSnmpSpec is the Spec for the Analytics SNMP API.
            properties:
              commonConfiguration:
                description: PodConfiguration is the common services struct.
                properties:
                  authParameters:
                    description: AuthParameters auth parameters
                    properties:
                      authMode:
                        description: AuthenticationMode auth mode
                        enum:
                        - noauth
                        - keystone
                        type: string
                      keystoneAuthParameters:
                        description: KeystoneAuthParameters keystone parameters
                        properties:
                          address:
                            type: string
                          adminPassword:
                            type: string
                          adminPort:
                            type: integer
                          adminTenant:
                            type: string
                          adminUsername:
                            type: string
                          authProtocol:
                            type: string
                          insecure:
                            type: boolean
                          port:
                            type: integer
                          projectDomainName:
                            type: string
                          region:
                            type: string
                          userDomainName:
                            type: string
                        type: object
                      keystoneSecretName:
                        type: string
                    type: object
                  distribution:
                    description: OS family
                    type: string
                  imagePullSecrets:
                    description: ImagePullSecrets is an optional list of references
                      to secrets in the same namespace to use for pulling any of the
                      images used by this PodSpec.
                    items:
                      type: string
                    type: array
                  logLevel:
                    description: Kubernetes Cluster Configuration
                    enum:
                    - info
                    - debug
                    - warning
                    - error
                    - critical
                    - none
                    type: string
                  nodeSelector:
                    additionalProperties:
                      type: string
                    description: 'NodeSelector is a selector which must be true for
                      the pod to fit on a node. Selector which must match a node''s
                      labels for the pod to be scheduled on that node. More info:
                      https://kubernetes.io/docs/concepts/configuration/assign-pod-node/.'
                    type: object
                  tolerations:
                    description: If specified, the pod's tolerations.
                    items:
                      description: The pod this Toleration is attached to tolerates
                        any taint that matches the triple <key,value,effect> using
                        the matching operator <operator>.
                      properties:
                        effect:
                          description: Effect indicates the taint effect to match.
                            Empty means match all taint effects. When specified, allowed
                            values are NoSchedule, PreferNoSchedule and NoExecute.
                          type: string
                        key:
                          description: Key is the taint key that the toleration applies
                            to. Empty means match all taint keys. If the key is empty,
                            operator must be Exists; this combination means to match
                            all values and all keys.
                          type: string
                        operator:
                          description: Operator represents a key's relationship to
                            the value. Valid operators are Exists and Equal. Defaults
                            to Equal. Exists is equivalent to wildcard for value,
                            so that a pod can tolerate all taints of a particular
                            category.
                          type: string
                        tolerationSeconds:
                          description: TolerationSeconds represents the period of
                            time the toleration (which must be of effect NoExecute,
                            otherwise this field is ignored) tolerates the taint.
                            By default, it is not set, which means tolerate the taint
                            forever (do not evict). Zero and negative values will
                            be treated as 0 (evict immediately) by the system.
                          format: int64
                          type: integer
                        value:
                          description: Value is the taint value the toleration matches
                            to. If the operator is Exists, the value should be empty,
                            otherwise just a regular string.
                          type: string
                      type: object
                    type: array
                type: object
              serviceConfiguration:
                description: AnalyticsSnmpConfiguration is the Spec for the Analytics
                  SNMP API.
                properties:
                  containers:
                    items:
                      description: Container defines name, image and command.
                      properties:
                        command:
                          items:
                            type: string
                          type: array
                        image:
                          type: string
                        name:
                          type: string
                      type: object
                    type: array
                  logFilePath:
                    type: string
                  logLocal:
                    type: string
                  snmpCollectorFastScanFrequency:
                    type: integer
                  snmpCollectorIntrospectListenPort:
                    type: integer
                  snmpCollectorLogFileName:
                    type: string
                  snmpCollectorScanFrequency:
                    type: integer
                  topologyIntrospectListenPort:
                    type: integer
                  topologyLogFileName:
                    type: string
                  topologySnmpFrequency:
                    type: integer
                type: object
            required:
            - serviceConfiguration
            type: object
          status:
            description: AnalyticsSnmpStatus is the Status for the Analytics SNMP
              API.
            properties:
              active:
                type: boolean
              configChanged:
                type: boolean
              degraded:
                type: boolean
              nodes:
                additionalProperties:
                  type: string
                type: object
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
