apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: caliconodestatuses.crd.projectcalico.org
spec:
  group: crd.projectcalico.org
  names:
    kind: CalicoNodeStatus
    listKind: CalicoNodeStatusList
    plural: caliconodestatuses
    singular: caliconodestatus
  scope: Cluster
  versions:
    - name: v1
      schema:
        openAPIV3Schema:
          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:
                CalicoNodeStatusSpec contains the specification for a CalicoNodeStatus
                resource.
              properties:
                classes:
                  description:
                    Classes declares the types of information to monitor
                    for this calico/node, and allows for selective status reporting
                    about certain subsets of information.
                  items:
                    type: string
                  type: array
                node:
                  description:
                    The node name identifies the Calico node instance for
                    node status.
                  type: string
                updatePeriodSeconds:
                  description:
                    UpdatePeriodSeconds is the period at which CalicoNodeStatus
                    should be updated. Set to 0 to disable CalicoNodeStatus refresh.
                    Maximum update period is one day.
                  format: int32
                  type: integer
              type: object
            status:
              description:
                CalicoNodeStatusStatus defines the observed state of CalicoNodeStatus.
                No validation needed for status since it is updated by Calico.
              properties:
                agent:
                  description: Agent holds agent status on the node.
                  properties:
                    birdV4:
                      description: BIRDV4 represents the latest observed status of bird4.
                      properties:
                        lastBootTime:
                          description:
                            LastBootTime holds the value of lastBootTime
                            from bird.ctl output.
                          type: string
                        lastReconfigurationTime:
                          description:
                            LastReconfigurationTime holds the value of lastReconfigTime
                            from bird.ctl output.
                          type: string
                        routerID:
                          description: Router ID used by bird.
                          type: string
                        state:
                          description: The state of the BGP Daemon.
                          type: string
                        version:
                          description: Version of the BGP daemon
                          type: string
                      type: object
                    birdV6:
                      description: BIRDV6 represents the latest observed status of bird6.
                      properties:
                        lastBootTime:
                          description:
                            LastBootTime holds the value of lastBootTime
                            from bird.ctl output.
                          type: string
                        lastReconfigurationTime:
                          description:
                            LastReconfigurationTime holds the value of lastReconfigTime
                            from bird.ctl output.
                          type: string
                        routerID:
                          description: Router ID used by bird.
                          type: string
                        state:
                          description: The state of the BGP Daemon.
                          type: string
                        version:
                          description: Version of the BGP daemon
                          type: string
                      type: object
                  type: object
                bgp:
                  description: BGP holds node BGP status.
                  properties:
                    numberEstablishedV4:
                      description: The total number of IPv4 established bgp sessions.
                      type: integer
                    numberEstablishedV6:
                      description: The total number of IPv6 established bgp sessions.
                      type: integer
                    numberNotEstablishedV4:
                      description: The total number of IPv4 non-established bgp sessions.
                      type: integer
                    numberNotEstablishedV6:
                      description: The total number of IPv6 non-established bgp sessions.
                      type: integer
                    peersV4:
                      description: PeersV4 represents IPv4 BGP peers status on the node.
                      items:
                        description:
                          CalicoNodePeer contains the status of BGP peers
                          on the node.
                        properties:
                          peerIP:
                            description:
                              IP address of the peer whose condition we are
                              reporting.
                            type: string
                          since:
                            description: Since the state or reason last changed.
                            type: string
                          state:
                            description: State is the BGP session state.
                            type: string
                          type:
                            description:
                              Type indicates whether this peer is configured
                              via the node-to-node mesh, or via en explicit global or
                              per-node BGPPeer object.
                            type: string
                        type: object
                      type: array
                    peersV6:
                      description: PeersV6 represents IPv6 BGP peers status on the node.
                      items:
                        description:
                          CalicoNodePeer contains the status of BGP peers
                          on the node.
                        properties:
                          peerIP:
                            description:
                              IP address of the peer whose condition we are
                              reporting.
                            type: string
                          since:
                            description: Since the state or reason last changed.
                            type: string
                          state:
                            description: State is the BGP session state.
                            type: string
                          type:
                            description:
                              Type indicates whether this peer is configured
                              via the node-to-node mesh, or via en explicit global or
                              per-node BGPPeer object.
                            type: string
                        type: object
                      type: array
                  required:
                    - numberEstablishedV4
                    - numberEstablishedV6
                    - numberNotEstablishedV4
                    - numberNotEstablishedV6
                  type: object
                lastUpdated:
                  description:
                    LastUpdated is a timestamp representing the server time
                    when CalicoNodeStatus object last updated. It is represented in
                    RFC3339 form and is in UTC.
                  format: date-time
                  nullable: true
                  type: string
                routes:
                  description:
                    Routes reports routes known to the Calico BGP daemon
                    on the node.
                  properties:
                    routesV4:
                      description: RoutesV4 represents IPv4 routes on the node.
                      items:
                        description:
                          CalicoNodeRoute contains the status of BGP routes
                          on the node.
                        properties:
                          destination:
                            description: Destination of the route.
                            type: string
                          gateway:
                            description: Gateway for the destination.
                            type: string
                          interface:
                            description: Interface for the destination
                            type: string
                          learnedFrom:
                            description:
                              LearnedFrom contains information regarding
                              where this route originated.
                            properties:
                              peerIP:
                                description:
                                  If sourceType is NodeMesh or BGPPeer, IP
                                  address of the router that sent us this route.
                                type: string
                              sourceType:
                                description:
                                  Type of the source where a route is learned
                                  from.
                                type: string
                            type: object
                          type:
                            description:
                              Type indicates if the route is being used for
                              forwarding or not.
                            type: string
                        type: object
                      type: array
                    routesV6:
                      description: RoutesV6 represents IPv6 routes on the node.
                      items:
                        description:
                          CalicoNodeRoute contains the status of BGP routes
                          on the node.
                        properties:
                          destination:
                            description: Destination of the route.
                            type: string
                          gateway:
                            description: Gateway for the destination.
                            type: string
                          interface:
                            description: Interface for the destination
                            type: string
                          learnedFrom:
                            description:
                              LearnedFrom contains information regarding
                              where this route originated.
                            properties:
                              peerIP:
                                description:
                                  If sourceType is NodeMesh or BGPPeer, IP
                                  address of the router that sent us this route.
                                type: string
                              sourceType:
                                description:
                                  Type of the source where a route is learned
                                  from.
                                type: string
                            type: object
                          type:
                            description:
                              Type indicates if the route is being used for
                              forwarding or not.
                            type: string
                        type: object
                      type: array
                  type: object
              type: object
          type: object
      served: true
      storage: true
