#![allow(non_snake_case, dead_code)]
use serde::{ Deserialize, Serialize };
use serde_json::{Map, Value};
use serde_repr::{Serialize_repr, Deserialize_repr};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ActionResult<T> {
pub Status: bool,
pub Reason: String,
pub Result: T,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AMPVersion {
pub Major: i32,
pub Minor: i32,
pub Build: i32,
pub Revision: i32,
pub MajorRevision: i32,
pub MinorRevision: i32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Branding {
pub DisplayBranding: bool,
pub PageTitle: String,
pub CompanyName: String,
pub WelcomeMessage: String,
pub BrandingMessage: String,
pub ShortBrandingMessage: String,
pub URL: String,
pub SupportURL: String,
pub SupportText: String,
pub SubmitTicketURL: String,
pub LogoURL: String,
pub BackgroundURL: String,
pub SplashFrameURL: String,
pub ForgotPasswordURL: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConsoleEntry {
pub Timestamp: String,
pub Source: String,
pub SourceId: String,
pub Type: String,
pub Contents: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CPUInfo {
pub Sockets: i32,
pub Cores: i32,
pub Threads: i32,
pub Vendor: String,
pub ModelName: String,
pub TotalCores: i32,
pub TotalThreads: i32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EndpointInfo {
pub DisplayName: String,
pub Endpoint: String,
pub Uri: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IADSInstance {
pub Id: i32,
pub InstanceId: UUID,
pub FriendlyName: String,
pub Description: String,
pub Disabled: bool,
pub IsRemote: bool,
pub Platform: PlatformInfo,
pub Datastores: Vec<InstanceDatastore>,
pub CreatesInContainers: bool,
pub State: State,
pub StateReason: String,
pub CanCreate: bool,
pub LastUpdated: String,
pub AvailableInstances: Vec<Instance>,
pub AvailableIPs: Vec<String>,
pub URL: String,
pub Tags: Vec<String>,
pub TagNames: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Instance {
pub InstanceID: UUID,
pub TargetID: UUID,
pub InstanceName: String,
pub FriendlyName: String,
pub Description: String,
pub Module: String,
pub ModuleDisplayName: String,
pub AMPVersion: AMPVersion,
pub IsHTTPS: bool,
pub IP: String,
pub Port: i32,
pub Daemon: bool,
pub DaemonAutostart: bool,
pub ExcludeFromFirewall: bool,
pub Running: bool,
pub AppState: State,
pub Tags: Vec<String>,
pub DiskUsageMB: i32,
pub ReleaseStream: i32,
pub ManagementMode: i32,
pub IsContainerInstance: bool,
pub ContainerMemoryMB: i32,
pub ContainerMemoryPolicy: i32,
pub ContainerCPUs: f32,
pub SpecificDockerImage: String,
pub Metrics: Map<String, Value>, pub ApplicationEndpoints: Vec<EndpointInfo>,
pub DeploymentArgs: Map<String, Value>, #[serde(default)]
#[serde(with = "option_string_serde")]
pub DisplayImageSource: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct InstanceDatastore {
pub Id: i32,
pub FriendlyName: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LicenceInfo {
pub LicenceKey: UUID,
pub Grade: UUID,
pub GradeName: String,
pub Product: UUID,
pub ProductName: String,
pub Expires: String,
pub Usage: i32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LoginResult {
pub success: bool,
pub permissions: Vec<String>,
pub sessionID: String,
pub rememberMeToken: String,
pub userInfo: UserInfo,
pub resultReason: String,
pub result: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Message {
pub Id: UUID,
pub Expired: bool,
pub Source: String,
pub Message: String,
pub AgeMinutes: i32,
}
pub mod option_string_serde {
use serde::{Deserialize, Deserializer, Serializer};
pub fn serialize<S>(string: &Option<String>, serializer: S) -> core::result::Result<S::Ok, S::Error>
where
S: Serializer,
{
match string {
Some(string) => serializer.serialize_str(string),
None => serializer.serialize_none(),
}
}
pub fn deserialize<'de, D>(deserializer: D) -> core::result::Result<Option<String>, D::Error>
where
D: Deserializer<'de>,
{
let string: Option<String> = Option::deserialize(deserializer)?;
Ok(string)
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Metric {
pub RawValue: i32,
pub MaxValue: i32,
pub Percent: f64,
pub Units: String,
#[serde(default)]
#[serde(with = "option_string_serde")]
pub Color: Option<String>,
#[serde(default)]
#[serde(with = "option_string_serde")]
pub Color2: Option<String>,
#[serde(default)]
#[serde(with = "option_string_serde")]
pub Color3: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ModuleInfo {
pub Name: String,
pub Author: String,
pub AppName: String,
pub SupportsSleep: bool,
pub LoadedPlugins: Vec<String>,
pub AMPVersion: AMPVersion,
pub AMPBuild: String,
pub ToolsVersion: AMPVersion,
pub APIVersion: AMPVersion,
pub VersionCodename: String,
pub Timestamp: String,
pub BuildSpec: String,
pub Branding: Branding,
pub Analytics: bool,
pub FeatureSet: Vec<String>,
pub InstanceId: UUID,
pub InstanceName: String,
pub FriendlyName: String,
pub EndpointURI: String,
pub PrimaryEndpoint: String,
pub ModuleName: String,
pub IsRemoteInstance: bool,
pub DisplayBaseURI: String,
pub RequiresFullLoad: bool,
pub AllowRememberMe: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PlatformInfo {
pub CPUInfo: CPUInfo,
pub InstalledRAMMB: i32,
pub OS: i32,
pub PlatformName: String,
pub SystemType: i32,
pub Virtualization: i32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RemoteTargetInfo {
pub IPAddressList: Vec<String>,
pub PlatformInfo: PlatformInfo,
pub Datastores: Vec<InstanceDatastore>,
pub DeploysInContainers: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RunningTask {
pub IsPrimaryTask: bool,
pub StartTime: String,
pub Id: UUID,
pub Name: String,
pub Description: String,
pub HideFromUI: bool,
pub FastDismiss: bool,
pub LastUpdatePushed: String,
pub ProgressPercent: f64,
pub IsCancellable: bool,
pub Origin: String,
pub IsIndeterminate: bool,
pub State: i32,
pub Status: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SettingSpec {
pub ReadOnly: bool,
pub Name: String,
pub Description: String,
pub Category: String,
pub CurrentValue: String,
pub ValType: String,
pub EnumValues: Vec<String>,
pub EnumValuesAreDeferred: bool,
pub Node: String,
pub InputType: String,
pub SelectionSource: String,
pub IsProvisionSpec: bool,
pub ReadOnlyProvision: bool,
pub Actions: Vec<String>,
pub Keywords: Vec<String>,
pub AlwaysAllowRead: bool,
pub Tag: String,
pub MaxLength: i32,
pub Placeholder: String,
pub Suffix: String,
pub Meta: String,
pub RequiresRestart: bool,
}
#[derive(Debug, Clone, Serialize_repr, Deserialize_repr)]
#[repr(i16)]
pub enum State {
Undefined = -1,
Stopped = 0,
PreStart = 5,
Configuring = 7,
Starting = 10,
Ready = 20,
Restarting = 30,
Stopping = 40,
PreparingForSleep = 45,
Sleeping = 50,
Waiting = 60,
Installing = 70,
Updating = 75,
AwaitingUserInput = 80,
Failed = 100,
Suspended = 200,
Maintainence = 250,
Indeterminate = 999,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Status {
pub State: State,
pub Uptime: String,
pub Metrics: Map<String, Value>, }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UpdateInfo {
pub UpdateAvailable: bool,
pub Version: String,
pub Build: String,
pub ReleaseNotesURL: String,
pub ToolsVersion: String,
pub PatchOnly: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Updates {
pub Status: Status,
pub ConsoleEntries: Vec<ConsoleEntry>,
pub Messages: Vec<Message>,
pub Tasks: Vec<String>,
pub Ports: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UserInfo {
pub ID: UUID,
pub Username: String,
pub EmailAddress: String,
pub IsTwoFactorEnabled: bool,
pub Disabled: bool,
pub LastLogin: String,
pub GravatarHash: String,
pub IsLDAPUser: bool,
}
pub type URL = String;
pub type UUID = String;