Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(metric-gen): Implement metric-gen tool to create custom resource configuration from markers #2014

Open
wants to merge 6 commits into
base: main
Choose a base branch
from

Conversation

chrischdi
Copy link
Member

@chrischdi chrischdi commented Mar 1, 2023

What this PR does / why we need it:

Implements the metric-gen tool which could get used to create custom resource configurations directly from code, similar to what controller-gen does.

Note: this is a WIP PR and is not finished yet. Ready for review

Its current state is able to create a full working equivalent for Cluster API's hand-baked manual configuration file when using this Cluster API fork branch which adds the markers to the API types.

Open AI's:

  • Improve/add go comments at the metric package
  • Integrate into Makefile
  • unit/integration tests
  • Documentation
  • Review/Feedback loop

How does this change affect the cardinality of KSM: (increases, decreases or does not change cardinality)

No change because it does not change kube-state-metrics itself

Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #1899

@k8s-ci-robot k8s-ci-robot added do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. labels Mar 1, 2023
@k8s-ci-robot k8s-ci-robot added needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. labels Mar 1, 2023
@chrischdi
Copy link
Member Author

Happy to gather early feedback on this.

The work is mostly based on what metrics got defined for Cluster API's resources.

@chrischdi
Copy link
Member Author

Example usage:

PATH_TO_CAPI_FORK=/some/path
metric-gen \
 "${PATH_TO_CAPI_FORK}/bootstrap/kubeadm/api/v1beta1" \
 "${PATH_TO_CAPI_FORK}/controlplane/kubeadm/api/v1beta1" \
 "${PATH_TO_CAPI_FORK}/api/v1beta1" \
 "${PATH_TO_CAPI_FORK}/exp/api/v1beta1" \
 > metrics.yaml

@chrischdi
Copy link
Member Author

moving to draft after seeing that ci is happy for now

@chrischdi chrischdi marked this pull request as draft March 1, 2023 12:07
@mrueg
Copy link
Member

mrueg commented Mar 27, 2023

Thanks @chrischdi for submitting this! Unfortunately it seems like every maintainer is quite busy, I hope to get a chance to review it next week and provide better feedback.

@chrischdi
Copy link
Member Author

Thanks @chrischdi for submitting this! Unfortunately it seems like every maintainer is quite busy, I hope to get a chance to review it next week and provide better feedback.

No worries :-) I also did not get into the open points yet 👍
Thanks for the heads up 🍀

@chrischdi

This comment was marked as resolved.

exp/metric-gen/go.mod Outdated Show resolved Hide resolved
@chrischdi chrischdi changed the title [WIP] Implement metric-gen tool feat(metric-gen): Implement metric-gen tool to create custom resource configuration from markers Aug 25, 2023
@chrischdi
Copy link
Member Author

Note: currently reviving this PR 🎉

Currently works for CAPI and CAPV:

Result configuration:

