#![cfg(feature = "docker_info")]
#![allow(clippy::too_many_arguments, clippy::type_complexity)]
#![allow(
clippy::missing_errors_doc,
clippy::doc_markdown,
clippy::useless_format
)]
#![allow(unused_imports)]
use foundation_macros::JsonHash;
use foundation_netio::shared::client::http_client::HttpClient;
use foundation_netio::{DynNetClient, PreparedRequestBuilder};
use serde::{Deserialize, Serialize};
use super::shared::ObjectVersion;
use super::shared::ApiResponse;
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct ClusterInfo {
#[serde(rename = "CreatedAt")]
pub created_at: Option<String>,
#[serde(rename = "DataPathPort")]
pub data_path_port: Option<i64>,
#[serde(rename = "DefaultAddrPool")]
pub default_addr_pool: Option<Vec<String>>,
#[serde(rename = "ID")]
pub id: Option<String>,
#[serde(rename = "RootRotationInProgress")]
pub root_rotation_in_progress: Option<bool>,
#[serde(rename = "Spec")]
pub spec: Option<SwarmSpec>,
#[serde(rename = "SubnetSize")]
pub subnet_size: Option<i64>,
#[serde(rename = "TLSInfo")]
pub tls_info: Option<TLSInfo>,
#[serde(rename = "UpdatedAt")]
pub updated_at: Option<String>,
#[serde(rename = "Version")]
pub version: Option<ObjectVersion>,
}
pub type Commit = super::shared::IdObject;
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct ContainerdInfo {
#[serde(rename = "Address")]
pub address: Option<String>,
#[serde(rename = "Namespaces")]
pub namespaces: Option<std::collections::HashMap<String, serde_json::Value>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct DeviceInfo {
#[serde(rename = "ID")]
pub id: Option<String>,
#[serde(rename = "Source")]
pub source: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct FirewallInfo {
#[serde(rename = "Driver")]
pub driver: Option<String>,
#[serde(rename = "Info")]
pub info: Option<Vec<Vec<String>>>,
}
pub type GenericResources = Vec<std::collections::HashMap<String, serde_json::Value>>;
pub type LocalNodeState = String;
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct NRIInfo {
#[serde(rename = "Info")]
pub info: Option<Vec<Vec<String>>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct PeerNode {
#[serde(rename = "Addr")]
pub addr: Option<String>,
#[serde(rename = "NodeID")]
pub node_id: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct PluginsInfo {
#[serde(rename = "Authorization")]
pub authorization: Option<Vec<String>>,
#[serde(rename = "Log")]
pub log: Option<Vec<String>>,
#[serde(rename = "Network")]
pub network: Option<Vec<String>>,
#[serde(rename = "Volume")]
pub volume: Option<Vec<String>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct RegistryServiceConfig {
#[serde(rename = "IndexConfigs")]
pub index_configs: Option<serde_json::Value>,
#[serde(rename = "InsecureRegistryCIDRs")]
pub insecure_registry_cid_rs: Option<Vec<String>>,
#[serde(rename = "Mirrors")]
pub mirrors: Option<Vec<String>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct SwarmInfo {
#[serde(rename = "Cluster")]
pub cluster: Option<ClusterInfo>,
#[serde(rename = "ControlAvailable")]
pub control_available: Option<bool>,
#[serde(rename = "Error")]
pub error: Option<String>,
#[serde(rename = "LocalNodeState")]
pub local_node_state: Option<String>,
#[serde(rename = "Managers")]
pub managers: Option<i64>,
#[serde(rename = "NodeAddr")]
pub node_addr: Option<String>,
#[serde(rename = "NodeID")]
pub node_id: Option<String>,
#[serde(rename = "Nodes")]
pub nodes: Option<i64>,
#[serde(rename = "RemoteManagers")]
pub remote_managers: Option<Vec<PeerNode>>,
}
pub type SwarmSpec = super::shared::SwarmSpecShape;
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonHash)]
pub struct SystemInfo {
#[serde(rename = "Architecture")]
pub architecture: Option<String>,
#[serde(rename = "CDISpecDirs")]
pub cdi_spec_dirs: Option<Vec<String>>,
#[serde(rename = "CPUSet")]
pub cpu_set: Option<bool>,
#[serde(rename = "CPUShares")]
pub cpu_shares: Option<bool>,
#[serde(rename = "CgroupDriver")]
pub cgroup_driver: Option<String>,
#[serde(rename = "CgroupVersion")]
pub cgroup_version: Option<String>,
#[serde(rename = "Containerd")]
pub containerd: Option<ContainerdInfo>,
#[serde(rename = "ContainerdCommit")]
pub containerd_commit: Option<Commit>,
#[serde(rename = "Containers")]
pub containers: Option<i64>,
#[serde(rename = "ContainersPaused")]
pub containers_paused: Option<i64>,
#[serde(rename = "ContainersRunning")]
pub containers_running: Option<i64>,
#[serde(rename = "ContainersStopped")]
pub containers_stopped: Option<i64>,
#[serde(rename = "CpuCfsPeriod")]
pub cpu_cfs_period: Option<bool>,
#[serde(rename = "CpuCfsQuota")]
pub cpu_cfs_quota: Option<bool>,
#[serde(rename = "Debug")]
pub debug: Option<bool>,
#[serde(rename = "DefaultAddressPools")]
pub default_address_pools: Option<Vec<std::collections::HashMap<String, serde_json::Value>>>,
#[serde(rename = "DefaultRuntime")]
pub default_runtime: Option<String>,
#[serde(rename = "DiscoveredDevices")]
pub discovered_devices: Option<Vec<DeviceInfo>>,
#[serde(rename = "DockerRootDir")]
pub docker_root_dir: Option<String>,
#[serde(rename = "Driver")]
pub driver: Option<String>,
#[serde(rename = "DriverStatus")]
pub driver_status: Option<Vec<Vec<String>>>,
#[serde(rename = "ExperimentalBuild")]
pub experimental_build: Option<bool>,
#[serde(rename = "FirewallBackend")]
pub firewall_backend: Option<FirewallInfo>,
#[serde(rename = "GenericResources")]
pub generic_resources: Option<Vec<std::collections::HashMap<String, serde_json::Value>>>,
#[serde(rename = "HttpProxy")]
pub http_proxy: Option<String>,
#[serde(rename = "HttpsProxy")]
pub https_proxy: Option<String>,
#[serde(rename = "ID")]
pub id: Option<String>,
#[serde(rename = "IPv4Forwarding")]
pub i_pv4_forwarding: Option<bool>,
#[serde(rename = "Images")]
pub images: Option<i64>,
#[serde(rename = "IndexServerAddress")]
pub index_server_address: Option<String>,
#[serde(rename = "InitBinary")]
pub init_binary: Option<String>,
#[serde(rename = "InitCommit")]
pub init_commit: Option<Commit>,
#[serde(rename = "Isolation")]
pub isolation: Option<String>,
#[serde(rename = "KernelVersion")]
pub kernel_version: Option<String>,
#[serde(rename = "Labels")]
pub labels: Option<Vec<String>>,
#[serde(rename = "LiveRestoreEnabled")]
pub live_restore_enabled: Option<bool>,
#[serde(rename = "LoggingDriver")]
pub logging_driver: Option<String>,
#[serde(rename = "MemTotal")]
pub mem_total: Option<i64>,
#[serde(rename = "MemoryLimit")]
pub memory_limit: Option<bool>,
#[serde(rename = "NCPU")]
pub ncpu: Option<i64>,
#[serde(rename = "NEventsListener")]
pub n_events_listener: Option<i64>,
#[serde(rename = "NFd")]
pub n_fd: Option<i64>,
#[serde(rename = "NGoroutines")]
pub n_goroutines: Option<i64>,
#[serde(rename = "NRI")]
pub nri: Option<NRIInfo>,
#[serde(rename = "Name")]
pub name: Option<String>,
#[serde(rename = "NoProxy")]
pub no_proxy: Option<String>,
#[serde(rename = "OSType")]
pub os_type: Option<String>,
#[serde(rename = "OSVersion")]
pub os_version: Option<String>,
#[serde(rename = "OomKillDisable")]
pub oom_kill_disable: Option<bool>,
#[serde(rename = "OperatingSystem")]
pub operating_system: Option<String>,
#[serde(rename = "PidsLimit")]
pub pids_limit: Option<bool>,
#[serde(rename = "Plugins")]
pub plugins: Option<PluginsInfo>,
#[serde(rename = "ProductLicense")]
pub product_license: Option<String>,
#[serde(rename = "RegistryConfig")]
pub registry_config: Option<RegistryServiceConfig>,
#[serde(rename = "RuncCommit")]
pub runc_commit: Option<Commit>,
#[serde(rename = "Runtimes")]
pub runtimes: Option<serde_json::Value>,
#[serde(rename = "SecurityOptions")]
pub security_options: Option<Vec<String>>,
#[serde(rename = "ServerVersion")]
pub server_version: Option<String>,
#[serde(rename = "SwapLimit")]
pub swap_limit: Option<bool>,
#[serde(rename = "Swarm")]
pub swarm: Option<SwarmInfo>,
#[serde(rename = "SystemTime")]
pub system_time: Option<String>,
#[serde(rename = "Warnings")]
pub warnings: Option<Vec<String>>,
}
pub type TLSInfo = super::shared::CertIssuerPublicKeyCertIssuerSubjectTrustRootObject;
pub type SystemInfoArgs = super::shared::EmptyArgs;
pub async fn system_info_request<F>(
client: impl Into<super::shared::ApiClient>,
_args: &SystemInfoArgs,
base_url: &str,
builder_mod: Option<F>,
) -> Result<ApiResponse<SystemInfo>, super::shared::ApiError>
where
F: FnOnce(&mut PreparedRequestBuilder),
{
let path = format!("/info",);
let endpoint_url = format!("{}{}", base_url, path);
let mut builder = PreparedRequestBuilder::get(&endpoint_url)
.map_err(|e| super::shared::ApiError::RequestBuildFailed(e.to_string()))?;
if let Some(f) = builder_mod {
f(&mut builder);
}
super::shared::send_json(client.into(), builder.build()).await
}