From 3a1f34933ba856150de33f7815cdf66cd11cf74a Mon Sep 17 00:00:00 2001 From: Nelson J Morais Date: Sat, 21 Nov 2020 02:08:13 +0000 Subject: [PATCH 1/2] GHA runners collector --- src/collectors/github_runners.rs | 174 +++++++++++++++++++++++++++++++ src/collectors/mod.rs | 9 ++ src/config.rs | 11 ++ src/lib.rs | 3 +- 4 files changed, 196 insertions(+), 1 deletion(-) create mode 100644 src/collectors/github_runners.rs diff --git a/src/collectors/github_runners.rs b/src/collectors/github_runners.rs new file mode 100644 index 0000000..20076d5 --- /dev/null +++ b/src/collectors/github_runners.rs @@ -0,0 +1,174 @@ +use crate::Config; +use anyhow::Error; +use log::{debug, error}; +use prometheus::core::Desc; +use prometheus::proto::MetricFamily; +use prometheus::{core::Collector, IntGauge, Opts}; +use reqwest::header::{ACCEPT, AUTHORIZATION, USER_AGENT}; +use reqwest::Method; +use std::collections::HashMap; +use std::sync::{Arc, RwLock}; +use tokio::time::Duration; + +const GH_RUNNERS_ENDPOINT: &str = "https://api.github.com/repos/{owner_repo}/actions/runners"; + +#[derive(Debug, serde::Deserialize)] +struct ApiResponse { + total_count: usize, + runners: Vec, +} + +#[derive(Debug, serde::Deserialize)] +struct Runner { + id: usize, + name: String, + os: String, + status: String, + busy: bool, + labels: Vec