apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: adams.appdynamics.com
spec:
  group: appdynamics.com
  names:
    kind: Adam
    listKind: AdamList
    plural: adams
    singular: adam
  scope: Namespaced
  versions:
    - name: v1alpha1
      served: true
      storage: true
      subresources:
        status: {}
      schema:
        openAPIV3Schema:
          description: Adam is the Schema for the Adam 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/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/api-conventions.md#types-kinds'
              type: string
            metadata:
              type: object
            spec:
              description: AdamSpec defines the desired state of Adam
              properties:
                account:
                  type: string
                agentEnvVar:
                  type: string
                agentLabel:
                  type: string
                agentLogOverride:
                  type: string
                agentMountName:
                  type: string
                agentMountPath:
                  type: string
                agentOpts:
                  type: string
                agentSSLCert:
                  type: string
                agentSSLPassword:
                  type: string
                agentSSLStoreName:
                  type: string
                agentServerPort:
                  format: int32
                  type: integer
                agentUserOverride:
                  type: string
                analyticsAgentContainerName:
                  type: string
                analyticsAgentImage:
                  type: string
                analyticsAgentUrl:
                  type: string
                appDAnalyticsLabel:
                  type: string
                appDAppLabel:
                  type: string
                appDDotNetAttachImage:
                  type: string
                appDInitContainerName:
                  type: string
                appDJavaAttachImage:
                  type: string
                appDTierLabel:
                  type: string
                appLogMountName:
                  type: string
                appLogMountPath:
                  type: string
                appName:
                  type: string
                appNameLiteral:
                  type: string
                args:
                  items:
                    type: string
                  type: array
                biqRequestCpu:
                  type: string
                biqRequestMem:
                  type: string
                biqService:
                  type: string
                containerSchemaName:
                  type: string
                controllerUrl:
                  type: string
                daemonSchemaName:
                  type: string
                dashboardDelayMin:
                  type: integer
                dashboardSuffix:
                  description: dashboard
                  type: string
                dashboardTemplatePath:
                  type: string
                defaultInstrumentationTech:
                  type: string
                deploySchemaName:
                  type: string
                env:
                  items:
                    description: EnvVar represents an environment variable present in
                      a Container.
                    properties:
                      name:
                        description: Name of the environment variable. Must be a C_IDENTIFIER.
                        type: string
                      value:
                        description: 'Variable references $(VAR_NAME) are expanded using
                                    the previous defined environment variables in the container
                                    and any service environment variables. If a variable cannot
                                    be resolved, the reference in the input string will be unchanged.
                                    The $(VAR_NAME) syntax can be escaped with a double $$, ie:
                                    $$(VAR_NAME). Escaped references will never be expanded, regardless
                                    of whether the variable exists or not. Defaults to "".'
                        type: string
                      valueFrom:
                        description: Source for the environment variable's value. Cannot
                          be used if value is not empty.
                        properties:
                          configMapKeyRef:
                            description: Selects a key of a ConfigMap.
                            properties:
                              key:
                                description: The key to select.
                                type: string
                              name:
                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                            TODO: Add other useful fields. apiVersion, kind, uid?'
                                type: string
                              optional:
                                description: Specify whether the ConfigMap or it's key
                                  must be defined
                                type: boolean
                            required:
                              - key
                            type: object
                          fieldRef:
                            description: 'Selects a field of the pod: supports metadata.name,
                                        metadata.namespace, metadata.labels, metadata.annotations,
                                        spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP.'
                            properties:
                              apiVersion:
                                description: Version of the schema the FieldPath is written
                                  in terms of, defaults to "v1".
                                type: string
                              fieldPath:
                                description: Path of the field to select in the specified
                                  API version.
                                type: string
                            required:
                              - fieldPath
                            type: object
                          resourceFieldRef:
                            description: 'Selects a resource of the container: only resources
                                        limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage,
                                        requests.cpu, requests.memory and requests.ephemeral-storage)
                                        are currently supported.'
                            properties:
                              containerName:
                                description: 'Container name: required for volumes, optional
                                            for env vars'
                                type: string
                              divisor:
                                description: Specifies the output format of the exposed
                                  resources, defaults to "1"
                                type: string
                              resource:
                                description: 'Required: resource to select'
                                type: string
                            required:
                              - resource
                            type: object
                          secretKeyRef:
                            description: Selects a key of a secret in the pod's namespace
                            properties:
                              key:
                                description: The key of the secret to select from.  Must
                                  be a valid secret key.
                                type: string
                              name:
                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                            TODO: Add other useful fields. apiVersion, kind, uid?'
                                type: string
                              optional:
                                description: Specify whether the Secret or it's key must
                                  be defined
                                type: boolean
                            required:
                              - key
                            type: object
                        type: object
                    required:
                      - name
                    type: object
                  type: array
                epSchemaName:
                  type: string
                eventAPILimit:
                  description: limits
                  type: integer
                eventSchemaName:
                  type: string
                eventServiceUrl:
                  type: string
                globalAccount:
                  type: string
                image:
                  type: string
                initContainerDir:
                  type: string
                initRequestCpu:
                  type: string
                initRequestMem:
                  type: string
                instrumentContainer:
                  type: string
                instrumentMatchString:
                  items:
                    type: string
                  type: array
                instrumentRule:
                  items:
                    properties:
                      agentEnvVar:
                        type: string
                      appDAppLabel:
                        type: string
                      appDTierLabel:
                        type: string
                      appNameLiteral:
                        type: string
                      biQ:
                        type: string
                      containerName:
                        type: string
                      matchString:
                        items:
                          type: string
                        type: array
                      method:
                        type: string
                      namespaces:
                        items:
                          type: string
                        type: array
                      tech:
                        type: string
                      uniqueHostID:
                        type: string
                      version:
                        type: string
                    type: object
                  type: array
                instrumentationMethod:
                  description: instrumentation
                  type: string
                jDKMountName:
                  type: string
                jDKMountPath:
                  type: string
                jobSchemaName:
                  type: string
                logLevel:
                  type: string
                logLines:
                  type: integer
                logSchemaName:
                  type: string
                metricsSyncInterval:
                  type: integer
                netVizPort:
                  type: integer
                nodeNamePrefix:
                  type: string
                nodeSchemaName:
                  type: string
                nodesToMonitor:
                  items:
                    type: string
                  type: array
                nodesToMonitorExclude:
                  items:
                    type: string
                  type: array
                nsSchemaName:
                  type: string
                nsToInstrument:
                  items:
                    type: string
                  type: array
                nsToInstrumentExclude:
                  items:
                    type: string
                  type: array
                nsToMonitor:
                  items:
                    type: string
                  type: array
                nsToMonitorExclude:
                  items:
                    type: string
                  type: array
                overconsumptionThreshold:
                  type: integer
                podEventNumber:
                  type: integer
                podSchemaName:
                  description: snapshot schemas
                  type: string
                proxyPass:
                  type: string
                proxyUrl:
                  type: string
                proxyUser:
                  type: string
                rSSchemaName:
                  type: string
                resources:
                  description: ResourceRequirements describes the compute resource requirements.
                  properties:
                    limits:
                      additionalProperties:
                        type: string
                      description: 'Limits describes the maximum amount of compute resources
                                  allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                      type: object
                    requests:
                      additionalProperties:
                        type: string
                      description: 'Requests describes the minimum amount of compute resources
                                  required. If Requests is omitted for a container, it defaults
                                  to Limits if that is explicitly specified, otherwise to an implementation-defined
                                  value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                      type: object
                  type: object
                rqSchemaName:
                  type: string
                snapshotSyncInterval:
                  type: integer
                systemSSLCert:
                  type: string
                uniqueHostID:
                  type: string
              required:
                - controllerUrl
              type: object
            status:
              description: AdamStatus defines the observed state of Adam
              properties:
                lastUpdateTime:
                  description: 'Important: Run "operator-sdk generate k8s" to regenerate
                              code after modifying this file'
                  format: date-time
                  type: string
                state:
                  properties:
                    analyticsAgentImage:
                      type: string
                    appDDotNetAttachImage:
                      type: string
                    appDJavaAttachImage:
                      type: string
                    biqService:
                      type: string
                    defaultInstrumentationTech:
                      type: string
                    instrumentMatchString:
                      items:
                        type: string
                      type: array
                    instrumentRule:
                      items:
                        properties:
                          agentEnvVar:
                            type: string
                          appDAppLabel:
                            type: string
                          appDTierLabel:
                            type: string
                          appNameLiteral:
                            type: string
                          biQ:
                            type: string
                          containerName:
                            type: string
                          matchString:
                            items:
                              type: string
                            type: array
                          method:
                            type: string
                          namespaces:
                            items:
                              type: string
                            type: array
                          tech:
                            type: string
                          uniqueHostID:
                            type: string
                          version:
                            type: string
                        type: object
                      type: array
                    instrumentationMethod:
                      type: string
                    logLevel:
                      type: string
                    logLines:
                      type: integer
                    metricsSyncInterval:
                      type: integer
                    nodesToMonitor:
                      items:
                        type: string
                      type: array
                    nodesToMonitorExclude:
                      items:
                        type: string
                      type: array
                    nsToInstrument:
                      items:
                        type: string
                      type: array
                    nsToInstrumentExclude:
                      items:
                        type: string
                      type: array
                    nsToMonitor:
                      items:
                        type: string
                      type: array
                    nsToMonitorExclude:
                      items:
                        type: string
                      type: array
                    snapshotSyncInterval:
                      type: integer
                    version:
                      type: string
                  required:
                    - logLevel
                    - logLines
                    - metricsSyncInterval
                    - snapshotSyncInterval
                  type: object
              required:
                - lastUpdateTime
                - state
              type: object
          type: object