From 6ec62dc50f5f8becaa92ed739ccd68b2a791177e Mon Sep 17 00:00:00 2001 From: Tait Hoyem Date: Sat, 1 Oct 2022 13:03:29 -0600 Subject: [PATCH] add --- src/requests.rs | 28 ++++++++++++++++++++++++++++ src/responses.rs | 22 ++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/src/requests.rs b/src/requests.rs index ac0b1b3..29ba2e4 100644 --- a/src/requests.rs +++ b/src/requests.rs @@ -17,12 +17,14 @@ use crate::{ EmailUserListResponse, EmailUserAddResponse, EmailUserRemoveResponse, + EmailUserSetPasswordResponse, MonitorCheckListResponse, MonitorCheckTypesResponse, MonitorContactListResponse, VmStartResponse, VmStopResponse, VmRebootResponse, + VmIpListResponse, }, types::{ LNError, @@ -35,9 +37,11 @@ use parse_display_derive::Display; use ureq::post; use serde::{ Serialize, + Serializer, Deserialize, de::DeserializeOwned, }; +use serde_with::serde_as; use hmac::Hmac; use sha2::Sha512; @@ -65,6 +69,7 @@ pub enum EmailUserSubArgs { List(EmailUserListRequest), Add(EmailUserAddRequest), Remove(EmailUserRemoveRequest), + SetPassword(EmailUserSetPasswordRequest), } #[derive(Serialize, Deserialize, Debug, clap::Subcommand)] @@ -95,6 +100,12 @@ pub enum RecordSubArgs { List(RecordListRequest), } +#[derive(Serialize, Deserialize, Debug, clap::Subcommand)] +#[serde(untagged)] +pub enum VmIpSubArgs { + List(VmIpListRequest), +} + #[derive(Serialize, Deserialize, Debug, clap::Subcommand)] #[serde(untagged)] pub enum VmSubArgs { @@ -106,6 +117,9 @@ pub enum VmSubArgs { Stop(VmStopRequest), /// Turn on a VM, given an ID. Start(VmStartRequest), + /// IP subcommands + #[clap(subcommand)] + Ip(VmIpSubArgs), } #[derive(Serialize, Deserialize, Debug, clap::Subcommand)] #[serde(untagged)] @@ -225,6 +239,7 @@ impl Args { Self::Vm(VmSubArgs::List(vm_list)) => print_req(vm_list)?, Self::Vm(VmSubArgs::Start(vm_to_start)) => print_req(vm_to_start)?, Self::Vm(VmSubArgs::Stop(vm_to_stop)) => print_req(vm_to_stop)?, + Self::Vm(VmSubArgs::Ip(VmIpSubArgs::List(vm_ips))) => print_req(vm_ips)?, Self::Vm(VmSubArgs::Reboot(vm_to_reboot)) => print_req(vm_to_reboot)?, Self::Volume(VolumeSubArgs::List(vol_list)) => print_req(vol_list)?, Self::Image(ImageSubArgs::List(image_list)) => print_req(image_list)?, @@ -238,6 +253,7 @@ impl Args { Self::Email(EmailSubArgs::User(EmailUserSubArgs::List(email_user_list))) => print_req(email_user_list)?, Self::Email(EmailSubArgs::User(EmailUserSubArgs::Add(email_add_user_req))) => print_req(email_add_user_req)?, Self::Email(EmailSubArgs::User(EmailUserSubArgs::Remove(email_del_req))) => print_req(email_del_req)?, + Self::Email(EmailSubArgs::User(EmailUserSubArgs::SetPassword(email_user_set_password))) => print_req(email_user_set_password)?, } Ok(()) } @@ -337,3 +353,15 @@ pub struct EmailUserRemoveRequest { domain_id: i32, user_id: i32, } + +#[lunanode_request(response="EmailUserSetPasswordResponse", endpoint="email/user-set-password/")] +pub struct EmailUserSetPasswordRequest { + domain_id: i32, + user_id: i32, + password: String, +} + +#[lunanode_request(response="VmIpListResponse", endpoint="vm/iplist/")] +pub struct VmIpListRequest { + vm_id: String, +} diff --git a/src/responses.rs b/src/responses.rs index 5b87453..4b5a953 100644 --- a/src/responses.rs +++ b/src/responses.rs @@ -618,3 +618,25 @@ pub struct EmailUserAddResponse {} #[lunanode_response] pub struct EmailUserRemoveResponse {} + +#[lunanode_response] +pub struct EmailUserSetPasswordResponse {} + +#[serde_as] +#[derive(Serialize, Deserialize, Debug)] +pub struct VmIp { + floating: std::net::Ipv4Addr, + /// A network UUID + network: String, + #[serde_as(as="DisplayFromStr")] + network_id: i32, + /// Port UUID? What is this? + port: String, + /// This is an ip/subnet pair, so it could/should be stricter. + subnet: String, +} + +#[lunanode_response] +pub struct VmIpListResponse { + ips: std::collections::HashMap, +}