dashboard:
  title: Nodepool
  rows:
    - title: Description
      height: 100px
      panels:
        - title: Description
          content: |
            **This dashboard is managed by [Grafyaml](https://docs.openstack.org/infra/system-config/grafyaml.html).**

            If you would like to make changes to this dashboard, please see the grafana directory in [project-config](https://opendev.org/openstack/project-config/src/grafana/nodepool.yaml).
          type: text
    - title: Nodes
      showTitle: true
      height: 150px
      panels:
        - title: Building
          span: 2
          sparkline:
            full: true
            show: true
          targets:
            - target: sumSeries(stats.gauges.nodepool.provider.*.nodes.building)
          type: singlestat
          valueName: current
        - title: Ready
          span: 2
          sparkline:
            full: true
            show: true
          targets:
            - target: sumSeries(stats.gauges.nodepool.provider.*.nodes.ready)
          type: singlestat
          valueName: current
        - title: In Use
          span: 1
          sparkline:
            full: true
            show: true
          targets:
            - target: sumSeries(stats.gauges.nodepool.provider.*.nodes.in-use)
          type: singlestat
          valueName: current
        - title: Used
          span: 1
          sparkline:
            full: true
            show: true
          targets:
            - target: sumSeries(stats.gauges.nodepool.provider.*.nodes.used)
          type: singlestat
          valueName: current
        - title: Deleting
          span: 2
          sparkline:
            full: true
            show: true
          targets:
              - target: sumSeries(stats.gauges.nodepool.provider.*.nodes.deleting)
          type: singlestat
          valueName: current
        - title: Hold
          span: 2
          sparkline:
            full: true
            show: true
          targets:
              - target: sumSeries(stats.gauges.nodepool.provider.*.nodes.hold)
          type: singlestat
          valueName: current
        - title: Failed
          span: 2
          sparkline:
            full: true
            show: true
          targets:
              - target: sumSeries(stats.gauges.nodepool.provider.*.nodes.failed)
          type: singlestat
          valueName: current
    - title: Nodepool Images
      showTitle: true
      height: 320px
      panels:
        - title: Building Nodes
          span: 3
          targets:
            - target: aliasByNode(stats.gauges.nodepool.label.*.nodes.building, 4)
          type: graph
        - title: Ready Nodes
          span: 3
          targets:
            - target: aliasByNode(stats.gauges.nodepool.label.*.nodes.ready, 4)
          type: graph
        - title: In-use Nodes
          span: 3
          targets:
            - target: aliasByNode(stats.gauges.nodepool.label.*.nodes.in-use, 4)
          type: graph
        - title: Deleting Nodes
          span: 3
          targets:
            - target: aliasByNode(stats.gauges.nodepool.label.*.nodes.deleting, 4)
          type: graph
    - title: Node Launches
      showTitle: true
      height: 250px
      panels:
        - title: Ready Node Launch Attempts
          type: graph
          span: 4
          nullPointMode: null as zero
          yaxes:
            - label: "events / min"
            - show: false
          targets:
            - target: aliasByNode(summarize(stats_counts.nodepool.launch.provider.*.ready, '1m'), 4)
        - title: Error Node Launch Attempts
          type: graph
          span: 4
          nullPointMode: null as zero
          yaxes:
            - label: "events / min"
            - show: false
          targets:
            - target: aliasByNode(smartSummarize(sumSeries(stats_counts.nodepool.launch.provider.*.error.*), '1m'), 4)
        - title: Time to Ready
          type: graph
          nullPointMode: "connected"
          span: 4
          yaxes:
            - label: "time"
              format: ms
            - show: false
          targets:
            - target: aliasByNode(stats.timers.nodepool.launch.provider.*.ready.mean, 5)