use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default)]
pub struct Config {
pub base_url: String,
pub private_key: String,
pub dashboard_user: Option<DashboardUser>,
pub dashboard_hmac_key: Option<String>,
}
#[derive(Debug, Clone, Default)]
pub struct ListOptions {
pub page: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct PaginationMeta {
pub page: i64,
pub limit: i64,
pub total: i64,
#[serde(rename = "totalPages")]
pub total_pages: i64,
}
#[derive(Debug, Clone, Deserialize)]
pub struct PaginatedResponse<T> {
pub items: Vec<T>,
pub pagination: PaginationMeta,
}
#[derive(Debug, Clone, Deserialize)]
pub struct CursorPaginatedResponse<T> {
pub items: Vec<T>,
#[serde(rename = "nextCursor")]
pub next_cursor: Option<i64>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct IdResponse {
pub id: i64,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ClientSessionStatus {
Connected,
Active,
Degraded,
Disconnected,
Expired,
Unknown,
UnknownValue(String),
}
impl ClientSessionStatus {
pub fn as_str(&self) -> &str {
match self {
ClientSessionStatus::Connected => "connected",
ClientSessionStatus::Active => "active",
ClientSessionStatus::Degraded => "degraded",
ClientSessionStatus::Disconnected => "disconnected",
ClientSessionStatus::Expired => "expired",
ClientSessionStatus::Unknown => "unknown",
ClientSessionStatus::UnknownValue(s) => s.as_str(),
}
}
pub fn is_known(&self) -> bool {
!matches!(self, ClientSessionStatus::UnknownValue(_))
}
}
impl std::fmt::Display for ClientSessionStatus {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(self.as_str())
}
}
impl From<&str> for ClientSessionStatus {
fn from(s: &str) -> Self {
match s {
"connected" => ClientSessionStatus::Connected,
"active" => ClientSessionStatus::Active,
"degraded" => ClientSessionStatus::Degraded,
"disconnected" => ClientSessionStatus::Disconnected,
"expired" => ClientSessionStatus::Expired,
"unknown" => ClientSessionStatus::Unknown,
other => ClientSessionStatus::UnknownValue(other.to_string()),
}
}
}
impl Serialize for ClientSessionStatus {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl<'de> Deserialize<'de> for ClientSessionStatus {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
Ok(ClientSessionStatus::from(s.as_str()))
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum CopysetState {
Active,
Draining,
SyncedDrained,
Retired,
Unknown(String),
}
impl CopysetState {
pub fn as_str(&self) -> &str {
match self {
CopysetState::Active => "active",
CopysetState::Draining => "draining",
CopysetState::SyncedDrained => "synced_drained",
CopysetState::Retired => "retired",
CopysetState::Unknown(s) => s.as_str(),
}
}
pub fn is_known(&self) -> bool {
!matches!(self, CopysetState::Unknown(_))
}
}
impl std::fmt::Display for CopysetState {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(self.as_str())
}
}
impl From<&str> for CopysetState {
fn from(s: &str) -> Self {
match s {
"active" => CopysetState::Active,
"draining" => CopysetState::Draining,
"synced_drained" => CopysetState::SyncedDrained,
"retired" => CopysetState::Retired,
other => CopysetState::Unknown(other.to_string()),
}
}
}
impl Serialize for CopysetState {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl<'de> Deserialize<'de> for CopysetState {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
Ok(CopysetState::from(s.as_str()))
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum LicenseQuotaState {
Ok,
Exceeded,
Unknown(String),
}
impl LicenseQuotaState {
pub fn as_str(&self) -> &str {
match self {
LicenseQuotaState::Ok => "ok",
LicenseQuotaState::Exceeded => "exceeded",
LicenseQuotaState::Unknown(s) => s.as_str(),
}
}
pub fn is_known(&self) -> bool {
!matches!(self, LicenseQuotaState::Unknown(_))
}
}
impl std::fmt::Display for LicenseQuotaState {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(self.as_str())
}
}
impl From<&str> for LicenseQuotaState {
fn from(s: &str) -> Self {
match s {
"ok" => LicenseQuotaState::Ok,
"exceeded" => LicenseQuotaState::Exceeded,
other => LicenseQuotaState::Unknown(other.to_string()),
}
}
}
impl Serialize for LicenseQuotaState {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl<'de> Deserialize<'de> for LicenseQuotaState {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
Ok(LicenseQuotaState::from(s.as_str()))
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum LicenseStatus {
Valid,
Expiring,
Grace,
ExpiredAccess,
Expired,
Unknown(String),
}
impl LicenseStatus {
pub fn as_str(&self) -> &str {
match self {
LicenseStatus::Valid => "valid",
LicenseStatus::Expiring => "expiring",
LicenseStatus::Grace => "grace",
LicenseStatus::ExpiredAccess => "expired_access",
LicenseStatus::Expired => "expired",
LicenseStatus::Unknown(s) => s.as_str(),
}
}
pub fn is_known(&self) -> bool {
!matches!(self, LicenseStatus::Unknown(_))
}
}
impl std::fmt::Display for LicenseStatus {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(self.as_str())
}
}
impl From<&str> for LicenseStatus {
fn from(s: &str) -> Self {
match s {
"valid" => LicenseStatus::Valid,
"expiring" => LicenseStatus::Expiring,
"grace" => LicenseStatus::Grace,
"expired_access" => LicenseStatus::ExpiredAccess,
"expired" => LicenseStatus::Expired,
other => LicenseStatus::Unknown(other.to_string()),
}
}
}
impl Serialize for LicenseStatus {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
serializer.serialize_str(self.as_str())
}
}
impl<'de> Deserialize<'de> for LicenseStatus {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
Ok(LicenseStatus::from(s.as_str()))
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Account {
pub id: i64,
pub name: String,
pub description: String,
#[serde(rename = "iconUrl", skip_serializing_if = "Option::is_none")]
pub icon_url: Option<String>,
#[serde(rename = "providerInfo", skip_serializing_if = "Option::is_none")]
pub provider_info: Option<serde_json::Value>,
#[serde(rename = "liveVolume")]
pub live_volume: i64,
#[serde(rename = "totalVolume")]
pub total_volume: i64,
#[serde(rename = "quotaLimit")]
pub quota_limit: i64,
#[serde(rename = "quotaExcessPct")]
pub quota_excess_pct: i32,
#[serde(rename = "isActive")]
pub is_active: bool,
pub locked: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub retention: Option<RetentionPolicy>,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
pub id: i64,
#[serde(rename = "accountId")]
pub account_id: i64,
pub username: String,
pub email: String,
pub name: String,
#[serde(rename = "isActive")]
pub is_active: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Region {
pub id: i64,
#[serde(rename = "exportId")]
pub export_id: String,
#[serde(rename = "accountId")]
pub account_id: i64,
pub name: String,
#[serde(rename = "liveVolume")]
pub live_volume: i64,
#[serde(rename = "totalVolume")]
pub total_volume: i64,
#[serde(rename = "isActive")]
pub is_active: bool,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MetadataCluster {
pub id: i64,
#[serde(rename = "exportId")]
pub export_id: String,
#[serde(rename = "regionId")]
pub region_id: i64,
pub name: String,
#[serde(rename = "defaultCluster")]
pub default_cluster: bool,
#[serde(rename = "isReady")]
pub is_ready: bool,
#[serde(rename = "isActive")]
pub is_active: bool,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Storage {
pub id: i64,
pub uuid: String,
pub account: Ref,
#[serde(rename = "regionInfo")]
pub region_info: Ref,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "storageType")]
pub storage_type: String,
#[serde(rename = "providerType")]
pub provider_type: String,
pub endpoint: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub region: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bucket: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub base: Option<String>,
#[serde(rename = "physicalFingerprint", skip_serializing_if = "Option::is_none")]
pub physical_fingerprint: Option<String>,
#[serde(rename = "blockRegion", skip_serializing_if = "Option::is_none")]
pub block_region: Option<String>,
#[serde(rename = "blockSize", skip_serializing_if = "Option::is_none")]
pub block_size: Option<i32>,
#[serde(rename = "directAccess", skip_serializing_if = "Option::is_none")]
pub direct_access: Option<bool>,
#[serde(rename = "isActive")]
pub is_active: bool,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BlockVolume {
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "clusterName", skip_serializing_if = "Option::is_none")]
pub cluster_name: Option<String>,
#[serde(rename = "clusterUuid", skip_serializing_if = "Option::is_none")]
pub cluster_uuid: Option<String>,
#[serde(rename = "shardId")]
pub shard_id: i64,
#[serde(rename = "regionClusterId")]
pub region_cluster_id: i64,
#[serde(rename = "clusterReady")]
pub cluster_ready: bool,
#[serde(rename = "isActive")]
pub is_active: bool,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
#[serde(rename = "memberState", skip_serializing_if = "Option::is_none")]
pub member_state: Option<String>,
#[serde(rename = "copysetId", skip_serializing_if = "Option::is_none")]
pub copyset_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UpdateConfigResult {
pub id: String,
#[serde(rename = "targetK")]
pub target_k: i32,
#[serde(rename = "activeCopysetCountBefore")]
pub active_copyset_count_before: i32,
#[serde(rename = "copysetsNeeded")]
pub copysets_needed: i32,
#[serde(rename = "copysetsFormed")]
pub copysets_formed: i32,
#[serde(rename = "activeCopysetCountAfter")]
pub active_copyset_count_after: i32,
pub partial: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub reason: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Copyset {
pub id: String,
#[serde(rename = "storageId")]
pub storage_id: String,
pub state: CopysetState,
#[serde(rename = "memberA", skip_serializing_if = "Option::is_none")]
pub member_a: Option<String>,
#[serde(rename = "memberB", skip_serializing_if = "Option::is_none")]
pub member_b: Option<String>,
#[serde(rename = "placementGroupA", skip_serializing_if = "Option::is_none")]
pub placement_group_a: Option<i64>,
#[serde(rename = "placementGroupB", skip_serializing_if = "Option::is_none")]
pub placement_group_b: Option<i64>,
#[serde(rename = "drainStartedAt", skip_serializing_if = "Option::is_none")]
pub drain_started_at: Option<String>,
#[serde(rename = "syncedAt", skip_serializing_if = "Option::is_none")]
pub synced_at: Option<String>,
#[serde(rename = "retiredAt", skip_serializing_if = "Option::is_none")]
pub retired_at: Option<String>,
#[serde(rename = "pendingSyncJobsA", skip_serializing_if = "Option::is_none")]
pub pending_sync_jobs_a: Option<i32>,
#[serde(rename = "pendingSyncJobsB", skip_serializing_if = "Option::is_none")]
pub pending_sync_jobs_b: Option<i32>,
#[serde(rename = "drainInitiatedBy", skip_serializing_if = "Option::is_none")]
pub drain_initiated_by: Option<i64>,
pub tags: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PoolMember {
pub id: String,
pub name: String,
#[serde(rename = "regionId")]
pub region_id: i64,
#[serde(rename = "regionClusterId")]
pub region_cluster_id: i64,
#[serde(rename = "memberState")]
pub member_state: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Volume {
pub id: i64,
pub account: Ref,
pub storage: Ref,
pub region: Ref,
#[serde(rename = "metadataCluster", skip_serializing_if = "Option::is_none")]
pub metadata_cluster: Option<Ref>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "volumeType")]
pub volume_type: String,
#[serde(rename = "storageType", skip_serializing_if = "Option::is_none")]
pub storage_type: Option<String>,
pub encryption: bool,
#[serde(rename = "quotaLimit")]
pub quota_limit: i64,
#[serde(rename = "liveVolume")]
pub live_volume: i64,
#[serde(rename = "totalVolume")]
pub total_volume: i64,
#[serde(rename = "pendingVolume")]
pub pending_volume: i64,
#[serde(rename = "liveInactiveVolume")]
pub live_inactive_volume: i64,
pub locked: bool,
pub retention: VolumeRetentionPolicy,
pub versioning: VolumeVersioningPolicy,
pub compaction: String,
#[serde(rename = "isActive")]
pub is_active: bool,
#[serde(rename = "isCleanupMetaEnabled")]
pub is_cleanup_meta_enabled: bool,
#[serde(rename = "isCleanupStorageEnabled")]
pub is_cleanup_storage_enabled: bool,
#[serde(rename = "isCleanupVaultEnabled")]
pub is_cleanup_vault_enabled: bool,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VolumeBlockPlacementConfig {
pub id: i64,
#[serde(rename = "targetCopysetCount")]
pub target_copyset_count: i32,
#[serde(rename = "currentEpoch")]
pub current_epoch: i64,
#[serde(rename = "copysetIds")]
pub copyset_ids: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VolumeBlockPlacementResizeResult {
pub id: i64,
#[serde(rename = "targetCopysetCount")]
pub target_copyset_count: i32,
#[serde(rename = "copysetCountBefore")]
pub copyset_count_before: i32,
#[serde(rename = "copysetsAdded")]
pub copysets_added: i32,
#[serde(rename = "copysetsRemoved")]
pub copysets_removed: i32,
#[serde(rename = "copysetCountAfter")]
pub copyset_count_after: i32,
pub epoch: i64,
pub partial: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub reason: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Fork {
pub fid: i32,
pub name: String,
#[serde(rename = "parentFid")]
pub parent_fid: i32,
#[serde(rename = "parentName")]
pub parent_name: String,
#[serde(rename = "snapshotTs")]
pub snapshot_ts: i64,
#[serde(rename = "createdBy", skip_serializing_if = "Option::is_none")]
pub created_by: Option<i64>,
#[serde(rename = "createdAt")]
pub created_at: i64,
#[serde(rename = "childrenCount")]
pub children_count: i32,
#[serde(skip_serializing_if = "Option::is_none")]
pub inactive: Option<bool>,
#[serde(rename = "inactiveAt", skip_serializing_if = "Option::is_none")]
pub inactive_at: Option<i64>,
pub status: String,
pub size: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ForkTreeEntry {
pub inode: i64,
pub name: String,
pub kind: String,
pub size: i64,
pub mtime: i64,
pub ctime: i64,
#[serde(rename = "creatorId", skip_serializing_if = "Option::is_none")]
pub creator_id: Option<i64>,
#[serde(rename = "updaterId", skip_serializing_if = "Option::is_none")]
pub updater_id: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ForkEntryDetail {
pub inode: i64,
pub path: String,
pub name: String,
pub kind: String,
pub size: i64,
pub mtime: i64,
pub ctime: i64,
pub generation: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub owner: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mode: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub xattrs: Option<serde_json::Value>,
#[serde(rename = "creatorId", skip_serializing_if = "Option::is_none")]
pub creator_id: Option<i64>,
#[serde(rename = "updaterId", skip_serializing_if = "Option::is_none")]
pub updater_id: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ForkEntryVersion {
pub generation: i64,
pub size: i64,
pub mtime: i64,
#[serde(rename = "updaterId", skip_serializing_if = "Option::is_none")]
pub updater_id: Option<i64>,
#[serde(rename = "contentHash", skip_serializing_if = "Option::is_none")]
pub content_hash: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ForkTreeMatch {
pub path: String,
pub inode: i64,
pub kind: String,
pub size: i64,
pub mtime: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AuditLog {
pub id: i64,
pub title: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub subject: Option<String>,
pub success: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<serde_json::Value>,
#[serde(rename = "createdBy", skip_serializing_if = "Option::is_none")]
pub created_by: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub node: Option<String>,
#[serde(rename = "accountId", skip_serializing_if = "Option::is_none")]
pub account_id: Option<i64>,
#[serde(rename = "regionId", skip_serializing_if = "Option::is_none")]
pub region_id: Option<i64>,
#[serde(rename = "metadataClusterId", skip_serializing_if = "Option::is_none")]
pub metadata_cluster_id: Option<i64>,
#[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(rename = "updatedAt", skip_serializing_if = "Option::is_none")]
pub updated_at: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ServiceNode {
pub id: i64,
#[serde(rename = "regionId")]
pub region_id: i64,
#[serde(rename = "metadataClusterId", skip_serializing_if = "Option::is_none")]
pub metadata_cluster_id: Option<i64>,
#[serde(rename = "serviceType")]
pub service_type: String,
#[serde(rename = "nodeId")]
pub node_id: String,
#[serde(rename = "advertiseAddr")]
pub advertise_addr: String,
#[serde(rename = "rpcAddr", skip_serializing_if = "Option::is_none")]
pub rpc_addr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<serde_json::Value>,
#[serde(rename = "metricsEndpoint", skip_serializing_if = "Option::is_none")]
pub metrics_endpoint: Option<String>,
#[serde(rename = "instanceId", skip_serializing_if = "Option::is_none")]
pub instance_id: Option<String>,
#[serde(rename = "instanceInfo", skip_serializing_if = "Option::is_none")]
pub instance_info: Option<serde_json::Value>,
pub status: String,
#[serde(rename = "lastHeartbeat", skip_serializing_if = "Option::is_none")]
pub last_heartbeat: Option<i64>,
#[serde(rename = "isActive")]
pub is_active: bool,
#[serde(rename = "memUsage", skip_serializing_if = "Option::is_none")]
pub mem_usage: Option<f64>,
#[serde(rename = "sysLoad", skip_serializing_if = "Option::is_none")]
pub sys_load: Option<i64>,
#[serde(rename = "binaryVersion", skip_serializing_if = "Option::is_none")]
pub binary_version: Option<i32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ClientSession {
pub id: i64,
pub account: Ref,
pub region: Ref,
#[serde(rename = "metadataCluster", skip_serializing_if = "Option::is_none")]
pub metadata_cluster: Option<Ref>,
pub volume: VolumeRef,
#[serde(skip_serializing_if = "Option::is_none")]
pub user: Option<Ref>,
#[serde(rename = "clientType")]
pub client_type: String,
#[serde(rename = "osName")]
pub os_name: String,
#[serde(rename = "osVersion", skip_serializing_if = "Option::is_none")]
pub os_version: Option<String>,
#[serde(rename = "appVersion", skip_serializing_if = "Option::is_none")]
pub app_version: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hostname: Option<String>,
#[serde(rename = "ipAddr")]
pub ip_addr: String,
#[serde(rename = "mountMode", skip_serializing_if = "Option::is_none")]
pub mount_mode: Option<String>,
#[serde(rename = "mountPath", skip_serializing_if = "Option::is_none")]
pub mount_path: Option<String>,
#[serde(rename = "forkName", skip_serializing_if = "Option::is_none")]
pub fork_name: Option<String>,
#[serde(rename = "isTemporaryFork")]
pub is_temporary_fork: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metrics: Option<serde_json::Value>,
pub status: ClientSessionStatus,
#[serde(rename = "lastHeartbeat", skip_serializing_if = "Option::is_none")]
pub last_heartbeat: Option<i64>,
#[serde(rename = "connectedAt", skip_serializing_if = "Option::is_none")]
pub connected_at: Option<i64>,
#[serde(rename = "disconnectedAt", skip_serializing_if = "Option::is_none")]
pub disconnected_at: Option<i64>,
#[serde(rename = "isActive")]
pub is_active: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SessionSummary {
#[serde(rename = "byStatus")]
pub by_status: Vec<SessionSummaryStatusEntry>,
#[serde(rename = "byPlatform")]
pub by_platform: Vec<SessionSummaryFacet>,
#[serde(rename = "byOsName")]
pub by_os_name: Vec<SessionSummaryFacet>,
#[serde(rename = "regionCount")]
pub region_count: i64,
#[serde(rename = "volumeCount")]
pub volume_count: i64,
#[serde(rename = "hostCount")]
pub host_count: i64,
#[serde(rename = "degradedCount")]
pub degraded_count: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DiscoverMetaResponse {
#[serde(rename = "regionId")]
pub region_id: i64,
pub region: String,
pub endpoints: Vec<DiscoverEndpoint>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MetricsTarget {
pub targets: Vec<String>,
pub labels: serde_json::Value,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MetricsTokenResponse {
pub token: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DashboardStats {
#[serde(rename = "userCount")]
pub user_count: i64,
#[serde(rename = "volumeCount")]
pub volume_count: i64,
#[serde(rename = "regionCount")]
pub region_count: i64,
#[serde(rename = "storageCount")]
pub storage_count: i64,
#[serde(rename = "totalVolumeUsed")]
pub total_volume_used: i64,
#[serde(rename = "totalQuotaLimit")]
pub total_quota_limit: i64,
#[serde(rename = "activeSessionCount")]
pub active_session_count: i64,
#[serde(rename = "regionBreakdown")]
pub region_breakdown: Vec<RegionVolumeMetrics>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LicenseDetails {
#[serde(rename = "licenseId")]
pub license_id: String,
pub licensee: String,
pub contact: String,
#[serde(rename = "licenseType")]
pub license_type: String,
#[serde(rename = "issuedAt")]
pub issued_at: String,
#[serde(rename = "expiresAt")]
pub expires_at: String,
#[serde(rename = "gracePeriodDays")]
pub grace_period_days: i64,
#[serde(rename = "expiredAccessDays")]
pub expired_access_days: i64,
#[serde(rename = "maxNodes")]
pub max_nodes: i64,
#[serde(rename = "maxVolumes")]
pub max_volumes: i64,
#[serde(rename = "maxUsers")]
pub max_users: i64,
#[serde(rename = "maxAccounts")]
pub max_accounts: i64,
#[serde(rename = "maxRegions")]
pub max_regions: i64,
#[serde(rename = "maxStorageBytes")]
pub max_storage_bytes: i64,
pub status: LicenseStatus,
#[serde(rename = "daysRemaining")]
pub days_remaining: i64,
#[serde(rename = "graceEndsAt")]
pub grace_ends_at: String,
#[serde(rename = "graceDaysLeft")]
pub grace_days_left: i64,
#[serde(rename = "expiredAccessEndsAt")]
pub expired_access_ends_at: String,
#[serde(rename = "expiredAccessDaysLeft")]
pub expired_access_days_left: i64,
pub quota: LicenseQuota,
#[serde(skip_serializing_if = "Option::is_none")]
pub distribution: Option<String>,
#[serde(rename = "distributionRef", skip_serializing_if = "Option::is_none")]
pub distribution_ref: Option<Vec<String>>,
#[serde(rename = "unlimitedStorage", skip_serializing_if = "Option::is_none")]
pub unlimited_storage: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LicenseTerms {
pub terms: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LicenseLoadResult {
pub loaded: i64,
pub ignored: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LicenseList {
pub items: Vec<LicenseRecord>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ServiceAlert {
pub id: i64,
#[serde(rename = "alertId")]
pub alert_id: String,
pub source: String,
#[serde(rename = "nodeId")]
pub node_id: String,
pub severity: i64,
pub category: String,
pub title: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub region: Option<Ref>,
#[serde(skip_serializing_if = "Option::is_none")]
pub account: Option<Ref>,
#[serde(rename = "eventTime")]
pub event_time: String,
#[serde(rename = "resolvedAt", skip_serializing_if = "Option::is_none")]
pub resolved_at: Option<String>,
#[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AlertCountResponse {
pub active: i64,
pub recent: i64,
#[serde(rename = "infoCount")]
pub info_count: i64,
#[serde(rename = "warningCount")]
pub warning_count: i64,
#[serde(rename = "criticalCount")]
pub critical_count: i64,
#[serde(rename = "asOf")]
pub as_of: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RegionAlert {
pub id: i64,
#[serde(rename = "alertId")]
pub alert_id: String,
pub source: String,
#[serde(rename = "nodeId")]
pub node_id: String,
#[serde(rename = "metadataClusterId", skip_serializing_if = "Option::is_none")]
pub metadata_cluster_id: Option<i64>,
pub severity: i64,
pub category: String,
pub title: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "eventTime")]
pub event_time: String,
#[serde(rename = "resolvedAt", skip_serializing_if = "Option::is_none")]
pub resolved_at: Option<String>,
#[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GCWorkerEvent {
pub id: i64,
#[serde(rename = "nodeId")]
pub node_id: String,
#[serde(rename = "metadataClusterId", skip_serializing_if = "Option::is_none")]
pub metadata_cluster_id: Option<i64>,
pub goal: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub sid: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub subject: Option<String>,
pub ops: serde_json::Value,
#[serde(rename = "durationMs")]
pub duration_ms: i64,
#[serde(rename = "eventTime")]
pub event_time: String,
#[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GCWorkerEventHistogramResponse {
pub buckets: Vec<GCWorkerEventBucket>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GCWorkerEventGoalsResponse {
pub goals: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BackfillFailure {
#[serde(rename = "shardId")]
pub shard_id: i64,
pub error: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BlockMember {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "regionClusterId")]
pub region_cluster_id: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CompatibleStorage {
pub id: i64,
pub uuid: String,
pub name: String,
#[serde(rename = "storageType")]
pub storage_type: String,
#[serde(rename = "providerType")]
pub provider_type: String,
pub volumes: Vec<CompatibleVolume>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CompatibleVolume {
pub id: String,
pub name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DashboardUser {
pub id: String,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
pub role: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub username: Option<String>,
#[serde(rename = "accountId", skip_serializing_if = "Option::is_none")]
pub account_id: Option<i64>,
#[serde(rename = "userId", skip_serializing_if = "Option::is_none")]
pub user_id: Option<i64>,
#[serde(rename = "volumeId", skip_serializing_if = "Option::is_none")]
pub volume_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exp: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DiscoverEndpoint {
#[serde(rename = "nodeId")]
pub node_id: String,
pub addr: String,
pub status: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GCWorkerEventBucket {
#[serde(rename = "bucketStart")]
pub bucket_start: String,
pub goal: String,
pub count: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LicenseQuota {
pub state: LicenseQuotaState,
#[serde(rename = "liveVolume")]
pub live_volume: i64,
#[serde(rename = "totalVolume")]
pub total_volume: i64,
pub generation: i64,
#[serde(rename = "lastTransitionAtMs")]
pub last_transition_at_ms: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LicenseRecord {
pub key: String,
pub licensee: String,
pub status: LicenseStatus,
#[serde(rename = "issuedAt")]
pub issued_at: String,
#[serde(rename = "expiresAt")]
pub expires_at: String,
#[serde(rename = "maxStorageBytes")]
pub max_storage_bytes: i64,
#[serde(rename = "insertedAt")]
pub inserted_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MoveVolumeFailure {
#[serde(rename = "volumeId")]
pub volume_id: String,
pub error: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NodeStatsSample {
#[serde(rename = "timestampMs")]
pub timestamp_ms: i64,
#[serde(rename = "intervalMs")]
pub interval_ms: i64,
#[serde(rename = "loadAvg1")]
pub load_avg1: f64,
#[serde(rename = "loadAvg5")]
pub load_avg5: f64,
#[serde(rename = "loadAvg15")]
pub load_avg15: f64,
#[serde(rename = "memUsage")]
pub mem_usage: f64,
#[serde(rename = "readIops")]
pub read_iops: f64,
#[serde(rename = "writeIops")]
pub write_iops: f64,
#[serde(rename = "netRxBytesPerSec")]
pub net_rx_bytes_per_sec: f64,
#[serde(rename = "netTxBytesPerSec")]
pub net_tx_bytes_per_sec: f64,
#[serde(rename = "processCount")]
pub process_count: i64,
#[serde(rename = "diskUsedBytes", skip_serializing_if = "Option::is_none")]
pub disk_used_bytes: Option<i64>,
#[serde(rename = "diskTotalBytes", skip_serializing_if = "Option::is_none")]
pub disk_total_bytes: Option<i64>,
#[serde(rename = "dbLatency1mUs", skip_serializing_if = "Option::is_none")]
pub db_latency1m_us: Option<f64>,
#[serde(rename = "dbLatency5mUs", skip_serializing_if = "Option::is_none")]
pub db_latency5m_us: Option<f64>,
#[serde(rename = "dbLatency15mUs", skip_serializing_if = "Option::is_none")]
pub db_latency15m_us: Option<f64>,
#[serde(rename = "dbQueriesPerSec", skip_serializing_if = "Option::is_none")]
pub db_queries_per_sec: Option<f64>,
#[serde(rename = "dbConnsInUse", skip_serializing_if = "Option::is_none")]
pub db_conns_in_use: Option<i64>,
#[serde(rename = "dbConnsMax", skip_serializing_if = "Option::is_none")]
pub db_conns_max: Option<i64>,
#[serde(rename = "dbConnsIdle", skip_serializing_if = "Option::is_none")]
pub db_conns_idle: Option<i64>,
#[serde(rename = "dbConnsFree", skip_serializing_if = "Option::is_none")]
pub db_conns_free: Option<i64>,
#[serde(rename = "dbConnsInUse1m", skip_serializing_if = "Option::is_none")]
pub db_conns_in_use1m: Option<f64>,
#[serde(rename = "dbConnsInUse5m", skip_serializing_if = "Option::is_none")]
pub db_conns_in_use5m: Option<f64>,
#[serde(rename = "dbConnsInUse15m", skip_serializing_if = "Option::is_none")]
pub db_conns_in_use15m: Option<f64>,
#[serde(rename = "dbPingAvgUs", skip_serializing_if = "Option::is_none")]
pub db_ping_avg_us: Option<f64>,
#[serde(rename = "dbPingMinUs", skip_serializing_if = "Option::is_none")]
pub db_ping_min_us: Option<f64>,
#[serde(rename = "dbPingMaxUs", skip_serializing_if = "Option::is_none")]
pub db_ping_max_us: Option<f64>,
#[serde(rename = "dbPingStdDevUs", skip_serializing_if = "Option::is_none")]
pub db_ping_std_dev_us: Option<f64>,
#[serde(rename = "dbDispatchOutstanding", skip_serializing_if = "Option::is_none")]
pub db_dispatch_outstanding: Option<i64>,
#[serde(rename = "dbDispatchLaneCap", skip_serializing_if = "Option::is_none")]
pub db_dispatch_lane_cap: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Ref {
pub id: i64,
pub name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RegionVolumeMetrics {
#[serde(rename = "regionId")]
pub region_id: i64,
#[serde(rename = "regionName")]
pub region_name: String,
#[serde(rename = "volumeCount")]
pub volume_count: i64,
#[serde(rename = "totalVolumeUsed")]
pub total_volume_used: i64,
#[serde(rename = "totalQuotaLimit")]
pub total_quota_limit: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RetentionPolicy {
#[serde(rename = "clientSessionDays", skip_serializing_if = "Option::is_none")]
pub client_session_days: Option<i32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SessionSummaryFacet {
pub label: String,
pub count: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SessionSummaryStatusEntry {
#[serde(rename = "clientType")]
pub client_type: String,
pub status: String,
pub count: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UserLite {
pub id: i64,
pub username: String,
pub name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VolumeApiKey {
#[serde(rename = "apiKey")]
pub api_key: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(rename = "lastUsedAt", skip_serializing_if = "Option::is_none")]
pub last_used_at: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VolumeRef {
pub id: i64,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VolumeRetentionPolicy {
#[serde(rename = "dataDays", skip_serializing_if = "Option::is_none")]
pub data_days: Option<i32>,
#[serde(rename = "graceDays", skip_serializing_if = "Option::is_none")]
pub grace_days: Option<i32>,
#[serde(rename = "forkGraceDays", skip_serializing_if = "Option::is_none")]
pub fork_grace_days: Option<i32>,
#[serde(rename = "eventLogDays", skip_serializing_if = "Option::is_none")]
pub event_log_days: Option<i32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VolumeSizePoint {
#[serde(rename = "bucketEnd")]
pub bucket_end: String,
#[serde(rename = "liveVolume")]
pub live_volume: i64,
#[serde(rename = "totalVolume")]
pub total_volume: i64,
#[serde(rename = "pendingVolume")]
pub pending_volume: i64,
#[serde(rename = "liveInactiveVolume")]
pub live_inactive_volume: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VolumeVersioningPolicy {
#[serde(rename = "contentWindowSeconds", skip_serializing_if = "Option::is_none")]
pub content_window_seconds: Option<i32>,
}
#[derive(Debug, Clone, Serialize)]
pub struct CreateAccountRequest {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "iconUrl", skip_serializing_if = "Option::is_none")]
pub icon_url: Option<String>,
#[serde(rename = "providerInfo", skip_serializing_if = "Option::is_none")]
pub provider_info: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize)]
pub struct EditAccountRequest {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "iconUrl", skip_serializing_if = "Option::is_none")]
pub icon_url: Option<String>,
#[serde(rename = "providerInfo", skip_serializing_if = "Option::is_none")]
pub provider_info: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub retention: Option<RetentionPolicy>,
}
#[derive(Debug, Clone, Serialize)]
pub struct UpdateAccountQuotaRequest {
#[serde(rename = "quotaLimit")]
pub quota_limit: i64,
#[serde(rename = "quotaExcessPct", skip_serializing_if = "Option::is_none")]
pub quota_excess_pct: Option<i32>,
}
#[derive(Debug, Clone, Default)]
pub struct AccountListOptions {
pub is_active: Option<bool>,
pub page: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Serialize)]
pub struct AddUserRequest {
#[serde(rename = "accountId")]
pub account_id: i64,
pub username: String,
pub email: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "providerInfo", skip_serializing_if = "Option::is_none")]
pub provider_info: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize)]
pub struct BulkUserRequest {
pub ids: Vec<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BulkUserResponse {
pub users: Vec<UserLite>,
}
#[derive(Debug, Clone, Serialize)]
pub struct EditUserRequest {
pub username: String,
pub email: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "providerInfo", skip_serializing_if = "Option::is_none")]
pub provider_info: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Default)]
pub struct UserListOptions {
pub account_id: i64,
pub search: Option<String>,
pub is_active: Option<bool>,
pub page: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Serialize)]
pub struct CreateRegionRequest {
#[serde(rename = "accountId")]
pub account_id: i64,
pub name: String,
}
#[derive(Debug, Clone, Serialize)]
pub struct EditRegionRequest {
#[serde(rename = "accountId")]
pub account_id: i64,
pub name: String,
}
#[derive(Debug, Clone, Default)]
pub struct RegionListOptions {
pub account_id: i64,
pub is_active: Option<bool>,
pub page: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Default)]
pub struct ClusterListOptions {
pub account_id: i64,
pub region_id: Option<i64>,
pub is_active: Option<bool>,
pub page: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Serialize)]
pub struct CreateMetadataClusterRequest {
pub name: String,
}
#[derive(Debug, Clone, Serialize)]
pub struct EditMetadataClusterRequest {
pub name: String,
}
#[derive(Debug, Clone, Serialize)]
pub struct SetMetadataClusterReadyRequest {
pub ready: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SetReadyMetadataClusterResponse {
pub id: i64,
pub ready: bool,
}
#[derive(Debug, Clone, Default)]
pub struct MetadataClusterListOptions {
pub is_active: Option<bool>,
pub page: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Serialize)]
pub struct CreateStorageRequest {
#[serde(rename = "accountId")]
pub account_id: i64,
#[serde(rename = "regionId")]
pub region_id: i64,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "storageType")]
pub storage_type: String,
#[serde(rename = "providerType")]
pub provider_type: String,
pub endpoint: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub region: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bucket: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub base: Option<String>,
#[serde(rename = "blockRegion", skip_serializing_if = "Option::is_none")]
pub block_region: Option<String>,
#[serde(rename = "blockSize", skip_serializing_if = "Option::is_none")]
pub block_size: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub members: Option<Vec<BlockMember>>,
#[serde(rename = "accessKey", skip_serializing_if = "Option::is_none")]
pub access_key: Option<String>,
#[serde(rename = "secretKey", skip_serializing_if = "Option::is_none")]
pub secret_key: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CreateStorageResponse {
pub id: i64,
#[serde(rename = "blockVolumeIds", skip_serializing_if = "Option::is_none")]
pub block_volume_ids: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize)]
pub struct EditStorageRequest {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub endpoint: Option<String>,
#[serde(rename = "accessKey", skip_serializing_if = "Option::is_none")]
pub access_key: Option<String>,
#[serde(rename = "secretKey", skip_serializing_if = "Option::is_none")]
pub secret_key: Option<String>,
#[serde(rename = "directAccess", skip_serializing_if = "Option::is_none")]
pub direct_access: Option<bool>,
}
#[derive(Debug, Clone, Serialize)]
pub struct TestStorageNewBucketRequest {
pub endpoint: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub region: Option<String>,
pub bucket: String,
#[serde(rename = "accessKey")]
pub access_key: String,
#[serde(rename = "secretKey")]
pub secret_key: String,
#[serde(rename = "providerType", skip_serializing_if = "Option::is_none")]
pub provider_type: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TestNewBucketStorageResponse {
#[serde(rename = "bucketExists")]
pub bucket_exists: bool,
pub list: bool,
pub write: bool,
pub read: bool,
pub delete: bool,
pub multipart: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TestStorageBucketStorageResponse {
#[serde(rename = "bucketExists")]
pub bucket_exists: bool,
pub list: bool,
pub write: bool,
pub read: bool,
pub delete: bool,
pub multipart: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ListCompatibleStorageResponse {
pub storages: Vec<CompatibleStorage>,
}
#[derive(Debug, Clone, Serialize)]
pub struct MoveStorageVolumesRequest {
#[serde(rename = "volumeIds")]
pub volume_ids: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MoveVolumesStorageResponse {
pub moved: Vec<String>,
pub failures: Vec<MoveVolumeFailure>,
}
#[derive(Debug, Clone, Serialize)]
pub struct UpdateStorageConfigRequest {
pub k: i32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GetConfigStorageResponse {
pub id: String,
pub k: i32,
#[serde(rename = "algorithmVersion")]
pub algorithm_version: i32,
#[serde(rename = "epochPolicyVersion")]
pub epoch_policy_version: i32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DrainCopysetStorageResponse {
pub id: String,
pub state: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CancelDrainStorageResponse {
pub id: String,
pub state: String,
}
#[derive(Debug, Clone, Serialize)]
pub struct UpdateStorageTagsRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize)]
pub struct RegisterStorageMemberRequest {
#[serde(rename = "regionClusterId")]
pub region_cluster_id: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RemoveMemberStorageResponse {
pub id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BackfillFingerprintsStorageResponse {
pub scanned: i32,
pub updated: i32,
pub failures: Vec<BackfillFailure>,
#[serde(rename = "hasMore")]
pub has_more: bool,
}
#[derive(Debug, Clone, Default)]
pub struct StorageListOptions {
pub account_id: i64,
pub search: Option<String>,
pub region_id: Option<i64>,
pub storage_type: Option<String>,
pub provider_type: Option<String>,
pub is_active: Option<bool>,
pub direct_access: Option<bool>,
pub page: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Serialize)]
pub struct CreateVolumeRequest {
#[serde(rename = "accountId")]
pub account_id: i64,
#[serde(rename = "storageId")]
pub storage_id: i64,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "volumeType")]
pub volume_type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub encryption: Option<bool>,
#[serde(rename = "encryptionKey", skip_serializing_if = "Option::is_none")]
pub encryption_key: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub retention: Option<VolumeRetentionPolicy>,
#[serde(skip_serializing_if = "Option::is_none")]
pub versioning: Option<VolumeVersioningPolicy>,
#[serde(skip_serializing_if = "Option::is_none")]
pub compaction: Option<String>,
#[serde(rename = "quotaLimit", skip_serializing_if = "Option::is_none")]
pub quota_limit: Option<i64>,
#[serde(rename = "metadataClusterId", skip_serializing_if = "Option::is_none")]
pub metadata_cluster_id: Option<i64>,
#[serde(rename = "metadataClusterUuid", skip_serializing_if = "Option::is_none")]
pub metadata_cluster_uuid: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CreateVolumeResponse {
pub id: i64,
#[serde(rename = "encryptionKey", skip_serializing_if = "Option::is_none")]
pub encryption_key: Option<String>,
}
#[derive(Debug, Clone, Serialize)]
pub struct EditVolumeRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub retention: Option<VolumeRetentionPolicy>,
#[serde(skip_serializing_if = "Option::is_none")]
pub versioning: Option<VolumeVersioningPolicy>,
#[serde(skip_serializing_if = "Option::is_none")]
pub compaction: Option<String>,
}
#[derive(Debug, Clone, Serialize)]
pub struct MoveVolumeClusterRequest {
#[serde(rename = "targetClusterId", skip_serializing_if = "Option::is_none")]
pub target_cluster_id: Option<i64>,
#[serde(rename = "targetClusterUuid", skip_serializing_if = "Option::is_none")]
pub target_cluster_uuid: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MoveClusterVolumeResponse {
pub id: i64,
#[serde(rename = "sourceClusterId")]
pub source_cluster_id: i64,
#[serde(rename = "targetClusterId")]
pub target_cluster_id: i64,
#[serde(rename = "handoverUntil")]
pub handover_until: i64,
}
#[derive(Debug, Clone, Serialize)]
pub struct DeactivateVolumeRequest {
#[serde(rename = "isCleanupMetaEnabled", skip_serializing_if = "Option::is_none")]
pub is_cleanup_meta_enabled: Option<bool>,
#[serde(rename = "isCleanupStorageEnabled", skip_serializing_if = "Option::is_none")]
pub is_cleanup_storage_enabled: Option<bool>,
#[serde(rename = "isCleanupVaultEnabled", skip_serializing_if = "Option::is_none")]
pub is_cleanup_vault_enabled: Option<bool>,
}
#[derive(Debug, Clone, Serialize)]
pub struct GenerateVolumeAPIKeysRequest {
#[serde(rename = "userId")]
pub user_id: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GenerateAPIKeysVolumeResponse {
#[serde(rename = "apiKey")]
pub api_key: String,
#[serde(rename = "apiSecret")]
pub api_secret: String,
#[serde(rename = "evictedApiKeys", skip_serializing_if = "Option::is_none")]
pub evicted_api_keys: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ListAPIKeysVolumeResponse {
pub keys: Vec<VolumeApiKey>,
}
#[derive(Debug, Clone, Serialize)]
pub struct RevokeVolumeAPIKeyRequest {
#[serde(rename = "apiKey")]
pub api_key: String,
}
#[derive(Debug, Clone, Serialize)]
pub struct RevokeVolumeAPIKeysByUserRequest {
#[serde(rename = "userId")]
pub user_id: i64,
}
#[derive(Debug, Clone, Serialize)]
pub struct GenerateVolumeSttKeyRequest {
#[serde(rename = "userId", skip_serializing_if = "Option::is_none")]
pub user_id: Option<i64>,
#[serde(rename = "expirySeconds")]
pub expiry_seconds: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GenerateSttKeyVolumeResponse {
#[serde(rename = "apiKey")]
pub api_key: String,
#[serde(rename = "apiSecret")]
pub api_secret: String,
#[serde(rename = "expiresAt")]
pub expires_at: String,
}
#[derive(Debug, Clone, Serialize)]
pub struct UpdateVolumeQuotaRequest {
#[serde(rename = "quotaLimit")]
pub quota_limit: i64,
}
#[derive(Debug, Clone, Serialize)]
pub struct UpdateVolumeCopysetConfigRequest {
#[serde(rename = "targetCopysetCount")]
pub target_copyset_count: i32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StatsVolumeResponse {
#[serde(rename = "volumeId")]
pub volume_id: String,
#[serde(rename = "liveVolume")]
pub live_volume: i64,
#[serde(rename = "totalVolume")]
pub total_volume: i64,
#[serde(rename = "pendingVolume")]
pub pending_volume: i64,
#[serde(rename = "liveInactiveVolume")]
pub live_inactive_volume: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SizeHistoryVolumeResponse {
pub points: Vec<VolumeSizePoint>,
}
#[derive(Debug, Clone, Serialize)]
pub struct CreateVolumeForkRequest {
pub name: String,
#[serde(rename = "parentName", skip_serializing_if = "Option::is_none")]
pub parent_name: Option<String>,
#[serde(rename = "asOf", skip_serializing_if = "Option::is_none")]
pub as_of: Option<i64>,
#[serde(rename = "volumeType", skip_serializing_if = "Option::is_none")]
pub volume_type: Option<String>,
}
#[derive(Debug, Clone, Serialize)]
pub struct DeleteVolumeForkRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub force: Option<bool>,
#[serde(rename = "volumeType", skip_serializing_if = "Option::is_none")]
pub volume_type: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DeleteForkVolumeResponse {
#[serde(rename = "inactivatedFids")]
pub inactivated_fids: Vec<i32>,
}
#[derive(Debug, Clone, Serialize)]
pub struct RestoreVolumeForkRequest {
#[serde(rename = "volumeType", skip_serializing_if = "Option::is_none")]
pub volume_type: Option<String>,
}
#[derive(Debug, Clone, Default)]
pub struct VolumeListOptions {
pub account_id: i64,
pub region_id: Option<i64>,
pub metadata_cluster_id: Option<i64>,
pub storage_id: Option<i64>,
pub volume_type: Option<String>,
pub locked: Option<bool>,
pub is_active: Option<bool>,
pub page: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Default)]
pub struct VolumeForkTreeListOptions {
pub path: Option<String>,
pub as_of: Option<i64>,
pub cursor: Option<i64>,
pub limit: Option<i64>,
pub sort: Option<String>,
pub kind: Option<String>,
}
#[derive(Debug, Clone, Default)]
pub struct VolumeForkEntryListOptions {
pub path: Option<String>,
pub cursor: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Default)]
pub struct VolumeForkSearchListOptions {
pub q: Option<String>,
pub path: Option<String>,
pub as_of: Option<i64>,
pub exact: Option<bool>,
pub cursor: Option<i64>,
pub limit: Option<i64>,
pub kind: Option<String>,
}
#[derive(Debug, Clone, Default)]
pub struct AuditLogListOptions {
pub account_id: i64,
pub region_id: Option<i64>,
pub metadata_cluster_id: Option<i64>,
pub cursor: Option<i64>,
pub limit: Option<i64>,
pub subject: Option<String>,
pub created_by: Option<String>,
}
#[derive(Debug, Clone, Default)]
pub struct RegionAuditLogListOptions {
pub metadata_cluster_id: Option<i64>,
pub cursor: Option<i64>,
pub limit: Option<i64>,
pub subject: Option<String>,
pub node: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StatsHistoryServiceNodeResponse {
#[serde(rename = "intervalMs")]
pub interval_ms: i64,
pub samples: Vec<NodeStatsSample>,
}
#[derive(Debug, Clone, Default)]
pub struct ClientSessionListOptions {
pub account_id: i64,
pub region_id: Option<i64>,
pub metadata_cluster_id: Option<i64>,
pub volume_id: Option<i64>,
pub user_id: Option<i64>,
pub client_type: Option<String>,
pub status: Option<ClientSessionStatus>,
pub is_active: Option<bool>,
pub os_name: Option<String>,
pub platform: Option<String>,
pub search: Option<String>,
pub page: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Serialize)]
pub struct GenerateMetricTokenRequest {
#[serde(rename = "expirySeconds")]
pub expiry_seconds: i64,
}
#[derive(Debug, Clone, Serialize)]
pub struct LoadLicenseRequest {
pub payloads: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResolveAlertResponse {
#[serde(rename = "alertId")]
pub alert_id: String,
}
#[derive(Debug, Clone, Default)]
pub struct AlertListOptions {
pub active: Option<bool>,
pub account_id: Option<i64>,
pub region_id: Option<i64>,
pub severity: Option<i64>,
pub category: Option<String>,
pub since: Option<String>,
pub page: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResolveRegionAlertResponse {
#[serde(rename = "alertId")]
pub alert_id: String,
}
#[derive(Debug, Clone, Default)]
pub struct RegionAlertListOptions {
pub active: Option<bool>,
pub severity: Option<i64>,
pub category: Option<String>,
pub node_id: Option<String>,
pub metadata_cluster_id: Option<i64>,
pub since: Option<String>,
pub page: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Default)]
pub struct GCWorkerEventListOptions {
pub node_id: Option<String>,
pub goal: Option<String>,
pub sid: Option<i64>,
pub metadata_cluster_id: Option<i64>,
pub since: Option<String>,
pub page: Option<i64>,
pub limit: Option<i64>,
}