remove proxmox-rrd-api-types crate, s/RRDTimeFrameResolution/RRDTimeFrame/

Because the types used inside the RRD have other requirements
than the API types:

- other serialization format
- the API may not support all RRD features

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Dietmar Maurer 2021-10-13 10:24:44 +02:00 committed by Thomas Lamprecht
parent 426dda0730
commit c68fa58a59
11 changed files with 47 additions and 67 deletions

View File

@ -27,7 +27,6 @@ members = [
"pbs-fuse-loop", "pbs-fuse-loop",
"pbs-runtime", "pbs-runtime",
"proxmox-rest-server", "proxmox-rest-server",
"proxmox-rrd-api-types",
"proxmox-rrd", "proxmox-rrd",
"proxmox-systemd", "proxmox-systemd",
"pbs-tape", "pbs-tape",
@ -119,7 +118,6 @@ pbs-config = { path = "pbs-config" }
pbs-datastore = { path = "pbs-datastore" } pbs-datastore = { path = "pbs-datastore" }
pbs-runtime = { path = "pbs-runtime" } pbs-runtime = { path = "pbs-runtime" }
proxmox-rest-server = { path = "proxmox-rest-server" } proxmox-rest-server = { path = "proxmox-rest-server" }
proxmox-rrd-api-types = { path = "proxmox-rrd-api-types" }
proxmox-rrd = { path = "proxmox-rrd" } proxmox-rrd = { path = "proxmox-rrd" }
proxmox-systemd = { path = "proxmox-systemd" } proxmox-systemd = { path = "proxmox-systemd" }
pbs-tools = { path = "pbs-tools" } pbs-tools = { path = "pbs-tools" }

View File

@ -40,7 +40,6 @@ SUBCRATES := \
pbs-fuse-loop \ pbs-fuse-loop \
pbs-runtime \ pbs-runtime \
proxmox-rest-server \ proxmox-rest-server \
proxmox-rrd-api-types \
proxmox-rrd \ proxmox-rrd \
proxmox-systemd \ proxmox-systemd \
pbs-tape \ pbs-tape \

View File

@ -20,6 +20,5 @@ proxmox-schema = { version = "1.0.0", features = [ "api-macro" ] }
proxmox-time = "1.0.0" proxmox-time = "1.0.0"
proxmox-uuid = { version = "1.0.0", features = [ "serde" ] } proxmox-uuid = { version = "1.0.0", features = [ "serde" ] }
proxmox-rrd-api-types = { path = "../proxmox-rrd-api-types" }
proxmox-systemd = { path = "../proxmox-systemd" } proxmox-systemd = { path = "../proxmox-systemd" }
pbs-tools = { path = "../pbs-tools" } pbs-tools = { path = "../pbs-tools" }

View File

@ -424,4 +424,32 @@ pub const NODE_TASKS_LIST_TASKS_RETURN_TYPE: ReturnType = ReturnType {
).schema(), ).schema(),
}; };
pub use proxmox_rrd_api_types::{RRDMode, RRDTimeFrameResolution}; #[api()]
#[derive(Copy, Clone, Serialize, Deserialize)]
#[serde(rename_all = "UPPERCASE")]
/// RRD consolidation mode
pub enum RRDMode {
/// Maximum
Max,
/// Average
Average,
}
#[api()]
#[derive(Copy, Clone, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
/// RRD time frame
pub enum RRDTimeFrame {
/// Hour
Hour,
/// Day
Day,
/// Week
Week,
/// Month
Month,
/// Year
Year,
/// Decade (10 years)
Decade,
}

View File

@ -1,11 +0,0 @@
[package]
name = "proxmox-rrd-api-types"
version = "0.1.0"
authors = ["Proxmox Support Team <support@proxmox.com>"]
edition = "2018"
description = "API type definitions for proxmox-rrd crate."
[dependencies]
serde = { version = "1.0", features = ["derive"] }
proxmox-schema = { version = "1", features = ["api-macro"] }

View File

