apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: infravizs.appdynamics.com
spec:
  group: appdynamics.com
  names:
    kind: InfraViz
    listKind: InfraVizList
    plural: infravizs
    singular: infraviz
  scope: Namespaced
  versions:
    - name: v1alpha1
      served: true
      storage: true
      subresources:
        status: {}
      schema:
        openAPIV3Schema:
          description: Infraviz is the Schema for the infravizs 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: InfravizSpec defines the desired state of InfraAgent
              properties:
                controllerUrl:
                  type: string
                account:
                  type: string
                image:
                  type: string
                imageWin:
                  type: string
                accessSecret:
                  type: string
                globalAccount:
                  type: string
                eventServiceUrl:
                  type: string
                enableContainerHostId:
                  type: boolean
                enableDockerViz:
                  type: boolean
                enableServerViz:
                  type: boolean
                enableMasters:
                  type: boolean
                uniqueHostId:
                  type: string
                metricsLimit:
                  type: string
                proxyUrl:
                  type: string
                proxyUser:
                  type: string
                logLevel:
                  type: string
                syslogPort:
                  format: int32
                  type: integer
                pks:
                  type: boolean
                netVizPort:
                  format: int32
                  type: integer
                netVizImage:
                  type: string
                netlibEnabled:
                  format: int32
                  type: integer
                biqPort:
                  format: int32
                  type: integer
                stdoutLogging:
                  type: boolean
                agentSSLStoreName:
                  type: string
                agentSSLPassword:
                  type: string
                propertyBag:
                  type: string
                overrideVolumeMounts:
                  items:
                    type: string
                  type: array
                nodeSelector:
                  type: object
                  additionalProperties:
                    type: string
                tolerations:
                  type: array
                  items:
                    properties:
                      key:
                        type: string
                      operator:
                        type: string
                      value:
                        type: string
                      effect:
                        type: string
                      tolerationSeconds:
                        type: integer
                    type: object
                args:
                  items:
                    type: string
                  type: array
                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
                ports:
                  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
                      hostPort:
                        description: Host port of the container
                        format: int32
                        type: integer
                      containerPort:
                        description: Container port of the container
                        format: int32
                        type: integer
                      protocol:
                        description: Protocol of the container
                        type: string
                      hostIP:
                        description: HostIP of the container
                        type: string
                    required:
                      - name
                    type: object
                  type: array
                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
                resourcesNetViz:
                  description: ResourceNetviz Requirements describes the compute resource requirements.
                  properties:
                    limits:
                      additionalProperties:
                        type: string
                      description: 'Limits describes the maximum amount of compute resources allowed.'
                      type: object
                    requests:
                      additionalProperties:
                        type: string
                      description: 'Requests describes the minimum amount of compute resources required.'
                      type: object
                  type: object
                priorityClassName:
                  type: string
                imagePullSecret:
                  type: string
                nodeOS:
                  type: string
              required:
                - controllerUrl
              type: object
            status:
              description: InfraVizStatus defines the observed state of Infraviz
              properties:
                lastUpdateTime:
                  description: 'Important: Run "operator-sdk generate k8s" to regenerate
                        code after modifying this file'
                  format: date-time
                  type: string
                version:
                  type: string
                nodes:
                  type: object
                  additionalProperties:
                    type: string
              required:
                - lastUpdateTime
                - version
              type: object
          type: object