diff --git a/src/requests.rs b/src/requests.rs index 95601e6..7b1b490 100644 --- a/src/requests.rs +++ b/src/requests.rs @@ -8,6 +8,8 @@ use crate::{ FloatingIpListResponse, NetworkListResponse, ZoneListResponse, + ZoneAddResponse, + ZoneRemoveResponse, RecordListResponse, DynListResponse, DynAddResponse, @@ -62,7 +64,9 @@ pub enum DynSubArgs { #[derive(Serialize, Deserialize, Debug, clap::Subcommand)] pub enum ZoneSubArgs { + Add(ZoneAddRequest), List(ZoneListRequest), + Remove(ZoneRemoveRequest), } #[derive(Serialize, Deserialize, Debug, clap::Subcommand)] @@ -250,6 +254,8 @@ impl Args { Self::Image(ImageSubArgs::List(image_list)) => print_req(image_list)?, Self::Billing(BillingSubArgs::Credit(billing_credit)) => print_req(billing_credit)?, Self::Zone(ZoneSubArgs::List(zone_list)) => print_req(zone_list)?, + Self::Zone(ZoneSubArgs::Add(zone_add_req)) => print_req(zone_add_req)?, + Self::Zone(ZoneSubArgs::Remove(zone_rem_req)) => print_req(zone_rem_req)?, Self::Dyn(DynSubArgs::Add(dyn_add_req)) => print_req(dyn_add_req)?, Self::Dyn(DynSubArgs::List(dyn_list)) => print_req(dyn_list)?, Self::Dyn(DynSubArgs::Remove(dyn_del)) => print_req(dyn_del)?, @@ -385,3 +391,16 @@ pub struct DynAddRequest { /// An ip address to associate with the FQDN. This type should be stricter: TODO. ip: String, } + +#[lunanode_request(response="ZoneAddResponse", endpoint="dns2/zone-add/")] +pub struct ZoneAddRequest { + /// A new zone, a FQDN. + name: String, + /// The default time-to-live (TTL) for the records in this zone. + ttl: i32, +} + +#[lunanode_request(response="ZoneRemoveResponse", endpoint="dns2/zone-remove/")] +pub struct ZoneRemoveRequest { + zone_id: i32, +} diff --git a/src/responses.rs b/src/responses.rs index b4a8749..ea588f7 100644 --- a/src/responses.rs +++ b/src/responses.rs @@ -646,3 +646,9 @@ pub struct DynRemoveResponse {} #[lunanode_response] pub struct DynAddResponse {} + +#[lunanode_response] +pub struct ZoneAddResponse {} + +#[lunanode_response] +pub struct ZoneRemoveResponse {}