@ -1,33 +0,0 @@
use serde::{Deserialize, Serialize};
use proxmox_schema::api;
#[api()]
#[derive(Copy, Clone, Serialize, Deserialize)]
#[serde(rename_all = "UPPERCASE")]
/// RRD consolidation mode
pub enum RRDMode {
/// Maximum
Max,
/// Average
Average,
}
#[api()]
#[derive(Copy, Clone, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
/// RRD time frame resolution
pub enum RRDTimeFrameResolution {
/// Hour
Hour,
/// Day
Day,
/// Week
Week,
/// Month
Month,
/// Year
Year,
/// Decade (10 years)
Decade,
}

View File

@ -36,7 +36,7 @@ bitflags!{
pub struct RRAv1 { pub struct RRAv1 {
/// Defined the data soure type and consolidation function /// Defined the data soure type and consolidation function
pub flags: RRAFlags, pub flags: RRAFlags,
/// Resulution (seconds) from [RRDTimeFrameResolution] /// Resulution (seconds)
pub resolution: u64, pub resolution: u64,
/// Last update time (epoch) /// Last update time (epoch)
pub last_update: f64, pub last_update: f64,

View File

@ -28,7 +28,7 @@ use pxar::EntryKind;
use pbs_api_types::{ Authid, BackupContent, Counts, CryptMode, use pbs_api_types::{ Authid, BackupContent, Counts, CryptMode,
DataStoreListItem, GarbageCollectionStatus, GroupListItem, DataStoreListItem, GarbageCollectionStatus, GroupListItem,
SnapshotListItem, SnapshotVerifyState, PruneOptions, SnapshotListItem, SnapshotVerifyState, PruneOptions,
DataStoreStatus, RRDMode, RRDTimeFrameResolution, DataStoreStatus, RRDMode, RRDTimeFrame,
BACKUP_ARCHIVE_NAME_SCHEMA, BACKUP_ID_SCHEMA, BACKUP_TIME_SCHEMA, BACKUP_ARCHIVE_NAME_SCHEMA, BACKUP_ID_SCHEMA, BACKUP_TIME_SCHEMA,
BACKUP_TYPE_SCHEMA, DATASTORE_SCHEMA, BACKUP_TYPE_SCHEMA, DATASTORE_SCHEMA,
IGNORE_VERIFIED_BACKUPS_SCHEMA, UPID_SCHEMA, IGNORE_VERIFIED_BACKUPS_SCHEMA, UPID_SCHEMA,
@ -1537,7 +1537,7 @@ pub fn pxar_file_download(
schema: DATASTORE_SCHEMA, schema: DATASTORE_SCHEMA,
}, },
timeframe: { timeframe: {
type: RRDTimeFrameResolution, type: RRDTimeFrame,
}, },
cf: { cf: {
type: RRDMode, type: RRDMode,
@ -1551,7 +1551,7 @@ pub fn pxar_file_download(
/// Read datastore stats /// Read datastore stats
pub fn get_rrd_stats( pub fn get_rrd_stats(
store: String, store: String,
timeframe: RRDTimeFrameResolution, timeframe: RRDTimeFrame,
cf: RRDMode, cf: RRDMode,
_param: Value, _param: Value,
) -> Result<Value, Error> { ) -> Result<Value, Error> {

View File

@ -6,7 +6,7 @@ use proxmox_router::{Permission, Router};
use proxmox_schema::api; use proxmox_schema::api;
use pbs_api_types::{ use pbs_api_types::{
NODE_SCHEMA, RRDMode, RRDTimeFrameResolution, PRIV_SYS_AUDIT, NODE_SCHEMA, RRDMode, RRDTimeFrame, PRIV_SYS_AUDIT,
}; };
use crate::extract_rrd_data; use crate::extract_rrd_data;
@ -14,7 +14,7 @@ use crate::extract_rrd_data;
pub fn create_value_from_rrd( pub fn create_value_from_rrd(
basedir: &str, basedir: &str,
list: &[&str], list: &[&str],
timeframe: RRDTimeFrameResolution, timeframe: RRDTimeFrame,
mode: RRDMode, mode: RRDMode,
) -> Result<Value, Error> { ) -> Result<Value, Error> {
@ -63,7 +63,7 @@ pub fn create_value_from_rrd(
schema: NODE_SCHEMA, schema: NODE_SCHEMA,
}, },
timeframe: { timeframe: {
type: RRDTimeFrameResolution, type: RRDTimeFrame,
}, },
cf: { cf: {
type: RRDMode, type: RRDMode,
@ -76,7 +76,7 @@ pub fn create_value_from_rrd(
)] )]
/// Read node stats /// Read node stats
fn get_node_stats( fn get_node_stats(
timeframe: RRDTimeFrameResolution, timeframe: RRDTimeFrame,
cf: RRDMode, cf: RRDMode,
_param: Value, _param: Value,
) -> Result<Value, Error> { ) -> Result<Value, Error> {

View File

@ -14,7 +14,7 @@ use proxmox_router::{
use proxmox_router::list_subdirs_api_method; use proxmox_router::list_subdirs_api_method;
use pbs_api_types::{ use pbs_api_types::{
Authid, DATASTORE_SCHEMA, RRDMode, RRDTimeFrameResolution, Authid, DATASTORE_SCHEMA, RRDMode, RRDTimeFrame,
PRIV_DATASTORE_AUDIT, PRIV_DATASTORE_BACKUP, PRIV_DATASTORE_AUDIT, PRIV_DATASTORE_BACKUP,
}; };
@ -125,7 +125,7 @@ pub fn datastore_status(
let get_rrd = |what: &str| extract_rrd_data( let get_rrd = |what: &str| extract_rrd_data(
&rrd_dir, &rrd_dir,
what, what,
RRDTimeFrameResolution::Month, RRDTimeFrame::Month,
RRDMode::Average, RRDMode::Average,
); );

View File

@ -10,7 +10,7 @@ use anyhow::{format_err, Error};
use proxmox::tools::fs::CreateOptions; use proxmox::tools::fs::CreateOptions;
use pbs_api_types::{RRDMode, RRDTimeFrameResolution}; use pbs_api_types::{RRDMode, RRDTimeFrame};
use pbs_buildcfg::configdir; use pbs_buildcfg::configdir;
use pbs_tools::cert::CertInfo; use pbs_tools::cert::CertInfo;
use proxmox_rrd::{rrd::CF, RRDCache}; use proxmox_rrd::{rrd::CF, RRDCache};
@ -84,19 +84,19 @@ pub fn initialize_rrd_cache() -> Result<&'static RRDCache, Error> {
pub fn extract_rrd_data( pub fn extract_rrd_data(
basedir: &str, basedir: &str,
name: &str, name: &str,
timeframe: RRDTimeFrameResolution, timeframe: RRDTimeFrame,
mode: RRDMode, mode: RRDMode,
) -> Result<Option<(u64, u64, Vec<Option<f64>>)>, Error> { ) -> Result<Option<(u64, u64, Vec<Option<f64>>)>, Error> {
let end = proxmox_time::epoch_f64() as u64; let end = proxmox_time::epoch_f64() as u64;
let (start, resolution) = match timeframe { let (start, resolution) = match timeframe {
RRDTimeFrameResolution::Hour => (end - 3600, 60), RRDTimeFrame::Hour => (end - 3600, 60),
RRDTimeFrameResolution::Day => (end - 3600*24, 60), RRDTimeFrame::Day => (end - 3600*24, 60),
RRDTimeFrameResolution::Week => (end - 3600*24*7, 30*60), RRDTimeFrame::Week => (end - 3600*24*7, 30*60),
RRDTimeFrameResolution::Month => (end - 3600*24*30, 30*60), RRDTimeFrame::Month => (end - 3600*24*30, 30*60),
RRDTimeFrameResolution::Year => (end - 3600*24*365, 6*60*60), RRDTimeFrame::Year => (end - 3600*24*365, 6*60*60),
RRDTimeFrameResolution::Decade => (end - 10*3600*24*366, 7*86400), RRDTimeFrame::Decade => (end - 10*3600*24*366, 7*86400),
}; };
let cf = match mode { let cf = match mode {