cf_env/
models.rs

1use crate::enums::{ByteUnit, Error};
2use guid_create::GUID;
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5
6#[derive(Serialize, Deserialize, PartialEq, Debug)]
7pub struct MemoryLimit {
8    pub unit: ByteUnit,
9    pub size: u128,
10}
11
12impl MemoryLimit {
13    pub fn from_string(mut input: String, env_variable: String) -> Result<Self, Error<'static>> {
14        match ByteUnit::from_string(input.clone()) {
15            Ok(unit) => {
16                input.pop();
17                match input.parse::<u128>() {
18                    Ok(size) => Ok(Self { unit, size }),
19                    Err(_) => Err(Error::EnvMalformed(
20                        env_variable,
21                        "Ins't a valid u128".to_string(),
22                    )),
23                }
24            }
25            Err(_) => Err(Error::UnknownMemoryUnit),
26        }
27    }
28}
29
30#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
31pub struct ApplicationLimits {
32    pub disk: u128,
33    pub fds: u128,
34    pub mem: u128,
35}
36
37#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
38pub struct Application {
39    pub application_id: GUID,
40    pub application_name: String,
41    pub application_uris: Vec<String>,
42    pub application_version: GUID,
43    pub cf_api: String,
44    pub limits: ApplicationLimits,
45    pub name: String,
46    pub process_id: String,
47    pub process_type: String,
48    pub organization_id: GUID,
49    pub organization_name: String,
50    pub space_id: GUID,
51    pub space_name: String,
52    pub start: Option<String>,
53    pub started_at: Option<String>,
54    pub started_at_timestamp: Option<String>,
55    pub state_timestamp: Option<String>,
56    pub uris: Vec<String>,
57    pub version: GUID,
58}
59
60#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
61pub struct ServiceVolumeMount {
62    pub container_dir: String,
63    pub device_type: String,
64    pub mode: String,
65}
66
67#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
68pub struct Service<Credentials = Value> {
69    pub binding_guid: GUID,
70    pub binding_name: Option<String>,
71    pub instance_guid: GUID,
72    pub instance_name: String,
73    pub name: String,
74    pub label: String,
75    pub tags: Vec<String>,
76    pub plan: String,
77    pub credentials: Credentials,
78    pub syslog_drain_url: Option<String>,
79    pub volume_mounts: Vec<ServiceVolumeMount>,
80}