---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.16.0
  name: internalmemberclusters.cluster.kubernetes-fleet.io
spec:
  group: cluster.kubernetes-fleet.io
  names:
    categories:
    - fleet
    - fleet-cluster
    kind: InternalMemberCluster
    listKind: InternalMemberClusterList
    plural: internalmemberclusters
    shortNames:
    - imc
    singular: internalmembercluster
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1
    schema:
      openAPIV3Schema:
        description: InternalMemberCluster is used by hub agent to notify the member
          agents about the member cluster state changes, and is used by the member
          agents to report their status.
        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: The desired state of InternalMemberCluster.
            properties:
              heartbeatPeriodSeconds:
                default: 60
                description: 'How often (in seconds) for the member cluster to send
                  a heartbeat to the hub cluster. Default: 60 seconds. Min: 1 second.
                  Max: 10 minutes.'
                format: int32
                maximum: 600
                minimum: 1
                type: integer
              state:
                description: 'The desired state of the member cluster. Possible values:
                  Join, Leave.'
                type: string
            required:
            - state
            type: object
          status:
            description: The observed status of InternalMemberCluster.
            properties:
              agentStatus:
                description: AgentStatus is an array of current observed status, each
                  corresponding to one member agent running in the member cluster.
                items:
                  description: AgentStatus defines the observed status of the member
                    agent of the given type.
                  properties:
                    conditions:
                      description: Conditions is an array of current observed conditions
                        for the member agent.
                      items:
                        description: Condition contains details for one aspect of
                          the current state of this API Resource.
                        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.
                            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
                      x-kubernetes-list-map-keys:
                      - type
                      x-kubernetes-list-type: map
                    lastReceivedHeartbeat:
                      description: Last time we received a heartbeat from the member
                        agent.
                      format: date-time
                      type: string
                    type:
                      description: Type of the member agent.
                      type: string
                  required:
                  - type
                  type: object
                type: array
              conditions:
                description: Conditions is an array of current observed conditions
                  for the member cluster.
                items:
                  description: Condition contains details for one aspect of the current
                    state of this API Resource.
                  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.
                      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
              properties:
                additionalProperties:
                  description: PropertyValue is the value of a cluster property.
                  properties:
                    observationTime:
                      description: ObservationTime is when the cluster property is
                        observed.
                      format: date-time
                      type: string
                    value:
                      description: |-
                        Value is the value of the cluster property.

                        Currently, it should be a valid Kubernetes quantity.
                        For more information, see
                        https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity.
                      type: string
                  required:
                  - observationTime
                  - value
                  type: object
                description: |-
                  Properties is an array of properties observed for the member cluster.

                  This field is beta-level; it is for the property-based scheduling feature and is only
                  populated when a property provider is enabled in the deployment.
                type: object
              resourceUsage:
                description: The current observed resource usage of the member cluster.
                  It is populated by the member agent.
                properties:
                  allocatable:
                    additionalProperties:
                      anyOf:
                      - type: integer
                      - type: string
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                    description: |-
                      Allocatable represents the total allocatable resources of all the nodes on a member cluster.

                      A node's allocatable capacity is the amount of resource that can actually be used
                      for user workloads, i.e.,
                      allocatable capacity = total capacity - capacities reserved for the OS, kubelet, etc.

                      For more information, see
                      https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources/.
                    type: object
                  available:
                    additionalProperties:
                      anyOf:
                      - type: integer
                      - type: string
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                    description: |-
                      Available represents the total available resources of all the nodes on a member cluster.

                      A node's available capacity is the amount of resource that has not been used yet, i.e.,
                      available capacity = allocatable capacity - capacity that has been requested by workloads.

                      This field is beta-level; it is for the property-based scheduling feature and is only
                      populated when a property provider is enabled in the deployment.
                    type: object
                  capacity:
                    additionalProperties:
                      anyOf:
                      - type: integer
                      - type: string
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                    description: |-
                      Capacity represents the total resource capacity of all the nodes on a member cluster.

                      A node's total capacity is the amount of resource installed on the node.
                    type: object
                  observationTime:
                    description: When the resource usage is observed.
                    format: date-time
                    type: string
                type: object
            type: object
        required:
        - spec
        type: object
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: InternalMemberCluster is used by hub agent to notify the member
          agents about the member cluster state changes, and is used by the member
          agents to report their status.
        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: The desired state of InternalMemberCluster.
            properties:
              heartbeatPeriodSeconds:
                default: 60
                description: 'How often (in seconds) for the member cluster to send
                  a heartbeat to the hub cluster. Default: 60 seconds. Min: 1 second.
                  Max: 10 minutes.'
                format: int32
                maximum: 600
                minimum: 1
                type: integer
              state:
                description: 'The desired state of the member cluster. Possible values:
                  Join, Leave.'
                type: string
            required:
            - state
            type: object
          status:
            description: The observed status of InternalMemberCluster.
            properties:
              agentStatus:
                description: AgentStatus is an array of current observed status, each
                  corresponding to one member agent running in the member cluster.
                items:
                  description: AgentStatus defines the observed status of the member
                    agent of the given type.
                  properties:
                    conditions:
                      description: Conditions is an array of current observed conditions
                        for the member agent.
                      items:
                        description: Condition contains details for one aspect of
                          the current state of this API Resource.
                        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.
                            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
                      x-kubernetes-list-map-keys:
                      - type
                      x-kubernetes-list-type: map
                    lastReceivedHeartbeat:
                      description: Last time we received a heartbeat from the member
                        agent.
                      format: date-time
                      type: string
                    type:
                      description: Type of the member agent.
                      type: string
                  required:
                  - type
                  type: object
                type: array
              conditions:
                description: Conditions is an array of current observed conditions
                  for the member cluster.
                items:
                  description: Condition contains details for one aspect of the current
                    state of this API Resource.
                  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.
                      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
              properties:
                additionalProperties:
                  description: PropertyValue is the value of a cluster property.
                  properties:
                    observationTime:
                      description: ObservationTime is when the cluster property is
                        observed.
                      format: date-time
                      type: string
                    value:
                      description: |-
                        Value is the value of the cluster property.

                        Currently, it should be a valid Kubernetes quantity.
                        For more information, see
                        https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity.
                      type: string
                  required:
                  - observationTime
                  - value
                  type: object
                description: |-
                  Properties is an array of properties observed for the member cluster.

                  This field is beta-level; it is for the property-based scheduling feature and is only
                  populated when a property provider is enabled in the deployment.
                type: object
              resourceUsage:
                description: The current observed resource usage of the member cluster.
                  It is populated by the member agent.
                properties:
                  allocatable:
                    additionalProperties:
                      anyOf:
                      - type: integer
                      - type: string
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                    description: |-
                      Allocatable represents the total allocatable resources of all the nodes on a member cluster.

                      A node's allocatable capacity is the amount of resource that can actually be used
                      for user workloads, i.e.,
                      allocatable capacity = total capacity - capacities reserved for the OS, kubelet, etc.

                      For more information, see
                      https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources/.
                    type: object
                  available:
                    additionalProperties:
                      anyOf:
                      - type: integer
                      - type: string
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                    description: |-
                      Available represents the total available resources of all the nodes on a member cluster.

                      A node's available capacity is the amount of resource that has not been used yet, i.e.,
                      available capacity = allocatable capacity - capacity that has been requested by workloads.

                      This field is beta-level; it is for the property-based scheduling feature and is only
                      populated when a property provider is enabled in the deployment.
                    type: object
                  capacity:
                    additionalProperties:
                      anyOf:
                      - type: integer
                      - type: string
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                    description: |-
                      Capacity represents the total resource capacity of all the nodes on a member cluster.

                      A node's total capacity is the amount of resource installed on the node.
                    type: object
                  observationTime:
                    description: When the resource usage is observed.
                    format: date-time
                    type: string
                type: object
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
    subresources:
      status: {}