spec:
  resources:
  - errorLogV: 0
    groupVersionKind:
      group: bootstrap.cluster.x-k8s.io
      kind: KubeadmConfig
      version: v1beta1
    labelsFromPath:
      cluster_name:
      - metadata
      - labels
      - cluster.x-k8s.io/cluster-name
      name:
      - metadata
      - name
      namespace:
      - metadata
      - namespace
      uid:
      - metadata
      - uid
    metricNamePrefix: capi_kubeadmconfig
    metrics:
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            paused_value: []
          path:
          - metadata
          - annotations
          - cluster.x-k8s.io/paused
        type: Info
      help: Whether the kubeadmconfig is paused and any of its resources will not
        be processed by the controllers.
      name: annotation_paused
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: false
          path:
          - metadata
          - creationTimestamp
          valueFrom: null
        type: Gauge
      help: Unix creation timestamp.
      name: created
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            name:
            - metadata
            - name
          path: null
        type: Info
      help: Information about a kubeadmconfig.
      name: info
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            owner_is_controller:
            - controller
            owner_kind:
            - kind
            owner_name:
            - name
            owner_uid:
            - uid
          path:
          - metadata
          - ownerReferences
        type: Info
      help: Owner references.
      name: owner
    - each:
        stateSet:
          labelName: status
          labelsFromPath:
            type:
            - type
          list:
          - "True"
          - "False"
          - Unknown
          path:
          - status
          - conditions
          valueFrom:
          - status
        type: StateSet
      help: The condition of a kubeadmconfig.
      name: status_condition
    - each:
        gauge:
          labelFromKey: ""
          labelsFromPath:
            status:
            - status
            type:
            - type
          nilIsZero: false
          path:
          - status
          - conditions
          valueFrom:
          - lastTransitionTime
        type: Gauge
      help: The condition last transition time of a kubeadmconfig.
      name: status_condition_last_transition_time
    resourcePlural: ""
  - errorLogV: 0
    groupVersionKind:
      group: cluster.x-k8s.io
      kind: Cluster
      version: v1beta1
    labelsFromPath:
      name:
      - metadata
      - name
      namespace:
      - metadata
      - namespace
      uid:
      - metadata
      - uid
    metricNamePrefix: capi_cluster
    metrics:
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            paused_value: []
          path:
          - metadata
          - annotations
          - cluster.x-k8s.io/paused
        type: Info
      help: Whether the cluster is paused and any of its resources will not be processed
        by the controllers.
      name: annotation_paused
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: false
          path:
          - metadata
          - creationTimestamp
          valueFrom: null
        type: Gauge
      help: Unix creation timestamp.
      name: created
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            control_plane_endpoint_host:
            - spec
            - controlPlaneEndpoint
            - host
            control_plane_endpoint_port:
            - spec
            - controlPlaneEndpoint
            - port
            control_plane_reference_kind:
            - spec
            - controlPlaneRef
            - kind
            control_plane_reference_name:
            - spec
            - controlPlaneRef
            - name
            infrastructure_reference_kind:
            - spec
            - infrastructureRef
            - kind
            infrastructure_reference_name:
            - spec
            - infrastructureRef
            - name
            topology_class:
            - spec
            - topology
            - class
            topology_version:
            - spec
            - topology
            - version
          path: null
        type: Info
      help: Information about a cluster.
      name: info
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - spec
          - paused
          valueFrom: null
        type: Gauge
      help: Whether the cluster is paused and any of its resources will not be processed
        by the controllers.
      name: spec_paused
    - each:
        stateSet:
          labelName: status
          labelsFromPath:
            type:
            - type
          list:
          - "True"
          - "False"
          - Unknown
          path:
          - status
          - conditions
          valueFrom:
          - status
        type: StateSet
      help: The condition of a cluster.
      name: status_condition
    - each:
        gauge:
          labelFromKey: ""
          labelsFromPath:
            status:
            - status
            type:
            - type
          nilIsZero: false
          path:
          - status
          - conditions
          valueFrom:
          - lastTransitionTime
        type: Gauge
      help: The condition last transition time of a cluster.
      name: status_condition_last_transition_time
    - each:
        stateSet:
          labelName: phase
          list:
          - Pending
          - Provisioning
          - Provisioned
          - Deleting
          - Failed
          - Unknown
          path:
          - status
          - phase
          valueFrom: null
        type: StateSet
      help: The clusters current phase.
      name: status_phase
    resourcePlural: ""
  - errorLogV: 0
    groupVersionKind:
      group: cluster.x-k8s.io
      kind: ClusterClass
      version: v1beta1
    labelsFromPath:
      name:
      - metadata
      - name
      namespace:
      - metadata
      - namespace
      uid:
      - metadata
      - uid
    metricNamePrefix: capi_clusterclass
    metrics:
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            paused_value: []
          path:
          - metadata
          - annotations
          - cluster.x-k8s.io/paused
        type: Info
      help: Whether the clusterclass is paused and any of its resources will not be
        processed by the controllers.
      name: annotation_paused
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: false
          path:
          - metadata
          - creationTimestamp
          valueFrom: null
        type: Gauge
      help: Unix creation timestamp.
      name: created
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            name:
            - metadata
            - name
          path: null
        type: Info
      help: Information about a clusterclass.
      name: info
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            owner_is_controller:
            - controller
            owner_kind:
            - kind
            owner_name:
            - name
            owner_uid:
            - uid
          path:
          - metadata
          - ownerReferences
        type: Info
      help: Owner references.
      name: owner
    - each:
        stateSet:
          labelName: status
          labelsFromPath:
            type:
            - type
          list:
          - "True"
          - "False"
          - Unknown
          path:
          - status
          - conditions
          valueFrom:
          - status
        type: StateSet
      help: The condition of a clusterclass.
      name: status_condition
    - each:
        gauge:
          labelFromKey: ""
          labelsFromPath:
            status:
            - status
            type:
            - type
          nilIsZero: false
          path:
          - status
          - conditions
          valueFrom:
          - lastTransitionTime
        type: Gauge
      help: The condition last transition time of a clusterclass.
      name: status_condition_last_transition_time
    resourcePlural: ""
  - errorLogV: 0
    groupVersionKind:
      group: cluster.x-k8s.io
      kind: Machine
      version: v1beta1
    labelsFromPath:
      cluster_name:
      - spec
      - clusterName
      name:
      - metadata
      - name
      namespace:
      - metadata
      - namespace
      uid:
      - metadata
      - uid
    metricNamePrefix: capi_machine
    metrics:
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            address:
            - address
            type:
            - type
          path:
          - status
          - addresses
        type: Info
      help: Address information about a machine.
      name: addresses
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            paused_value: []
          path:
          - metadata
          - annotations
          - cluster.x-k8s.io/paused
        type: Info
      help: Whether the machine is paused and any of its resources will not be processed
        by the controllers.
      name: annotation_paused
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: false
          path:
          - metadata
          - creationTimestamp
          valueFrom: null
        type: Gauge
      help: Unix creation timestamp.
      name: created
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            bootstrap_reference_kind:
            - spec
            - bootstrap
            - configRef
            - kind
            bootstrap_reference_name:
            - spec
            - bootstrap
            - configRef
            - name
            container_runtime_version:
            - status
            - nodeInfo
            - containerRuntimeVersion
            control_plane_name:
            - metadata
            - labels
            - cluster.x-k8s.io/control-plane-name
            failure_domain:
            - spec
            - failureDomain
            infrastructure_reference_kind:
            - spec
            - infrastructureRef
            - kind
            infrastructure_reference_name:
            - spec
            - infrastructureRef
            - name
            kernel_version:
            - status
            - nodeInfo
            - kernelVersion
            kube_proxy_version:
            - status
            - nodeInfo
            - kubeProxyVersion
            kubelet_version:
            - status
            - nodeInfo
            - kubeletVersion
            os_image:
            - status
            - nodeInfo
            - osImage
            provider_id:
            - spec
            - providerID
            version:
            - spec
            - version
          path: null
        type: Info
      help: Information about a machine.
      name: info
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            owner_is_controller:
            - controller
            owner_kind:
            - kind
            owner_name:
            - name
            owner_uid:
            - uid
          path:
          - metadata
          - ownerReferences
        type: Info
      help: Owner references.
      name: owner
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - status
          - certificatesExpiryDate
          valueFrom: null
        type: Gauge
      help: Information about certificate expiration date of a control plane node.
      name: status_certificatesexpirydate
    - each:
        stateSet:
          labelName: status
          labelsFromPath:
            type:
            - type
          list:
          - "True"
          - "False"
          - Unknown
          path:
          - status
          - conditions
          valueFrom:
          - status
        type: StateSet
      help: The condition of a machine.
      name: status_condition
    - each:
        gauge:
          labelFromKey: ""
          labelsFromPath:
            status:
            - status
            type:
            - type
          nilIsZero: false
          path:
          - status
          - conditions
          valueFrom:
          - lastTransitionTime
        type: Gauge
      help: The condition last transition time of a machine.
      name: status_condition_last_transition_time
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            node_name:
            - name
            node_uid:
            - uid
          path:
          - status
          - nodeRef
        type: Info
      help: Information about the node reference of a machine.
      name: status_noderef
    - each:
        stateSet:
          labelName: phase
          list:
          - Pending
          - Provisioning
          - Provisioned
          - Running
          - Deleting
          - Deleted
          - Failed
          - Unknown
          path:
          - status
          - phase
          valueFrom: null
        type: StateSet
      help: The machines current phase.
      name: status_phase
    resourcePlural: ""
  - errorLogV: 0
    groupVersionKind:
      group: cluster.x-k8s.io
      kind: MachineDeployment
      version: v1beta1
    labelsFromPath:
      cluster_name:
      - spec
      - clusterName
      name:
      - metadata
      - name
      namespace:
      - metadata
      - namespace
      uid:
      - metadata
      - uid
    metricNamePrefix: capi_machinedeployment
    metrics:
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            paused_value: []
          path:
          - metadata
          - annotations
          - cluster.x-k8s.io/paused
        type: Info
      help: Whether the machinedeployment is paused and any of its resources will
        not be processed by the controllers.
      name: annotation_paused
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: false
          path:
          - metadata
          - creationTimestamp
          valueFrom: null
        type: Gauge
      help: Unix creation timestamp.
      name: created
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            bootstrap_reference_kind:
            - spec
            - template
            - spec
            - bootstrap
            - configRef
            - kind
            bootstrap_reference_name:
            - spec
            - template
            - spec
            - bootstrap
            - configRef
            - name
            infrastructure_reference_kind:
            - spec
            - template
            - spec
            - infrastructureRef
            - kind
            infrastructure_reference_name:
            - spec
            - template
            - spec
            - infrastructureRef
            - name
            version:
            - spec
            - template
            - spec
            - version
          path: null
        type: Info
      help: Information about a machinedeployment.
      name: info
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            owner_is_controller:
            - controller
            owner_kind:
            - kind
            owner_name:
            - name
            owner_uid:
            - uid
          path:
          - metadata
          - ownerReferences
        type: Info
      help: Owner references.
      name: owner
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - spec
          - paused
          valueFrom: null
        type: Gauge
      help: Whether the machinedeployment is paused and any of its resources will
        not be processed by the controllers.
      name: spec_paused
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: false
          path:
          - spec
          - replicas
          valueFrom: null
        type: Gauge
      help: The number of desired machines for a machinedeployment.
      name: spec_replicas
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: false
          path:
          - spec
          - strategy
          - rollingUpdate
          - maxSurge
          valueFrom: null
        type: Gauge
      help: Maximum number of replicas that can be scheduled above the desired number
        of replicas during a rolling update of a machinedeployment.
      name: spec_strategy_rollingupdate_max_surge
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: false
          path:
          - spec
          - strategy
          - rollingUpdate
          - maxUnavailable
          valueFrom: null
        type: Gauge
      help: Maximum number of unavailable replicas during a rolling update of a machinedeployment.
      name: spec_strategy_rollingupdate_max_unavailable
    - each:
        stateSet:
          labelName: status
          labelsFromPath:
            type:
            - type
          list:
          - "True"
          - "False"
          - Unknown
          path:
          - status
          - conditions
          valueFrom:
          - status
        type: StateSet
      help: The condition of a machinedeployment.
      name: status_condition
    - each:
        gauge:
          labelFromKey: ""
          labelsFromPath:
            status:
            - status
            type:
            - type
          nilIsZero: false
          path:
          - status
          - conditions
          valueFrom:
          - lastTransitionTime
        type: Gauge
      help: The condition last transition time of a machinedeployment.
      name: status_condition_last_transition_time
    - each:
        stateSet:
          labelName: phase
          list:
          - ScalingUp
          - ScalingDown
          - Running
          - Failed
          - Unknown
          path:
          - status
          - phase
          valueFrom: null
        type: StateSet
      help: The machinedeployments current phase.
      name: status_phase
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - status
          - replicas
          valueFrom: null
        type: Gauge
      help: The number of replicas per machinedeployment.
      name: status_replicas
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - status
          - availableReplicas
          valueFrom: null
        type: Gauge
      help: The number of available replicas per machinedeployment.
      name: status_replicas_available
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - status
          - readyReplicas
          valueFrom: null
        type: Gauge
      help: The number of ready replicas per machinedeployment.
      name: status_replicas_ready
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - status
          - unavailableReplicas
          valueFrom: null
        type: Gauge
      help: The number of unavailable replicas per machinedeployment.
      name: status_replicas_unavailable
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - status
          - updatedReplicas
          valueFrom: null
        type: Gauge
      help: The number of updated replicas per machinedeployment.
      name: status_replicas_updated
    resourcePlural: ""
  - errorLogV: 0
    groupVersionKind:
      group: cluster.x-k8s.io
      kind: MachineHealthCheck
      version: v1beta1
    labelsFromPath:
      cluster_name:
      - spec
      - clusterName
      name:
      - metadata
      - name
      namespace:
      - metadata
      - namespace
      uid:
      - metadata
      - uid
    metricNamePrefix: capi_machinehealthcheck
    metrics:
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            paused_value: []
          path:
          - metadata
          - annotations
          - cluster.x-k8s.io/paused
        type: Info
      help: Whether the machinehealthcheck is paused and any of its resources will
        not be processed by the controllers.
      name: annotation_paused
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: false
          path:
          - metadata
          - creationTimestamp
          valueFrom: null
        type: Gauge
      help: Unix creation timestamp.
      name: created
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            maxUnhealthy:
            - spec
            - maxUnhealthy
          path: null
        type: Info
      help: Information about a machinehealthcheck.
      name: info
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            owner_is_controller:
            - controller
            owner_kind:
            - kind
            owner_name:
            - name
            owner_uid:
            - uid
          path:
          - metadata
          - ownerReferences
        type: Info
      help: Owner references.
      name: owner
    - each:
        stateSet:
          labelName: status
          labelsFromPath:
            type:
            - type
          list:
          - "True"
          - "False"
          - Unknown
          path:
          - status
          - conditions
          valueFrom:
          - status
        type: StateSet
      help: The condition of a machinehealthcheck.
      name: status_condition
    - each:
        gauge:
          labelFromKey: ""
          labelsFromPath:
            status:
            - status
            type:
            - type
          nilIsZero: false
          path:
          - status
          - conditions
          valueFrom:
          - lastTransitionTime
        type: Gauge
      help: The condition last transition time of a machinehealthcheck.
      name: status_condition_last_transition_time
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - status
          - currentHealthy
          valueFrom: null
        type: Gauge
      help: Current number of healthy machines.
      name: status_current_healthy
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - status
          - expectedMachines
          valueFrom: null
        type: Gauge
      help: Total number of machines counted by this machinehealthcheck.
      name: status_expected_machines
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - status
          - remediationsAllowed
          valueFrom: null
        type: Gauge
      help: Number of machine remediations that are currently allowed.
      name: status_remediations_allowed
    resourcePlural: ""
  - errorLogV: 0
    groupVersionKind:
      group: cluster.x-k8s.io
      kind: MachinePool
      version: v1beta1
    labelsFromPath:
      cluster_name:
      - spec
      - clusterName
      name:
      - metadata
      - name
      namespace:
      - metadata
      - namespace
      uid:
      - metadata
      - uid
    metricNamePrefix: capi_machinepool
    metrics:
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            paused_value: []
          path:
          - metadata
          - annotations
          - cluster.x-k8s.io/paused
        type: Info
      help: Whether the machinepool is paused and any of its resources will not be
        processed by the controllers.
      name: annotation_paused
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: false
          path:
          - metadata
          - creationTimestamp
          valueFrom: null
        type: Gauge
      help: Unix creation timestamp.
      name: created
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            bootstrap_configuration_reference_kind:
            - spec
            - template
            - spec
            - bootstrap
            - configRef
            - kind
            bootstrap_configuration_reference_name:
            - spec
            - template
            - spec
            - bootstrap
            - configRef
            - name
            failure_domain:
            - spec
            - template
            - spec
            - failureDomain
            infrastructure_reference_kind:
            - spec
            - template
            - spec
            - infrastructureRef
            - kind
            infrastructure_reference_name:
            - spec
            - template
            - spec
            - infrastructureRef
            - name
            version:
            - spec
            - template
            - spec
            - version
          path: null
        type: Info
      help: Information about a machinepool.
      name: info
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            owner_is_controller:
            - controller
            owner_kind:
            - kind
            owner_name:
            - name
            owner_uid:
            - uid
          path:
          - metadata
          - ownerReferences
        type: Info
      help: Owner references.
      name: owner
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: false
          path:
          - spec
          - replicas
          valueFrom: null
        type: Gauge
      help: The number of desired machines for a machinepool.
      name: spec_replicas
    - each:
        stateSet:
          labelName: status
          labelsFromPath:
            type:
            - type
          list:
          - "True"
          - "False"
          - Unknown
          path:
          - status
          - conditions
          valueFrom:
          - status
        type: StateSet
      help: The condition of a machinepool.
      name: status_condition
    - each:
        gauge:
          labelFromKey: ""
          labelsFromPath:
            status:
            - status
            type:
            - type
          nilIsZero: false
          path:
          - status
          - conditions
          valueFrom:
          - lastTransitionTime
        type: Gauge
      help: The condition last transition time of a machinepool.
      name: status_condition_last_transition_time
    - each:
        stateSet:
          labelName: phase
          list:
          - ScalingUp
          - ScalingDown
          - Running
          - Failed
          - Unknown
          path:
          - status
          - phase
          valueFrom: null
        type: StateSet
      help: The machinepools current phase.
      name: status_phase
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - status
          - replicas
          valueFrom: null
        type: Gauge
      help: The number of replicas per machinepool.
      name: status_replicas
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - status
          - availableReplicas
          valueFrom: null
        type: Gauge
      help: The number of available replicas per machinepool.
      name: status_replicas_available
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - status
          - readyReplicas
          valueFrom: null
        type: Gauge
      help: The number of ready replicas per machinepool.
      name: status_replicas_ready
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - status
          - unavailableReplicas
          valueFrom: null
        type: Gauge
      help: The number of unavailable replicas per machinepool.
      name: status_replicas_unavailable
    resourcePlural: ""
  - errorLogV: 0
    groupVersionKind:
      group: cluster.x-k8s.io
      kind: MachineSet
      version: v1beta1
    labelsFromPath:
      cluster_name:
      - spec
      - clusterName
      name:
      - metadata
      - name
      namespace:
      - metadata
      - namespace
      uid:
      - metadata
      - uid
    metricNamePrefix: capi_machineset
    metrics:
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            paused_value: []
          path:
          - metadata
          - annotations
          - cluster.x-k8s.io/paused
        type: Info
      help: Whether the machineset is paused and any of its resources will not be
        processed by the controllers.
      name: annotation_paused
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: false
          path:
          - metadata
          - creationTimestamp
          valueFrom: null
        type: Gauge
      help: Unix creation timestamp.
      name: created
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            bootstrap_reference_kind:
            - spec
            - template
            - spec
            - bootstrap
            - configRef
            - kind
            bootstrap_reference_name:
            - spec
            - template
            - spec
            - bootstrap
            - configRef
            - name
            infrastructure_reference_kind:
            - spec
            - template
            - spec
            - infrastructureRef
            - kind
            infrastructure_reference_name:
            - spec
            - template
            - spec
            - infrastructureRef
            - name
            version:
            - spec
            - template
            - spec
            - version
          path: null
        type: Info
      help: Information about a machineset.
      name: info
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            owner_is_controller:
            - controller
            owner_kind:
            - kind
            owner_name:
            - name
            owner_uid:
            - uid
          path:
          - metadata
          - ownerReferences
        type: Info
      help: Owner references.
      name: owner
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - spec
          - replicas
          valueFrom: null
        type: Gauge
      help: The number of desired machines for a machineset.
      name: spec_replicas
    - each:
        stateSet:
          labelName: status
          labelsFromPath:
            type:
            - type
          list:
          - "True"
          - "False"
          - Unknown
          path:
          - status
          - conditions
          valueFrom:
          - status
        type: StateSet
      help: The condition of a machineset.
      name: status_condition
    - each:
        gauge:
          labelFromKey: ""
          labelsFromPath:
            status:
            - status
            type:
            - type
          nilIsZero: false
          path:
          - status
          - conditions
          valueFrom:
          - lastTransitionTime
        type: Gauge
      help: The condition last transition time of a machineset.
      name: status_condition_last_transition_time
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - status
          - replicas
          valueFrom: null
        type: Gauge
      help: The number of replicas per machineset.
      name: status_replicas
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - status
          - availableReplicas
          valueFrom: null
        type: Gauge
      help: The number of available replicas per machineset.
      name: status_replicas_available
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - status
          - fullyLabeledReplicas
          valueFrom: null
        type: Gauge
      help: The number of fully labeled replicas per machineset.
      name: status_replicas_fully_labeled
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - status
          - readyReplicas
          valueFrom: null
        type: Gauge
      help: The number of ready replicas per machineset.
      name: status_replicas_ready
    resourcePlural: ""
  - errorLogV: 0
    groupVersionKind:
      group: controlplane.cluster.x-k8s.io
      kind: KubeadmControlPlane
      version: v1beta1
    labelsFromPath:
      cluster_name:
      - metadata
      - ownerReferences
      - '[kind=Cluster]'
      - name
      name:
      - metadata
      - name
      namespace:
      - metadata
      - namespace
      uid:
      - metadata
      - uid
    metricNamePrefix: capi_kubeadmcontrolplane
    metrics:
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            paused_value: []
          path:
          - metadata
          - annotations
          - cluster.x-k8s.io/paused
        type: Info
      help: Whether the kubeadmcontrolplane is paused and any of its resources will
        not be processed by the controllers.
      name: annotation_paused
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: false
          path:
          - metadata
          - creationTimestamp
          valueFrom: null
        type: Gauge
      help: Unix creation timestamp.
      name: created
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            version:
            - spec
            - version
          path: null
        type: Info
      help: Information about a kubeadmcontrolplane.
      name: info
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            owner_is_controller:
            - controller
            owner_kind:
            - kind
            owner_name:
            - name
            owner_uid:
            - uid
          path:
          - metadata
          - ownerReferences
        type: Info
      help: Owner references.
      name: owner
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: false
          path:
          - spec
          - replicas
          valueFrom: null
        type: Gauge
      help: The number of desired machines for a kubeadmcontrolplane.
      name: spec_replicas
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: false
          path:
          - spec
          - rolloutStrategy
          - rollingUpdate
          - maxSurge
          valueFrom: null
        type: Gauge
      help: Maximum number of replicas that can be scheduled above the desired number
        of replicas during a rolling update of a kubeadmcontrolplane.
      name: spec_strategy_rollingupdate_max_surge
    - each:
        stateSet:
          labelName: status
          labelsFromPath:
            type:
            - type
          list:
          - "True"
          - "False"
          - Unknown
          path:
          - status
          - conditions
          valueFrom:
          - status
        type: StateSet
      help: The condition of a kubeadmcontrolplane.
      name: status_condition
    - each:
        gauge:
          labelFromKey: ""
          labelsFromPath:
            status:
            - status
            type:
            - type
          nilIsZero: false
          path:
          - status
          - conditions
          valueFrom:
          - lastTransitionTime
        type: Gauge
      help: The condition last transition time of a kubeadmcontrolplane.
      name: status_condition_last_transition_time
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - status
          - replicas
          valueFrom: null
        type: Gauge
      help: The number of replicas per kubeadmcontrolplane.
      name: status_replicas
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - status
          - readyReplicas
          valueFrom: null
        type: Gauge
      help: The number of ready replicas per kubeadmcontrolplane.
      name: status_replicas_ready
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - status
          - unavailableReplicas
          valueFrom: null
        type: Gauge
      help: The number of unavailable replicas per kubeadmcontrolplane.
      name: status_replicas_unavailable
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: true
          path:
          - status
          - updatedReplicas
          valueFrom: null
        type: Gauge
      help: The number of updated replicas per kubeadmcontrolplane.
      name: status_replicas_updated
    resourcePlural: ""
  - errorLogV: 0
    groupVersionKind:
      group: infrastructure.cluster.x-k8s.io
      kind: VSphereCluster
      version: v1beta1
    labelsFromPath:
      cluster_name:
      - metadata
      - labels
      - cluster.x-k8s.io/cluster-name
      name:
      - metadata
      - name
      namespace:
      - metadata
      - namespace
      uid:
      - metadata
      - uid
    metricNamePrefix: capv_vspherecluster
    metrics:
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            paused_value: []
          path:
          - metadata
          - annotations
          - cluster.x-k8s.io/paused
        type: Info
      help: Whether the vspherecluster is paused and any of its resources will not
        be processed by the controllers.
      name: annotation_paused
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: false
          path:
          - metadata
          - creationTimestamp
          valueFrom: null
        type: Gauge
      help: Unix creation timestamp.
      name: created
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            spec_server:
            - spec
            - server
            status_vsphere_version:
            - status
            - vCenterVersion
          path: null
        type: Info
      help: Information about a vspherecluster.
      name: info
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            owner_is_controller:
            - controller
            owner_kind:
            - kind
            owner_name:
            - name
            owner_uid:
            - uid
          path:
          - metadata
          - ownerReferences
        type: Info
      help: Owner references.
      name: owner
    - each:
        stateSet:
          labelName: status
          labelsFromPath:
            type:
            - type
          list:
          - "True"
          - "False"
          - Unknown
          path:
          - status
          - conditions
          valueFrom:
          - status
        type: StateSet
      help: The condition of a vspherecluster.
      name: status_condition
    - each:
        gauge:
          labelFromKey: ""
          labelsFromPath:
            status:
            - status
            type:
            - type
          nilIsZero: false
          path:
          - status
          - conditions
          valueFrom:
          - lastTransitionTime
        type: Gauge
      help: The condition last transition time of a vspherecluster.
      name: status_condition_last_transition_time
    resourcePlural: ""
  - errorLogV: 0
    groupVersionKind:
      group: infrastructure.cluster.x-k8s.io
      kind: VSphereClusterIdentity
      version: v1beta1
    labelsFromPath:
      cluster_name:
      - metadata
      - labels
      - cluster.x-k8s.io/cluster-name
      name:
      - metadata
      - name
      namespace:
      - metadata
      - namespace
      uid:
      - metadata
      - uid
    metricNamePrefix: capv_vsphereclusteridentity
    metrics:
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            paused_value: []
          path:
          - metadata
          - annotations
          - cluster.x-k8s.io/paused
        type: Info
      help: Whether the vsphereclusteridentity is paused and any of its resources
        will not be processed by the controllers.
      name: annotation_paused
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: false
          path:
          - metadata
          - creationTimestamp
          valueFrom: null
        type: Gauge
      help: Unix creation timestamp.
      name: created
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            name:
            - metadata
            - name
          path: null
        type: Info
      help: Information about a vsphereclusteridentity.
      name: info
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            owner_is_controller:
            - controller
            owner_kind:
            - kind
            owner_name:
            - name
            owner_uid:
            - uid
          path:
          - metadata
          - ownerReferences
        type: Info
      help: Owner references.
      name: owner
    - each:
        stateSet:
          labelName: status
          labelsFromPath:
            type:
            - type
          list:
          - "True"
          - "False"
          - Unknown
          path:
          - status
          - conditions
          valueFrom:
          - status
        type: StateSet
      help: The condition of a vsphereclusteridentity.
      name: status_condition
    - each:
        gauge:
          labelFromKey: ""
          labelsFromPath:
            status:
            - status
            type:
            - type
          nilIsZero: false
          path:
          - status
          - conditions
          valueFrom:
          - lastTransitionTime
        type: Gauge
      help: The condition last transition time of a vsphereclusteridentity.
      name: status_condition_last_transition_time
    resourcePlural: ""
  - errorLogV: 0
    groupVersionKind:
      group: infrastructure.cluster.x-k8s.io
      kind: VSphereDeploymentZone
      version: v1beta1
    labelsFromPath:
      cluster_name:
      - metadata
      - labels
      - cluster.x-k8s.io/cluster-name
      name:
      - metadata
      - name
      namespace:
      - metadata
      - namespace
      uid:
      - metadata
      - uid
    metricNamePrefix: capv_vspheredeploymentzone
    metrics:
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            paused_value: []
          path:
          - metadata
          - annotations
          - cluster.x-k8s.io/paused
        type: Info
      help: Whether the vspheredeploymentzone is paused and any of its resources will
        not be processed by the controllers.
      name: annotation_paused
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: false
          path:
          - metadata
          - creationTimestamp
          valueFrom: null
        type: Gauge
      help: Unix creation timestamp.
      name: created
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            name:
            - metadata
            - name
          path: null
        type: Info
      help: Information about a vspheredeploymentzone.
      name: info
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            owner_is_controller:
            - controller
            owner_kind:
            - kind
            owner_name:
            - name
            owner_uid:
            - uid
          path:
          - metadata
          - ownerReferences
        type: Info
      help: Owner references.
      name: owner
    - each:
        stateSet:
          labelName: status
          labelsFromPath:
            type:
            - type
          list:
          - "True"
          - "False"
          - Unknown
          path:
          - status
          - conditions
          valueFrom:
          - status
        type: StateSet
      help: The condition of a vspheredeploymentzone.
      name: status_condition
    - each:
        gauge:
          labelFromKey: ""
          labelsFromPath:
            status:
            - status
            type:
            - type
          nilIsZero: false
          path:
          - status
          - conditions
          valueFrom:
          - lastTransitionTime
        type: Gauge
      help: The condition last transition time of a vspheredeploymentzone.
      name: status_condition_last_transition_time
    resourcePlural: ""
  - errorLogV: 0
    groupVersionKind:
      group: infrastructure.cluster.x-k8s.io
      kind: VSphereFailureDomain
      version: v1beta1
    labelsFromPath:
      cluster_name:
      - metadata
      - labels
      - cluster.x-k8s.io/cluster-name
      name:
      - metadata
      - name
      namespace:
      - metadata
      - namespace
      uid:
      - metadata
      - uid
    metricNamePrefix: capv_vspherefailuredomain
    metrics:
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            paused_value: []
          path:
          - metadata
          - annotations
          - cluster.x-k8s.io/paused
        type: Info
      help: Whether the vspherefailuredomain is paused and any of its resources will
        not be processed by the controllers.
      name: annotation_paused
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: false
          path:
          - metadata
          - creationTimestamp
          valueFrom: null
        type: Gauge
      help: Unix creation timestamp.
      name: created
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            name:
            - metadata
            - name
          path: null
        type: Info
      help: Information about a vspherefailuredomain.
      name: info
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            owner_is_controller:
            - controller
            owner_kind:
            - kind
            owner_name:
            - name
            owner_uid:
            - uid
          path:
          - metadata
          - ownerReferences
        type: Info
      help: Owner references.
      name: owner
    resourcePlural: ""
  - errorLogV: 0
    groupVersionKind:
      group: infrastructure.cluster.x-k8s.io
      kind: VSphereMachine
      version: v1beta1
    labelsFromPath:
      cluster_name:
      - metadata
      - labels
      - cluster.x-k8s.io/cluster-name
      name:
      - metadata
      - name
      namespace:
      - metadata
      - namespace
      uid:
      - metadata
      - uid
    metricNamePrefix: capv_vspheremachine
    metrics:
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            address:
            - address
            type:
            - type
          path:
          - status
          - addresses
        type: Info
      help: Address information about a vspheremachine.
      name: addresses
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            paused_value: []
          path:
          - metadata
          - annotations
          - cluster.x-k8s.io/paused
        type: Info
      help: Whether the vspheremachine is paused and any of its resources will not
        be processed by the controllers.
      name: annotation_paused
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: false
          path:
          - metadata
          - creationTimestamp
          valueFrom: null
        type: Gauge
      help: Unix creation timestamp.
      name: created
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            provider_id:
            - spec
            - providerID
          path: null
        type: Info
      help: Information about a vspheremachine.
      name: info
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            owner_is_controller:
            - controller
            owner_kind:
            - kind
            owner_name:
            - name
            owner_uid:
            - uid
          path:
          - metadata
          - ownerReferences
        type: Info
      help: Owner references.
      name: owner
    - each:
        stateSet:
          labelName: status
          labelsFromPath:
            type:
            - type
          list:
          - "True"
          - "False"
          - Unknown
          path:
          - status
          - conditions
          valueFrom:
          - status
        type: StateSet
      help: The condition of a vspheremachine.
      name: status_condition
    - each:
        gauge:
          labelFromKey: ""
          labelsFromPath:
            status:
            - status
            type:
            - type
          nilIsZero: false
          path:
          - status
          - conditions
          valueFrom:
          - lastTransitionTime
        type: Gauge
      help: The condition last transition time of a vspheremachine.
      name: status_condition_last_transition_time
    resourcePlural: ""
  - errorLogV: 0
    groupVersionKind:
      group: infrastructure.cluster.x-k8s.io
      kind: VSphereVM
      version: v1beta1
    labelsFromPath:
      cluster_name:
      - metadata
      - labels
      - cluster.x-k8s.io/cluster-name
      name:
      - metadata
      - name
      namespace:
      - metadata
      - namespace
      uid:
      - metadata
      - uid
    metricNamePrefix: capv_vspherevm
    metrics:
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            address: []
          path:
          - status
          - addresses
        type: Info
      help: Address information about a vspherevm.
      name: addresses
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            paused_value: []
          path:
          - metadata
          - annotations
          - cluster.x-k8s.io/paused
        type: Info
      help: Whether the vspherevm is paused and any of its resources will not be processed
        by the controllers.
      name: annotation_paused
    - each:
        gauge:
          labelFromKey: ""
          nilIsZero: false
          path:
          - metadata
          - creationTimestamp
          valueFrom: null
        type: Gauge
      help: Unix creation timestamp.
      name: created
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            status_clonemode:
            - status
            - cloneMode
          path: null
        type: Info
      help: Information about a vspherevm.
      name: info
    - each:
        info:
          labelFromKey: ""
          labelsFromPath:
            owner_is_controller:
            - controller
            owner_kind:
            - kind
            owner_name:
            - name
            owner_uid:
            - uid
          path:
          - metadata
          - ownerReferences
        type: Info
      help: Owner references.
      name: owner
    - each:
        stateSet:
          labelName: status
          labelsFromPath:
            type:
            - type
          list:
          - "True"
          - "False"
          - Unknown
          path:
          - status
          - conditions
          valueFrom:
          - status
        type: StateSet
      help: The condition of a vspherevm.
      name: status_condition
    - each:
        gauge:
          labelFromKey: ""
          labelsFromPath:
            status:
            - status
            type:
            - type
          nilIsZero: false
          path:
          - status
          - conditions
          valueFrom:
          - lastTransitionTime
        type: Gauge
      help: The condition last transition time of a vspherevm.
      name: status_condition_last_transition_time
    resourcePlural: ""

