Skip to main content

devops_armory/monitoring/gke/cpu/
calculated.rs

1use std::{
2    thread::
3    sleep, 
4    time
5};
6
7use super::usage::{
8    cpu_usage_cfgroup2,
9    cpu_usage_cfgroup1
10};
11
12/// Function to calculate used cpu - based on cpu cycles on cfgroup2 config in nodepool
13/// Amount of requested CPU needs to be provided as well as other gke data
14pub async fn cpu_calculated_stg_cfgroup2(
15    token: String,
16    gke_cluster_endpoint: String,
17    gke_cluster_namespace: String,
18    gke_pod_name: String,
19    cpu: f64
20) -> Result<f64, std::io::Error> {
21
22    let cpu_use_old = cpu_usage_cfgroup2(
23        token.clone(),
24        gke_cluster_endpoint.clone(),
25        gke_cluster_namespace.clone(),
26        gke_pod_name.clone())
27        .await.unwrap();
28
29    let cpu_use_new = cpu_usage_cfgroup2(
30        token.clone(),
31        gke_cluster_endpoint.clone(),
32        gke_cluster_namespace.clone(),
33        gke_pod_name.clone())
34    .await.unwrap();
35
36    loop {
37        let cpu_1 = cpu_use_old;
38
39        sleep(time::Duration::from_millis(1000));
40
41        let cpu_2 = cpu_use_new;
42        let cpu_actual_usage = (cpu_2 - cpu_1) / 1000000.0 / cpu;
43
44        return Ok(cpu_actual_usage);
45    }
46
47}
48
49
50/// Function to calculate used cpu - based on cpu cycles on cfgroup1 config in nodepool
51/// Amount of requested CPU needs to be provided as well as other gke data
52pub async fn cpu_calculated_stg_cfgroup1(
53    token: String,
54    gke_cluster_endpoint: String,
55    gke_cluster_namespace: String,
56    gke_pod_name: String,
57    cpu: f64
58) -> Result<f64, std::io::Error> {
59
60    let cpu_use_old = cpu_usage_cfgroup1(
61        token.clone(),
62        gke_cluster_endpoint.clone(),
63        gke_cluster_namespace.clone(),
64        gke_pod_name.clone())
65    .await.unwrap();
66
67    let cpu_use_new = cpu_usage_cfgroup1(
68        token.clone(),
69        gke_cluster_endpoint.clone(),
70        gke_cluster_namespace.clone(),
71        gke_pod_name.clone())
72    .await.unwrap();
73
74    loop {
75        let cpu_1 = cpu_use_old;
76
77        sleep(time::Duration::from_millis(1000));
78
79        let cpu_2 = cpu_use_new;
80        let cpu_actual_usage = (cpu_2 - cpu_1) / 1000000.0 / cpu;
81
82        return Ok(cpu_actual_usage);
83    }
84}