Result metrics sample:

# HELP capi_kubeadmconfig_annotation_paused Whether the kubeadmconfig is paused and any of its resources will not be processed by the controllers.
# TYPE capi_kubeadmconfig_annotation_paused info
# HELP capi_kubeadmconfig_created Unix creation timestamp.
# TYPE capi_kubeadmconfig_created gauge
capi_kubeadmconfig_created{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-gbg6g",namespace="default",uid="42566005-2cea-4de8-80d4-10d1931fd858"} 1.692973972e+09
capi_kubeadmconfig_created{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-md-0-sfn9r",namespace="default",uid="17ce285b-8cec-429f-8cd1-7953b90f3b76"} 1.692974065e+09
# HELP capi_kubeadmconfig_info Information about a kubeadmconfig.
# TYPE capi_kubeadmconfig_info info
capi_kubeadmconfig_info{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-gbg6g",namespace="default",uid="42566005-2cea-4de8-80d4-10d1931fd858"} 1
capi_kubeadmconfig_info{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-md-0-sfn9r",namespace="default",uid="17ce285b-8cec-429f-8cd1-7953b90f3b76"} 1
# HELP capi_kubeadmconfig_owner Owner references.
# TYPE capi_kubeadmconfig_owner info
capi_kubeadmconfig_owner{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-gbg6g",namespace="default",owner_is_controller="true",owner_kind="Machine",owner_name="capi-test-dq88p",owner_uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0",uid="42566005-2cea-4de8-80d4-10d1931fd858"} 1
capi_kubeadmconfig_owner{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-md-0-sfn9r",namespace="default",owner_is_controller="true",owner_kind="Machine",owner_name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",owner_uid="72c2270a-a399-406c-aa32-bb8698dd341f",uid="17ce285b-8cec-429f-8cd1-7953b90f3b76"} 1
# HELP capi_kubeadmconfig_status_condition The condition of a kubeadmconfig.
# TYPE capi_kubeadmconfig_status_condition stateset
capi_kubeadmconfig_status_condition{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-gbg6g",namespace="default",status="False",type="CertificatesAvailable",uid="42566005-2cea-4de8-80d4-10d1931fd858"} 0
capi_kubeadmconfig_status_condition{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-gbg6g",namespace="default",status="False",type="DataSecretAvailable",uid="42566005-2cea-4de8-80d4-10d1931fd858"} 0
capi_kubeadmconfig_status_condition{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-gbg6g",namespace="default",status="False",type="Ready",uid="42566005-2cea-4de8-80d4-10d1931fd858"} 0
capi_kubeadmconfig_status_condition{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-gbg6g",namespace="default",status="True",type="CertificatesAvailable",uid="42566005-2cea-4de8-80d4-10d1931fd858"} 1
capi_kubeadmconfig_status_condition{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-gbg6g",namespace="default",status="True",type="DataSecretAvailable",uid="42566005-2cea-4de8-80d4-10d1931fd858"} 1
capi_kubeadmconfig_status_condition{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-gbg6g",namespace="default",status="True",type="Ready",uid="42566005-2cea-4de8-80d4-10d1931fd858"} 1
capi_kubeadmconfig_status_condition{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-gbg6g",namespace="default",status="Unknown",type="CertificatesAvailable",uid="42566005-2cea-4de8-80d4-10d1931fd858"} 0
capi_kubeadmconfig_status_condition{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-gbg6g",namespace="default",status="Unknown",type="DataSecretAvailable",uid="42566005-2cea-4de8-80d4-10d1931fd858"} 0
capi_kubeadmconfig_status_condition{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-gbg6g",namespace="default",status="Unknown",type="Ready",uid="42566005-2cea-4de8-80d4-10d1931fd858"} 0
capi_kubeadmconfig_status_condition{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-md-0-sfn9r",namespace="default",status="False",type="CertificatesAvailable",uid="17ce285b-8cec-429f-8cd1-7953b90f3b76"} 0
capi_kubeadmconfig_status_condition{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-md-0-sfn9r",namespace="default",status="False",type="DataSecretAvailable",uid="17ce285b-8cec-429f-8cd1-7953b90f3b76"} 0
capi_kubeadmconfig_status_condition{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-md-0-sfn9r",namespace="default",status="False",type="Ready",uid="17ce285b-8cec-429f-8cd1-7953b90f3b76"} 0
capi_kubeadmconfig_status_condition{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-md-0-sfn9r",namespace="default",status="True",type="CertificatesAvailable",uid="17ce285b-8cec-429f-8cd1-7953b90f3b76"} 1
capi_kubeadmconfig_status_condition{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-md-0-sfn9r",namespace="default",status="True",type="DataSecretAvailable",uid="17ce285b-8cec-429f-8cd1-7953b90f3b76"} 1
capi_kubeadmconfig_status_condition{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-md-0-sfn9r",namespace="default",status="True",type="Ready",uid="17ce285b-8cec-429f-8cd1-7953b90f3b76"} 1
capi_kubeadmconfig_status_condition{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-md-0-sfn9r",namespace="default",status="Unknown",type="CertificatesAvailable",uid="17ce285b-8cec-429f-8cd1-7953b90f3b76"} 0
capi_kubeadmconfig_status_condition{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-md-0-sfn9r",namespace="default",status="Unknown",type="DataSecretAvailable",uid="17ce285b-8cec-429f-8cd1-7953b90f3b76"} 0
capi_kubeadmconfig_status_condition{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-md-0-sfn9r",namespace="default",status="Unknown",type="Ready",uid="17ce285b-8cec-429f-8cd1-7953b90f3b76"} 0
# HELP capi_kubeadmconfig_status_condition_last_transition_time The condition last transition time of a kubeadmconfig.
# TYPE capi_kubeadmconfig_status_condition_last_transition_time gauge
capi_kubeadmconfig_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-gbg6g",namespace="default",status="True",type="CertificatesAvailable",uid="42566005-2cea-4de8-80d4-10d1931fd858"} 1.692973973e+09
capi_kubeadmconfig_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-gbg6g",namespace="default",status="True",type="DataSecretAvailable",uid="42566005-2cea-4de8-80d4-10d1931fd858"} 1.692973973e+09
capi_kubeadmconfig_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-gbg6g",namespace="default",status="True",type="Ready",uid="42566005-2cea-4de8-80d4-10d1931fd858"} 1.692973973e+09
capi_kubeadmconfig_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-md-0-sfn9r",namespace="default",status="True",type="CertificatesAvailable",uid="17ce285b-8cec-429f-8cd1-7953b90f3b76"} 1.692974065e+09
capi_kubeadmconfig_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-md-0-sfn9r",namespace="default",status="True",type="DataSecretAvailable",uid="17ce285b-8cec-429f-8cd1-7953b90f3b76"} 1.692974066e+09
capi_kubeadmconfig_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="bootstrap.cluster.x-k8s.io",customresource_kind="KubeadmConfig",customresource_version="v1beta1",name="capi-test-md-0-sfn9r",namespace="default",status="True",type="Ready",uid="17ce285b-8cec-429f-8cd1-7953b90f3b76"} 1.692974066e+09
# HELP capi_cluster_annotation_paused Whether the cluster is paused and any of its resources will not be processed by the controllers.
# TYPE capi_cluster_annotation_paused info
# HELP capi_cluster_created Unix creation timestamp.
# TYPE capi_cluster_created gauge
capi_cluster_created{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 1.692973837e+09
# HELP capi_cluster_info Information about a cluster.
# TYPE capi_cluster_info info
capi_cluster_info{control_plane_endpoint_host="10.180.202.245",control_plane_endpoint_port="6443",control_plane_reference_kind="KubeadmControlPlane",control_plane_reference_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",infrastructure_reference_kind="VSphereCluster",infrastructure_reference_name="capi-test",name="capi-test",namespace="default",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 1
# HELP capi_cluster_spec_paused Whether the cluster is paused and any of its resources will not be processed by the controllers.
# TYPE capi_cluster_spec_paused gauge
capi_cluster_spec_paused{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 0
# HELP capi_cluster_status_condition The condition of a cluster.
# TYPE capi_cluster_status_condition stateset
capi_cluster_status_condition{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="False",type="ControlPlaneInitialized",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 0
capi_cluster_status_condition{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="False",type="ControlPlaneReady",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 0
capi_cluster_status_condition{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="False",type="InfrastructureReady",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 0
capi_cluster_status_condition{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="False",type="Ready",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 0
capi_cluster_status_condition{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="ControlPlaneInitialized",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 1
capi_cluster_status_condition{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="ControlPlaneReady",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 1
capi_cluster_status_condition{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="InfrastructureReady",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 1
capi_cluster_status_condition{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="Ready",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 1
capi_cluster_status_condition{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="Unknown",type="ControlPlaneInitialized",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 0
capi_cluster_status_condition{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="Unknown",type="ControlPlaneReady",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 0
capi_cluster_status_condition{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="Unknown",type="InfrastructureReady",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 0
capi_cluster_status_condition{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="Unknown",type="Ready",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 0
# HELP capi_cluster_status_condition_last_transition_time The condition last transition time of a cluster.
# TYPE capi_cluster_status_condition_last_transition_time gauge
capi_cluster_status_condition_last_transition_time{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="ControlPlaneInitialized",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 1.692974034e+09
capi_cluster_status_condition_last_transition_time{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="ControlPlaneReady",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 1.692974047e+09
capi_cluster_status_condition_last_transition_time{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="InfrastructureReady",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 1.692973897e+09
capi_cluster_status_condition_last_transition_time{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="Ready",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 1.692974047e+09
# HELP capi_cluster_status_phase The clusters current phase.
# TYPE capi_cluster_status_phase stateset
capi_cluster_status_phase{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",phase="Deleting",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 0
capi_cluster_status_phase{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",phase="Failed",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 0
capi_cluster_status_phase{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",phase="Pending",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 0
capi_cluster_status_phase{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",phase="Provisioned",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 1
capi_cluster_status_phase{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",phase="Provisioning",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 0
capi_cluster_status_phase{customresource_group="cluster.x-k8s.io",customresource_kind="Cluster",customresource_version="v1beta1",name="capi-test",namespace="default",phase="Unknown",uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b"} 0
# HELP capi_machinedeployment_annotation_paused Whether the machinedeployment is paused and any of its resources will not be processed by the controllers.
# TYPE capi_machinedeployment_annotation_paused info
# HELP capi_machinedeployment_created Unix creation timestamp.
# TYPE capi_machinedeployment_created gauge
capi_machinedeployment_created{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 1.692973837e+09
# HELP capi_machinedeployment_info Information about a machinedeployment.
# TYPE capi_machinedeployment_info info
capi_machinedeployment_info{bootstrap_reference_kind="KubeadmConfigTemplate",bootstrap_reference_name="capi-test-md-0",cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",infrastructure_reference_kind="VSphereMachineTemplate",infrastructure_reference_name="capi-test-worker",name="capi-test-md-0",namespace="default",uid="75237ca8-f643-4121-9963-83d1d1a1a555",version="v1.27.3"} 1
# HELP capi_machinedeployment_owner Owner references.
# TYPE capi_machinedeployment_owner info
capi_machinedeployment_owner{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",owner_kind="Cluster",owner_name="capi-test",owner_uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 1
# HELP capi_machinedeployment_spec_paused Whether the machinedeployment is paused and any of its resources will not be processed by the controllers.
# TYPE capi_machinedeployment_spec_paused gauge
capi_machinedeployment_spec_paused{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 0
# HELP capi_machinedeployment_spec_replicas The number of desired machines for a machinedeployment.
# TYPE capi_machinedeployment_spec_replicas gauge
capi_machinedeployment_spec_replicas{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 1
# HELP capi_machinedeployment_spec_strategy_rollingupdate_max_surge Maximum number of replicas that can be scheduled above the desired number of replicas during a rolling update of a machinedeployment.
# TYPE capi_machinedeployment_spec_strategy_rollingupdate_max_surge gauge
capi_machinedeployment_spec_strategy_rollingupdate_max_surge{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 1
# HELP capi_machinedeployment_spec_strategy_rollingupdate_max_unavailable Maximum number of unavailable replicas during a rolling update of a machinedeployment.
# TYPE capi_machinedeployment_spec_strategy_rollingupdate_max_unavailable gauge
capi_machinedeployment_spec_strategy_rollingupdate_max_unavailable{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 0
# HELP capi_machinedeployment_status_condition The condition of a machinedeployment.
# TYPE capi_machinedeployment_status_condition stateset
capi_machinedeployment_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",status="False",type="Available",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 1
capi_machinedeployment_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",status="False",type="Ready",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 1
capi_machinedeployment_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",status="True",type="Available",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 0
capi_machinedeployment_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",status="True",type="Ready",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 0
capi_machinedeployment_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",status="Unknown",type="Available",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 0
capi_machinedeployment_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",status="Unknown",type="Ready",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 0
# HELP capi_machinedeployment_status_condition_last_transition_time The condition last transition time of a machinedeployment.
# TYPE capi_machinedeployment_status_condition_last_transition_time gauge
capi_machinedeployment_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",status="False",type="Available",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 1.69297396e+09
capi_machinedeployment_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",status="False",type="Ready",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 1.69297396e+09
# HELP capi_machinedeployment_status_phase The machinedeployments current phase.
# TYPE capi_machinedeployment_status_phase stateset
capi_machinedeployment_status_phase{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",phase="Failed",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 0
capi_machinedeployment_status_phase{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",phase="Running",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 0
capi_machinedeployment_status_phase{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",phase="ScalingDown",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 0
capi_machinedeployment_status_phase{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",phase="ScalingUp",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 1
capi_machinedeployment_status_phase{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",phase="Unknown",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 0
# HELP capi_machinedeployment_status_replicas The number of replicas per machinedeployment.
# TYPE capi_machinedeployment_status_replicas gauge
capi_machinedeployment_status_replicas{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 1
# HELP capi_machinedeployment_status_replicas_available The number of available replicas per machinedeployment.
# TYPE capi_machinedeployment_status_replicas_available gauge
capi_machinedeployment_status_replicas_available{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 0
# HELP capi_machinedeployment_status_replicas_ready The number of ready replicas per machinedeployment.
# TYPE capi_machinedeployment_status_replicas_ready gauge
capi_machinedeployment_status_replicas_ready{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 0
# HELP capi_machinedeployment_status_replicas_unavailable The number of unavailable replicas per machinedeployment.
# TYPE capi_machinedeployment_status_replicas_unavailable gauge
capi_machinedeployment_status_replicas_unavailable{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 1
# HELP capi_machinedeployment_status_replicas_updated The number of updated replicas per machinedeployment.
# TYPE capi_machinedeployment_status_replicas_updated gauge
capi_machinedeployment_status_replicas_updated{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineDeployment",customresource_version="v1beta1",name="capi-test-md-0",namespace="default",uid="75237ca8-f643-4121-9963-83d1d1a1a555"} 1
# HELP capi_machine_addresses Address information about a machine.
# TYPE capi_machine_addresses info
capi_machine_addresses{address="10.180.192.196",cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",type="ExternalIP",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1
capi_machine_addresses{address="10.180.202.245",cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",type="ExternalIP",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1
capi_machine_addresses{address="fd01:3:8:208:250:56ff:febc:b4e1",cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",type="ExternalIP",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1
capi_machine_addresses{address="10.180.201.232",cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",type="ExternalIP",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 1
capi_machine_addresses{address="fd01:3:8:208:250:56ff:febc:63f7",cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",type="ExternalIP",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 1
# HELP capi_machine_annotation_paused Whether the machine is paused and any of its resources will not be processed by the controllers.
# TYPE capi_machine_annotation_paused info
# HELP capi_machine_created Unix creation timestamp.
# TYPE capi_machine_created gauge
capi_machine_created{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1.692973972e+09
capi_machine_created{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 1.692974065e+09
# HELP capi_machine_info Information about a machine.
# TYPE capi_machine_info info
capi_machine_info{bootstrap_reference_kind="KubeadmConfig",bootstrap_reference_name="capi-test-gbg6g",cluster_name="capi-test",container_runtime_version="containerd://1.6.4",control_plane_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",infrastructure_reference_kind="VSphereMachine",infrastructure_reference_name="capi-test-svxfh",kernel_version="5.4.0-153-generic",kube_proxy_version="v1.27.3",kubelet_version="v1.27.3",name="capi-test-dq88p",namespace="default",os_image="Ubuntu 20.04.6 LTS",provider_id="vsphere://423ce63e-a013-c3e6-6f2b-1d3db6796d66",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0",version="v1.27.3"} 1
capi_machine_info{bootstrap_reference_kind="KubeadmConfig",bootstrap_reference_name="capi-test-md-0-sfn9r",cluster_name="capi-test",container_runtime_version="containerd://1.6.4",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",infrastructure_reference_kind="VSphereMachine",infrastructure_reference_name="capi-test-worker-jsvqr",kernel_version="5.4.0-153-generic",kube_proxy_version="v1.27.3",kubelet_version="v1.27.3",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",os_image="Ubuntu 20.04.6 LTS",provider_id="vsphere://423cc094-413c-4de0-c476-d8929b46c93f",uid="72c2270a-a399-406c-aa32-bb8698dd341f",version="v1.27.3"} 1
# HELP capi_machine_owner Owner references.
# TYPE capi_machine_owner info
capi_machine_owner{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",owner_is_controller="true",owner_kind="KubeadmControlPlane",owner_name="capi-test",owner_uid="a3f79737-9c15-496d-ab04-f59a9973a5a4",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1
capi_machine_owner{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",owner_is_controller="true",owner_kind="MachineSet",owner_name="capi-test-md-0-67dfc798c7x8gpqb",owner_uid="0e9a3878-de2d-4e1a-ad74-cd894219da16",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 1
# HELP capi_machine_status_certificatesexpirydate Information about certificate expiration date of a control plane node.
# TYPE capi_machine_status_certificatesexpirydate gauge
capi_machine_status_certificatesexpirydate{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1.724510017e+09
capi_machine_status_certificatesexpirydate{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 0
# HELP capi_machine_status_condition The condition of a machine.
# TYPE capi_machine_status_condition stateset
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="False",type="APIServerPodHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="False",type="BootstrapReady",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="False",type="ControllerManagerPodHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="False",type="EtcdMemberHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="False",type="EtcdPodHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="False",type="InfrastructureReady",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="False",type="NodeHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="False",type="Ready",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="False",type="SchedulerPodHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="APIServerPodHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="BootstrapReady",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="ControllerManagerPodHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="EtcdMemberHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="EtcdPodHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="InfrastructureReady",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="NodeHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="Ready",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="SchedulerPodHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="Unknown",type="APIServerPodHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="Unknown",type="BootstrapReady",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="Unknown",type="ControllerManagerPodHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="Unknown",type="EtcdMemberHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="Unknown",type="EtcdPodHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="Unknown",type="InfrastructureReady",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="Unknown",type="NodeHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="Unknown",type="Ready",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="Unknown",type="SchedulerPodHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="False",type="BootstrapReady",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="False",type="InfrastructureReady",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="False",type="NodeHealthy",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 1
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="False",type="Ready",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="True",type="BootstrapReady",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 1
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="True",type="InfrastructureReady",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 1
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="True",type="NodeHealthy",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="True",type="Ready",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 1
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="Unknown",type="BootstrapReady",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="Unknown",type="InfrastructureReady",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="Unknown",type="NodeHealthy",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 0
capi_machine_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="Unknown",type="Ready",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 0
# HELP capi_machine_status_condition_last_transition_time The condition last transition time of a machine.
# TYPE capi_machine_status_condition_last_transition_time gauge
capi_machine_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="False",type="NodeHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1.692974054e+09
capi_machine_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="APIServerPodHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1.692974055e+09
capi_machine_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="BootstrapReady",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1.692973973e+09
capi_machine_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="ControllerManagerPodHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1.692974055e+09
capi_machine_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="EtcdMemberHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1.69297406e+09
capi_machine_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="EtcdPodHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1.692974055e+09
capi_machine_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="InfrastructureReady",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1.692974046e+09
capi_machine_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="Ready",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1.692974046e+09
capi_machine_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="SchedulerPodHealthy",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1.692974055e+09
capi_machine_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="False",type="NodeHealthy",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 1.692974135e+09
capi_machine_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="True",type="BootstrapReady",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 1.692974066e+09
capi_machine_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="True",type="InfrastructureReady",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 1.692974135e+09
capi_machine_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="True",type="Ready",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 1.692974135e+09
# HELP capi_machine_status_noderef Information about the node reference of a machine.
# TYPE capi_machine_status_noderef info
capi_machine_status_noderef{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",node_name="capi-test-dq88p",node_uid="cad6ae5f-d8ea-478a-a70a-5e4114e42fa1",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1
capi_machine_status_noderef{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",node_name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",node_uid="9dec6abc-deb5-4bfa-92e8-0868bfbb30a8",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 1
# HELP capi_machine_status_phase The machines current phase.
# TYPE capi_machine_status_phase stateset
capi_machine_status_phase{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",phase="Deleted",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_phase{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",phase="Deleting",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_phase{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",phase="Failed",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_phase{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",phase="Pending",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_phase{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",phase="Provisioned",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_phase{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",phase="Provisioning",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_phase{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",phase="Running",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 1
capi_machine_status_phase{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",phase="Unknown",uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0"} 0
capi_machine_status_phase{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",phase="Deleted",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 0
capi_machine_status_phase{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",phase="Deleting",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 0
capi_machine_status_phase{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",phase="Failed",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 0
capi_machine_status_phase{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",phase="Pending",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 0
capi_machine_status_phase{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",phase="Provisioned",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 0
capi_machine_status_phase{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",phase="Provisioning",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 0
capi_machine_status_phase{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",phase="Running",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 1
capi_machine_status_phase{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="Machine",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",phase="Unknown",uid="72c2270a-a399-406c-aa32-bb8698dd341f"} 0
# HELP capi_machineset_annotation_paused Whether the machineset is paused and any of its resources will not be processed by the controllers.
# TYPE capi_machineset_annotation_paused info
# HELP capi_machineset_created Unix creation timestamp.
# TYPE capi_machineset_created gauge
capi_machineset_created{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 1.69297396e+09
# HELP capi_machineset_info Information about a machineset.
# TYPE capi_machineset_info info
capi_machineset_info{bootstrap_reference_kind="KubeadmConfigTemplate",bootstrap_reference_name="capi-test-md-0",cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",infrastructure_reference_kind="VSphereMachineTemplate",infrastructure_reference_name="capi-test-worker",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16",version="v1.27.3"} 1
# HELP capi_machineset_owner Owner references.
# TYPE capi_machineset_owner info
capi_machineset_owner{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",owner_is_controller="true",owner_kind="MachineDeployment",owner_name="capi-test-md-0",owner_uid="75237ca8-f643-4121-9963-83d1d1a1a555",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 1
# HELP capi_machineset_spec_replicas The number of desired machines for a machineset.
# TYPE capi_machineset_spec_replicas gauge
capi_machineset_spec_replicas{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 1
# HELP capi_machineset_status_condition The condition of a machineset.
# TYPE capi_machineset_status_condition stateset
capi_machineset_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",status="False",type="MachinesCreated",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 0
capi_machineset_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",status="False",type="MachinesReady",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 0
capi_machineset_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",status="False",type="Ready",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 1
capi_machineset_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",status="False",type="Resized",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 1
capi_machineset_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",status="True",type="MachinesCreated",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 1
capi_machineset_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",status="True",type="MachinesReady",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 1
capi_machineset_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",status="True",type="Ready",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 0
capi_machineset_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",status="True",type="Resized",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 0
capi_machineset_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",status="Unknown",type="MachinesCreated",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 0
capi_machineset_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",status="Unknown",type="MachinesReady",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 0
capi_machineset_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",status="Unknown",type="Ready",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 0
capi_machineset_status_condition{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",status="Unknown",type="Resized",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 0
# HELP capi_machineset_status_condition_last_transition_time The condition last transition time of a machineset.
# TYPE capi_machineset_status_condition_last_transition_time gauge
capi_machineset_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",status="False",type="Ready",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 1.692974065e+09
capi_machineset_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",status="False",type="Resized",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 1.69297396e+09
capi_machineset_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",status="True",type="MachinesCreated",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 1.692974065e+09
capi_machineset_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",status="True",type="MachinesReady",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 1.692974135e+09
# HELP capi_machineset_status_replicas The number of replicas per machineset.
# TYPE capi_machineset_status_replicas gauge
capi_machineset_status_replicas{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 1
# HELP capi_machineset_status_replicas_available The number of available replicas per machineset.
# TYPE capi_machineset_status_replicas_available gauge
capi_machineset_status_replicas_available{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 0
# HELP capi_machineset_status_replicas_fully_labeled The number of fully labeled replicas per machineset.
# TYPE capi_machineset_status_replicas_fully_labeled gauge
capi_machineset_status_replicas_fully_labeled{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 1
# HELP capi_machineset_status_replicas_ready The number of ready replicas per machineset.
# TYPE capi_machineset_status_replicas_ready gauge
capi_machineset_status_replicas_ready{cluster_name="capi-test",customresource_group="cluster.x-k8s.io",customresource_kind="MachineSet",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb",namespace="default",uid="0e9a3878-de2d-4e1a-ad74-cd894219da16"} 0
# HELP capi_kubeadmcontrolplane_annotation_paused Whether the kubeadmcontrolplane is paused and any of its resources will not be processed by the controllers.
# TYPE capi_kubeadmcontrolplane_annotation_paused info
# HELP capi_kubeadmcontrolplane_created Unix creation timestamp.
# TYPE capi_kubeadmcontrolplane_created gauge
capi_kubeadmcontrolplane_created{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1.692973837e+09
# HELP capi_kubeadmcontrolplane_info Information about a kubeadmcontrolplane.
# TYPE capi_kubeadmcontrolplane_info info
capi_kubeadmcontrolplane_info{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4",version="v1.27.3"} 1
# HELP capi_kubeadmcontrolplane_owner Owner references.
# TYPE capi_kubeadmcontrolplane_owner info
capi_kubeadmcontrolplane_owner{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",owner_is_controller="true",owner_kind="Cluster",owner_name="capi-test",owner_uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1
# HELP capi_kubeadmcontrolplane_spec_replicas The number of desired machines for a kubeadmcontrolplane.
# TYPE capi_kubeadmcontrolplane_spec_replicas gauge
capi_kubeadmcontrolplane_spec_replicas{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1
# HELP capi_kubeadmcontrolplane_spec_strategy_rollingupdate_max_surge Maximum number of replicas that can be scheduled above the desired number of replicas during a rolling update of a kubeadmcontrolplane.
# TYPE capi_kubeadmcontrolplane_spec_strategy_rollingupdate_max_surge gauge
capi_kubeadmcontrolplane_spec_strategy_rollingupdate_max_surge{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1
# HELP capi_kubeadmcontrolplane_status_condition The condition of a kubeadmcontrolplane.
# TYPE capi_kubeadmcontrolplane_status_condition stateset
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="False",type="Available",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 0
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="False",type="CertificatesAvailable",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 0
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="False",type="ControlPlaneComponentsHealthy",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 0
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="False",type="EtcdClusterHealthy",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 0
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="False",type="MachinesCreated",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 0
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="False",type="MachinesReady",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 0
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="False",type="Ready",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 0
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="False",type="Resized",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 0
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="Available",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="CertificatesAvailable",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="ControlPlaneComponentsHealthy",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="EtcdClusterHealthy",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="MachinesCreated",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="MachinesReady",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="Ready",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="Resized",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="Unknown",type="Available",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 0
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="Unknown",type="CertificatesAvailable",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 0
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="Unknown",type="ControlPlaneComponentsHealthy",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 0
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="Unknown",type="EtcdClusterHealthy",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 0
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="Unknown",type="MachinesCreated",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 0
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="Unknown",type="MachinesReady",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 0
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="Unknown",type="Ready",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 0
capi_kubeadmcontrolplane_status_condition{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="Unknown",type="Resized",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 0
# HELP capi_kubeadmcontrolplane_status_condition_last_transition_time The condition last transition time of a kubeadmcontrolplane.
# TYPE capi_kubeadmcontrolplane_status_condition_last_transition_time gauge
capi_kubeadmcontrolplane_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="Available",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1.692974034e+09
capi_kubeadmcontrolplane_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="CertificatesAvailable",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1.692973972e+09
capi_kubeadmcontrolplane_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="ControlPlaneComponentsHealthy",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1.692974055e+09
capi_kubeadmcontrolplane_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="EtcdClusterHealthy",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1.69297406e+09
capi_kubeadmcontrolplane_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="MachinesCreated",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1.692973993e+09
capi_kubeadmcontrolplane_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="MachinesReady",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1.692974047e+09
capi_kubeadmcontrolplane_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="Ready",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1.692974047e+09
capi_kubeadmcontrolplane_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="Resized",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1.692974003e+09
# HELP capi_kubeadmcontrolplane_status_replicas The number of replicas per kubeadmcontrolplane.
# TYPE capi_kubeadmcontrolplane_status_replicas gauge
capi_kubeadmcontrolplane_status_replicas{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1
# HELP capi_kubeadmcontrolplane_status_replicas_ready The number of ready replicas per kubeadmcontrolplane.
# TYPE capi_kubeadmcontrolplane_status_replicas_ready gauge
capi_kubeadmcontrolplane_status_replicas_ready{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 0
# HELP capi_kubeadmcontrolplane_status_replicas_unavailable The number of unavailable replicas per kubeadmcontrolplane.
# TYPE capi_kubeadmcontrolplane_status_replicas_unavailable gauge
capi_kubeadmcontrolplane_status_replicas_unavailable{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1
# HELP capi_kubeadmcontrolplane_status_replicas_updated The number of updated replicas per kubeadmcontrolplane.
# TYPE capi_kubeadmcontrolplane_status_replicas_updated gauge
capi_kubeadmcontrolplane_status_replicas_updated{cluster_name="capi-test",customresource_group="controlplane.cluster.x-k8s.io",customresource_kind="KubeadmControlPlane",customresource_version="v1beta1",name="capi-test",namespace="default",uid="a3f79737-9c15-496d-ab04-f59a9973a5a4"} 1
# HELP capv_vspherecluster_annotation_paused Whether the vspherecluster is paused and any of its resources will not be processed by the controllers.
# TYPE capv_vspherecluster_annotation_paused info
# HELP capv_vspherecluster_created Unix creation timestamp.
# TYPE capv_vspherecluster_created gauge
capv_vspherecluster_created{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereCluster",customresource_version="v1beta1",name="capi-test",namespace="default",uid="d15de8d7-1e89-455e-81a7-d353b8a88041"} 1.692973837e+09
# HELP capv_vspherecluster_info Information about a vspherecluster.
# TYPE capv_vspherecluster_info info
capv_vspherecluster_info{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereCluster",customresource_version="v1beta1",name="capi-test",namespace="default",spec_server="wdc-10-180-202-184.nimbus.eng.vmware.com",status_vsphere_version="7.0.0",uid="d15de8d7-1e89-455e-81a7-d353b8a88041"} 1
# HELP capv_vspherecluster_owner Owner references.
# TYPE capv_vspherecluster_owner info
capv_vspherecluster_owner{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereCluster",customresource_version="v1beta1",name="capi-test",namespace="default",owner_is_controller="true",owner_kind="Cluster",owner_name="capi-test",owner_uid="4cb39f3a-2d99-40e1-9b2c-8aeb41837c0b",uid="d15de8d7-1e89-455e-81a7-d353b8a88041"} 1
# HELP capv_vspherecluster_status_condition The condition of a vspherecluster.
# TYPE capv_vspherecluster_status_condition stateset
capv_vspherecluster_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereCluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="False",type="ClusterModulesAvailable",uid="d15de8d7-1e89-455e-81a7-d353b8a88041"} 0
capv_vspherecluster_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereCluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="False",type="Ready",uid="d15de8d7-1e89-455e-81a7-d353b8a88041"} 0
capv_vspherecluster_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereCluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="False",type="VCenterAvailable",uid="d15de8d7-1e89-455e-81a7-d353b8a88041"} 0
capv_vspherecluster_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereCluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="ClusterModulesAvailable",uid="d15de8d7-1e89-455e-81a7-d353b8a88041"} 1
capv_vspherecluster_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereCluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="Ready",uid="d15de8d7-1e89-455e-81a7-d353b8a88041"} 1
capv_vspherecluster_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereCluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="VCenterAvailable",uid="d15de8d7-1e89-455e-81a7-d353b8a88041"} 1
capv_vspherecluster_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereCluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="Unknown",type="ClusterModulesAvailable",uid="d15de8d7-1e89-455e-81a7-d353b8a88041"} 0
capv_vspherecluster_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereCluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="Unknown",type="Ready",uid="d15de8d7-1e89-455e-81a7-d353b8a88041"} 0
capv_vspherecluster_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereCluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="Unknown",type="VCenterAvailable",uid="d15de8d7-1e89-455e-81a7-d353b8a88041"} 0
# HELP capv_vspherecluster_status_condition_last_transition_time The condition last transition time of a vspherecluster.
# TYPE capv_vspherecluster_status_condition_last_transition_time gauge
capv_vspherecluster_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereCluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="ClusterModulesAvailable",uid="d15de8d7-1e89-455e-81a7-d353b8a88041"} 1.692973971e+09
capv_vspherecluster_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereCluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="Ready",uid="d15de8d7-1e89-455e-81a7-d353b8a88041"} 1.692973897e+09
capv_vspherecluster_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereCluster",customresource_version="v1beta1",name="capi-test",namespace="default",status="True",type="VCenterAvailable",uid="d15de8d7-1e89-455e-81a7-d353b8a88041"} 1.692973897e+09
# HELP capv_vspheremachine_addresses Address information about a vspheremachine.
# TYPE capv_vspheremachine_addresses info
capv_vspheremachine_addresses{address="10.180.192.196",cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-svxfh",namespace="default",type="ExternalIP",uid="b4b2c008-8b0f-4501-8adb-7ee6bb12c585"} 1
capv_vspheremachine_addresses{address="10.180.202.245",cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-svxfh",namespace="default",type="ExternalIP",uid="b4b2c008-8b0f-4501-8adb-7ee6bb12c585"} 1
capv_vspheremachine_addresses{address="fd01:3:8:208:250:56ff:febc:b4e1",cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-svxfh",namespace="default",type="ExternalIP",uid="b4b2c008-8b0f-4501-8adb-7ee6bb12c585"} 1
capv_vspheremachine_addresses{address="10.180.201.232",cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-worker-jsvqr",namespace="default",type="ExternalIP",uid="2626b9e8-e87e-4e67-8b03-b75f6ebfa1a5"} 1
capv_vspheremachine_addresses{address="fd01:3:8:208:250:56ff:febc:63f7",cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-worker-jsvqr",namespace="default",type="ExternalIP",uid="2626b9e8-e87e-4e67-8b03-b75f6ebfa1a5"} 1
# HELP capv_vspheremachine_annotation_paused Whether the vspheremachine is paused and any of its resources will not be processed by the controllers.
# TYPE capv_vspheremachine_annotation_paused info
# HELP capv_vspheremachine_created Unix creation timestamp.
# TYPE capv_vspheremachine_created gauge
capv_vspheremachine_created{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-svxfh",namespace="default",uid="b4b2c008-8b0f-4501-8adb-7ee6bb12c585"} 1.692973972e+09
capv_vspheremachine_created{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-worker-jsvqr",namespace="default",uid="2626b9e8-e87e-4e67-8b03-b75f6ebfa1a5"} 1.692974065e+09
# HELP capv_vspheremachine_info Information about a vspheremachine.
# TYPE capv_vspheremachine_info info
capv_vspheremachine_info{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-svxfh",namespace="default",provider_id="vsphere://423ce63e-a013-c3e6-6f2b-1d3db6796d66",uid="b4b2c008-8b0f-4501-8adb-7ee6bb12c585"} 1
capv_vspheremachine_info{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-worker-jsvqr",namespace="default",provider_id="vsphere://423cc094-413c-4de0-c476-d8929b46c93f",uid="2626b9e8-e87e-4e67-8b03-b75f6ebfa1a5"} 1
# HELP capv_vspheremachine_owner Owner references.
# TYPE capv_vspheremachine_owner info
capv_vspheremachine_owner{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-svxfh",namespace="default",owner_is_controller="true",owner_kind="Machine",owner_name="capi-test-dq88p",owner_uid="fceb8fbe-82f4-4462-aeaa-88421e2509e0",uid="b4b2c008-8b0f-4501-8adb-7ee6bb12c585"} 1
capv_vspheremachine_owner{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-svxfh",namespace="default",owner_kind="VSphereCluster",owner_name="capi-test",owner_uid="d15de8d7-1e89-455e-81a7-d353b8a88041",uid="b4b2c008-8b0f-4501-8adb-7ee6bb12c585"} 1
capv_vspheremachine_owner{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-worker-jsvqr",namespace="default",owner_is_controller="true",owner_kind="Machine",owner_name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",owner_uid="72c2270a-a399-406c-aa32-bb8698dd341f",uid="2626b9e8-e87e-4e67-8b03-b75f6ebfa1a5"} 1
capv_vspheremachine_owner{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-worker-jsvqr",namespace="default",owner_kind="VSphereCluster",owner_name="capi-test",owner_uid="d15de8d7-1e89-455e-81a7-d353b8a88041",uid="2626b9e8-e87e-4e67-8b03-b75f6ebfa1a5"} 1
# HELP capv_vspheremachine_status_condition The condition of a vspheremachine.
# TYPE capv_vspheremachine_status_condition stateset
capv_vspheremachine_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-svxfh",namespace="default",status="False",type="Ready",uid="b4b2c008-8b0f-4501-8adb-7ee6bb12c585"} 0
capv_vspheremachine_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-svxfh",namespace="default",status="False",type="VMProvisioned",uid="b4b2c008-8b0f-4501-8adb-7ee6bb12c585"} 0
capv_vspheremachine_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-svxfh",namespace="default",status="True",type="Ready",uid="b4b2c008-8b0f-4501-8adb-7ee6bb12c585"} 1
capv_vspheremachine_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-svxfh",namespace="default",status="True",type="VMProvisioned",uid="b4b2c008-8b0f-4501-8adb-7ee6bb12c585"} 1
capv_vspheremachine_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-svxfh",namespace="default",status="Unknown",type="Ready",uid="b4b2c008-8b0f-4501-8adb-7ee6bb12c585"} 0
capv_vspheremachine_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-svxfh",namespace="default",status="Unknown",type="VMProvisioned",uid="b4b2c008-8b0f-4501-8adb-7ee6bb12c585"} 0
capv_vspheremachine_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-worker-jsvqr",namespace="default",status="False",type="Ready",uid="2626b9e8-e87e-4e67-8b03-b75f6ebfa1a5"} 0
capv_vspheremachine_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-worker-jsvqr",namespace="default",status="False",type="VMProvisioned",uid="2626b9e8-e87e-4e67-8b03-b75f6ebfa1a5"} 0
capv_vspheremachine_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-worker-jsvqr",namespace="default",status="True",type="Ready",uid="2626b9e8-e87e-4e67-8b03-b75f6ebfa1a5"} 1
capv_vspheremachine_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-worker-jsvqr",namespace="default",status="True",type="VMProvisioned",uid="2626b9e8-e87e-4e67-8b03-b75f6ebfa1a5"} 1
capv_vspheremachine_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-worker-jsvqr",namespace="default",status="Unknown",type="Ready",uid="2626b9e8-e87e-4e67-8b03-b75f6ebfa1a5"} 0
capv_vspheremachine_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-worker-jsvqr",namespace="default",status="Unknown",type="VMProvisioned",uid="2626b9e8-e87e-4e67-8b03-b75f6ebfa1a5"} 0
# HELP capv_vspheremachine_status_condition_last_transition_time The condition last transition time of a vspheremachine.
# TYPE capv_vspheremachine_status_condition_last_transition_time gauge
capv_vspheremachine_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-svxfh",namespace="default",status="True",type="Ready",uid="b4b2c008-8b0f-4501-8adb-7ee6bb12c585"} 1.692974046e+09
capv_vspheremachine_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-svxfh",namespace="default",status="True",type="VMProvisioned",uid="b4b2c008-8b0f-4501-8adb-7ee6bb12c585"} 1.692974046e+09
capv_vspheremachine_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-worker-jsvqr",namespace="default",status="True",type="Ready",uid="2626b9e8-e87e-4e67-8b03-b75f6ebfa1a5"} 1.692974135e+09
capv_vspheremachine_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereMachine",customresource_version="v1beta1",name="capi-test-worker-jsvqr",namespace="default",status="True",type="VMProvisioned",uid="2626b9e8-e87e-4e67-8b03-b75f6ebfa1a5"} 1.692974135e+09
# HELP capv_vspherevm_addresses Address information about a vspherevm.
# TYPE capv_vspherevm_addresses info
capv_vspherevm_addresses{address="10.180.192.196",cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",uid="fcc3c9c2-7c8c-499b-af52-2e7fb1c0b932"} 1
capv_vspherevm_addresses{address="10.180.202.245",cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",uid="fcc3c9c2-7c8c-499b-af52-2e7fb1c0b932"} 1
capv_vspherevm_addresses{address="fd01:3:8:208:250:56ff:febc:b4e1",cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",uid="fcc3c9c2-7c8c-499b-af52-2e7fb1c0b932"} 1
capv_vspherevm_addresses{address="10.180.201.232",cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",uid="7200d9aa-f541-4b30-a1f0-92ae7b1162f0"} 1
capv_vspherevm_addresses{address="fd01:3:8:208:250:56ff:febc:63f7",cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",uid="7200d9aa-f541-4b30-a1f0-92ae7b1162f0"} 1
# HELP capv_vspherevm_annotation_paused Whether the vspherevm is paused and any of its resources will not be processed by the controllers.
# TYPE capv_vspherevm_annotation_paused info
# HELP capv_vspherevm_created Unix creation timestamp.
# TYPE capv_vspherevm_created gauge
capv_vspherevm_created{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",uid="7200d9aa-f541-4b30-a1f0-92ae7b1162f0"} 1.692974066e+09
capv_vspherevm_created{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",uid="fcc3c9c2-7c8c-499b-af52-2e7fb1c0b932"} 1.692973973e+09
# HELP capv_vspherevm_info Information about a vspherevm.
# TYPE capv_vspherevm_info info
capv_vspherevm_info{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status_clonemode="linkedClone",uid="fcc3c9c2-7c8c-499b-af52-2e7fb1c0b932"} 1
capv_vspherevm_info{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status_clonemode="linkedClone",uid="7200d9aa-f541-4b30-a1f0-92ae7b1162f0"} 1
# HELP capv_vspherevm_owner Owner references.
# TYPE capv_vspherevm_owner info
capv_vspherevm_owner{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",owner_kind="VSphereMachine",owner_name="capi-test-svxfh",owner_uid="b4b2c008-8b0f-4501-8adb-7ee6bb12c585",uid="fcc3c9c2-7c8c-499b-af52-2e7fb1c0b932"} 1
capv_vspherevm_owner{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",owner_kind="VSphereMachine",owner_name="capi-test-worker-jsvqr",owner_uid="2626b9e8-e87e-4e67-8b03-b75f6ebfa1a5",uid="7200d9aa-f541-4b30-a1f0-92ae7b1162f0"} 1
# HELP capv_vspherevm_status_condition The condition of a vspherevm.
# TYPE capv_vspherevm_status_condition stateset
capv_vspherevm_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="False",type="Ready",uid="fcc3c9c2-7c8c-499b-af52-2e7fb1c0b932"} 0
capv_vspherevm_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="False",type="VCenterAvailable",uid="fcc3c9c2-7c8c-499b-af52-2e7fb1c0b932"} 0
capv_vspherevm_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="False",type="VMProvisioned",uid="fcc3c9c2-7c8c-499b-af52-2e7fb1c0b932"} 0
capv_vspherevm_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="Ready",uid="fcc3c9c2-7c8c-499b-af52-2e7fb1c0b932"} 1
capv_vspherevm_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="VCenterAvailable",uid="fcc3c9c2-7c8c-499b-af52-2e7fb1c0b932"} 1
capv_vspherevm_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="VMProvisioned",uid="fcc3c9c2-7c8c-499b-af52-2e7fb1c0b932"} 1
capv_vspherevm_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="Unknown",type="Ready",uid="fcc3c9c2-7c8c-499b-af52-2e7fb1c0b932"} 0
capv_vspherevm_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="Unknown",type="VCenterAvailable",uid="fcc3c9c2-7c8c-499b-af52-2e7fb1c0b932"} 0
capv_vspherevm_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="Unknown",type="VMProvisioned",uid="fcc3c9c2-7c8c-499b-af52-2e7fb1c0b932"} 0
capv_vspherevm_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="False",type="Ready",uid="7200d9aa-f541-4b30-a1f0-92ae7b1162f0"} 0
capv_vspherevm_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="False",type="VCenterAvailable",uid="7200d9aa-f541-4b30-a1f0-92ae7b1162f0"} 0
capv_vspherevm_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="False",type="VMProvisioned",uid="7200d9aa-f541-4b30-a1f0-92ae7b1162f0"} 0
capv_vspherevm_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="True",type="Ready",uid="7200d9aa-f541-4b30-a1f0-92ae7b1162f0"} 1
capv_vspherevm_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="True",type="VCenterAvailable",uid="7200d9aa-f541-4b30-a1f0-92ae7b1162f0"} 1
capv_vspherevm_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="True",type="VMProvisioned",uid="7200d9aa-f541-4b30-a1f0-92ae7b1162f0"} 1
capv_vspherevm_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="Unknown",type="Ready",uid="7200d9aa-f541-4b30-a1f0-92ae7b1162f0"} 0
capv_vspherevm_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="Unknown",type="VCenterAvailable",uid="7200d9aa-f541-4b30-a1f0-92ae7b1162f0"} 0
capv_vspherevm_status_condition{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="Unknown",type="VMProvisioned",uid="7200d9aa-f541-4b30-a1f0-92ae7b1162f0"} 0
# HELP capv_vspherevm_status_condition_last_transition_time The condition last transition time of a vspherevm.
# TYPE capv_vspherevm_status_condition_last_transition_time gauge
capv_vspherevm_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="Ready",uid="fcc3c9c2-7c8c-499b-af52-2e7fb1c0b932"} 1.692974046e+09
capv_vspherevm_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="VCenterAvailable",uid="fcc3c9c2-7c8c-499b-af52-2e7fb1c0b932"} 1.692973973e+09
capv_vspherevm_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-dq88p",namespace="default",status="True",type="VMProvisioned",uid="fcc3c9c2-7c8c-499b-af52-2e7fb1c0b932"} 1.692974046e+09
capv_vspherevm_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="True",type="Ready",uid="7200d9aa-f541-4b30-a1f0-92ae7b1162f0"} 1.692974135e+09
capv_vspherevm_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="True",type="VCenterAvailable",uid="7200d9aa-f541-4b30-a1f0-92ae7b1162f0"} 1.692974067e+09
capv_vspherevm_status_condition_last_transition_time{cluster_name="capi-test",customresource_group="infrastructure.cluster.x-k8s.io",customresource_kind="VSphereVM",customresource_version="v1beta1",name="capi-test-md-0-67dfc798c7x8gpqb-jc84p",namespace="default",status="True",type="VMProvisioned",uid="7200d9aa-f541-4b30-a1f0-92ae7b1162f0"} 1.692974135e+09

@chrischdi chrischdi force-pushed the pr-metrics-gen branch 3 times, most recently from 860d71a to ec46137 Compare August 28, 2023 10:50
@mrueg
Copy link
Member

mrueg commented Aug 28, 2023

This likely requires feedback from other maintainers:
I wonder if it would simplify the release process by a lot if we were able to incorporate it in the kube-state-metrics binary itself.
Something like an additional command:

kube-state-metrics generate myfile.go

@chrischdi
Copy link
Member Author

chrischdi commented Aug 28, 2023

This likely requires feedback from other maintainers: I wonder if it would simplify the release process by a lot if we were able to incorporate it in the kube-state-metrics binary itself. Something like an additional command:

kube-state-metrics generate myfile.go

That's great feedback 👍

If we like to do that, the caveat is that we will depend on controller-tools. E.g. the go.mod changes if we would do that would be the following:

Edit: see PR diff for up-to-date diff on go.mod

diff --git a/go.mod b/go.mod
index 30db0c47..76edc081 100644
--- a/go.mod
+++ b/go.mod
@@ -24,6 +24,8 @@ require (
        k8s.io/klog/v2 v2.100.1
        k8s.io/sample-controller v0.27.4
        k8s.io/utils v0.0.0-20230711102312-30195339c3c7
+       sigs.k8s.io/controller-tools v0.12.0
+       sigs.k8s.io/yaml v1.3.0
 )

 require (
@@ -34,6 +36,7 @@ require (
        github.com/davecgh/go-spew v1.1.1 // indirect
        github.com/emicklei/go-restful/v3 v3.9.0 // indirect
        github.com/evanphx/json-patch v4.12.0+incompatible // indirect
+       github.com/fatih/color v1.15.0 // indirect
        github.com/go-kit/log v0.2.1 // indirect
        github.com/go-logfmt/logfmt v0.5.1 // indirect
        github.com/go-logr/logr v1.2.3 // indirect
@@ -53,6 +56,8 @@ require (
        github.com/json-iterator/go v1.1.12 // indirect
        github.com/magiconair/properties v1.8.7 // indirect
        github.com/mailru/easyjson v0.7.7 // indirect
+       github.com/mattn/go-colorable v0.1.13 // indirect
+       github.com/mattn/go-isatty v0.0.17 // indirect
        github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
        github.com/mitchellh/mapstructure v1.5.0 // indirect
        github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
@@ -69,6 +74,7 @@ require (
        github.com/spf13/pflag v1.0.5 // indirect
        github.com/subosito/gotenv v1.4.2 // indirect
        golang.org/x/crypto v0.9.0 // indirect
+       golang.org/x/mod v0.10.0 // indirect
        golang.org/x/net v0.10.0 // indirect
        golang.org/x/oauth2 v0.8.0 // indirect
        golang.org/x/sync v0.2.0 // indirect
@@ -76,13 +82,14 @@ require (
        golang.org/x/term v0.8.0 // indirect
        golang.org/x/text v0.9.0 // indirect
        golang.org/x/time v0.1.0 // indirect
+       golang.org/x/tools v0.8.0 // indirect
        google.golang.org/appengine v1.6.7 // indirect
        google.golang.org/protobuf v1.30.0 // indirect
        gopkg.in/inf.v0 v0.9.1 // indirect
        gopkg.in/ini.v1 v1.67.0 // indirect
        gopkg.in/yaml.v2 v2.4.0 // indirect
+       k8s.io/apiextensions-apiserver v0.27.1 // indirect
        k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f // indirect
        sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
        sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
-       sigs.k8s.io/yaml v1.3.0 // indirect
 )

@k8s-ci-robot k8s-ci-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Aug 30, 2023
@k8s-ci-robot k8s-ci-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Aug 30, 2023
@k8s-ci-robot k8s-ci-robot reopened this Oct 12, 2023
@k8s-ci-robot
Copy link
Contributor

@CatherineF-dev: Reopened this PR.

In response to this:

/reopen

Sry, I wanted to resolve one comment, instead of closing this issue.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@chrischdi
Copy link
Member Author

@CatherineF-dev , kindly asking for another round of review :-) I think this last push should address the open comments if I'm right.

@k8s-ci-robot k8s-ci-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Oct 28, 2023
@chrischdi
Copy link
Member Author

@CatherineF-dev , kindly asking for another round of review :-) I think this last push should address the open comments if I'm right.

@CatherineF-dev , friendly ping :-) Happy to chat about it!

@k8s-ci-robot k8s-ci-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Dec 5, 2023
pkg/customresourcestate/generate/cmd.go Outdated Show resolved Hide resolved
pkg/customresourcestate/generate/cmd.go Outdated Show resolved Hide resolved
for _, pkg := range ctx.Roots {
// skip packages which don't import metav1 because they can't define a CRD without meta v1.
metav1 := pkg.Imports()["k8s.io/apimachinery/pkg/apis/meta/v1"]
if metav1 == nil {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we have debug logging here to inform which ones were skipped? Could make it easier for users to figure out.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Happy to add a log line, but I think this could be misleading.
There are lots of other cases where a package gets skipped, but thats inside controller-tools's crd.FindKubeKinds which we call here:

https://github.com/kubernetes-sigs/controller-tools/blob/v0.13.0/pkg/crd/gen.go#L238

pkg/customresourcestate/generate/generator/generator.go Outdated Show resolved Hide resolved
@dgrisonnet
Copy link
Member

I'll try to have a look at this once I get some time.

@chrischdi
Copy link
Member Author

Thanks @mrueg for the review, also thanks @dgrisonnet for letting me know.

Also sorry for the long time I required to get this back on track and rebased. I also just came back to this after PTO, organisational changes etc. 👍 but happy to finish this work in the way its best for the community :-)

@k8s-ci-robot k8s-ci-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Dec 11, 2023
@k8s-ci-robot k8s-ci-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Dec 11, 2023
@chrischdi
Copy link
Member Author

Hey folks, happy to drive this further or shutdown the PR if its not reasonable to get added.

@fabriziopandini
Copy link
Member

fabriziopandini commented Jan 24, 2024

Great to see this moving forward, IMO this will be a great addition and help move metrics for CRD to the next level (talking from a Cluster API perspective, but many other projects can benefit from this as well)

@k8s-ci-robot k8s-ci-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jan 30, 2024
chrischdi and others added 6 commits January 30, 2024 08:47
Implements the metric-gen tool which could get used to create custom resource
configurations directly from code, similar to what controller-gen does.
@k8s-ci-robot k8s-ci-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jan 30, 2024
@k8s-ci-robot k8s-ci-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Mar 26, 2024
@k8s-ci-robot
Copy link
Contributor

PR needs rebase.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. triage/accepted Indicates an issue or PR is ready to be actively worked on.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Automate generation of Custom Resource configuration
7 participants