5
0
mirror of git://git.proxmox.com/git/proxmox-backup.git synced 2025-01-08 21:18:07 +03:00

fix non-camel-case enums

This should have never been started to begin with...
This commit is contained in:
Wolfgang Bumiller 2023-01-05 10:57:11 +01:00
parent 79de842ca3
commit a2055c38fe
15 changed files with 217 additions and 230 deletions

View File

@ -1,3 +1,5 @@
use std::fmt;
use serde::{Deserialize, Serialize};
use proxmox_schema::*;
@ -59,42 +61,64 @@ pub enum NetworkConfigMethod {
#[api()]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
#[allow(non_camel_case_types)]
#[repr(u8)]
/// Linux Bond Mode
pub enum LinuxBondMode {
/// Round-robin policy
balance_rr = 0,
BalanceRr = 0,
/// Active-backup policy
active_backup = 1,
ActiveBackup = 1,
/// XOR policy
balance_xor = 2,
BalanceXor = 2,
/// Broadcast policy
broadcast = 3,
Broadcast = 3,
/// IEEE 802.3ad Dynamic link aggregation
#[serde(rename = "802.3ad")]
ieee802_3ad = 4,
Ieee802_3ad = 4,
/// Adaptive transmit load balancing
balance_tlb = 5,
BalanceTlb = 5,
/// Adaptive load balancing
balance_alb = 6,
BalanceAlb = 6,
}
impl fmt::Display for LinuxBondMode {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.write_str(match self {
LinuxBondMode::BalanceRr => "balance-rr",
LinuxBondMode::ActiveBackup => "active-backup",
LinuxBondMode::BalanceXor => "balance-xor",
LinuxBondMode::Broadcast => "broadcast",
LinuxBondMode::Ieee802_3ad => "802.3ad",
LinuxBondMode::BalanceTlb => "balance-tlb",
LinuxBondMode::BalanceAlb => "balance-alb",
})
}
}
#[api()]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
#[allow(non_camel_case_types)]
#[repr(u8)]
/// Bond Transmit Hash Policy for LACP (802.3ad)
pub enum BondXmitHashPolicy {
/// Layer 2
layer2 = 0,
Layer2 = 0,
/// Layer 2+3
#[serde(rename = "layer2+3")]
layer2_3 = 1,
Layer2_3 = 1,
/// Layer 3+4
#[serde(rename = "layer3+4")]
layer3_4 = 2,
Layer3_4 = 2,
}
impl fmt::Display for BondXmitHashPolicy {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.write_str(match self {
BondXmitHashPolicy::Layer2 => "layer2",
BondXmitHashPolicy::Layer2_3 => "layer2+3",
BondXmitHashPolicy::Layer3_4 => "layer3+4",
})
}
}
#[api()]

View File

@ -36,31 +36,11 @@ pub fn bond_mode_from_str(s: &str) -> Result<LinuxBondMode, Error> {
.map_err(|_: value::Error| format_err!("invalid bond_mode '{}'", s))
}
pub fn bond_mode_to_str(mode: LinuxBondMode) -> &'static str {
match mode {
LinuxBondMode::balance_rr => "balance-rr",
LinuxBondMode::active_backup => "active-backup",
LinuxBondMode::balance_xor => "balance-xor",
LinuxBondMode::broadcast => "broadcast",
LinuxBondMode::ieee802_3ad => "802.3ad",
LinuxBondMode::balance_tlb => "balance-tlb",
LinuxBondMode::balance_alb => "balance-alb",
}
}
pub fn bond_xmit_hash_policy_from_str(s: &str) -> Result<BondXmitHashPolicy, Error> {
BondXmitHashPolicy::deserialize(s.into_deserializer())
.map_err(|_: value::Error| format_err!("invalid bond_xmit_hash_policy '{}'", s))
}
pub fn bond_xmit_hash_policy_to_str(policy: &BondXmitHashPolicy) -> &'static str {
match policy {
BondXmitHashPolicy::layer2 => "layer2",
BondXmitHashPolicy::layer2_3 => "layer2+3",
BondXmitHashPolicy::layer3_4 => "layer3+4",
}
}
// Write attributes not depending on address family
fn write_iface_attributes(iface: &Interface, w: &mut dyn Write) -> Result<(), Error> {
static EMPTY_LIST: Vec<String> = Vec::new();
@ -78,21 +58,17 @@ fn write_iface_attributes(iface: &Interface, w: &mut dyn Write) -> Result<(), Er
}
}
NetworkInterfaceType::Bond => {
let mode = iface.bond_mode.unwrap_or(LinuxBondMode::balance_rr);
writeln!(w, "\tbond-mode {}", bond_mode_to_str(mode))?;
let mode = iface.bond_mode.unwrap_or(LinuxBondMode::BalanceRr);
writeln!(w, "\tbond-mode {mode}")?;
if let Some(primary) = &iface.bond_primary {
if mode == LinuxBondMode::active_backup {
if mode == LinuxBondMode::ActiveBackup {
writeln!(w, "\tbond-primary {}", primary)?;
}
}
if let Some(xmit_policy) = &iface.bond_xmit_hash_policy {
if mode == LinuxBondMode::ieee802_3ad || mode == LinuxBondMode::balance_xor {
writeln!(
w,
"\tbond_xmit_hash_policy {}",
bond_xmit_hash_policy_to_str(xmit_policy)
)?;
if mode == LinuxBondMode::Ieee802_3ad || mode == LinuxBondMode::BalanceXor {
writeln!(w, "\tbond_xmit_hash_policy {xmit_policy}")?;
}
}

View File

@ -189,16 +189,15 @@ pub fn read_user(userid: Userid, rpcenv: &mut dyn RpcEnvironment) -> Result<User
#[api()]
#[derive(Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
#[allow(non_camel_case_types)]
pub enum DeletableProperty {
/// Delete the comment property.
comment,
Comment,
/// Delete the firstname property.
firstname,
Firstname,
/// Delete the lastname property.
lastname,
Lastname,
/// Delete the email property.
email,
Email,
}
#[api(
@ -261,10 +260,10 @@ pub fn update_user(
if let Some(delete) = delete {
for delete_prop in delete {
match delete_prop {
DeletableProperty::comment => data.comment = None,
DeletableProperty::firstname => data.firstname = None,
DeletableProperty::lastname => data.lastname = None,
DeletableProperty::email => data.email = None,
DeletableProperty::Comment => data.comment = None,
DeletableProperty::Firstname => data.firstname = None,
DeletableProperty::Lastname => data.lastname = None,
DeletableProperty::Email => data.email = None,
}
}
}

View File

@ -146,21 +146,20 @@ pub fn read_openid_realm(
#[api()]
#[derive(Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
#[allow(non_camel_case_types)]
/// Deletable property name
pub enum DeletableProperty {
/// Delete the client key.
client_key,
ClientKey,
/// Delete the comment property.
comment,
Comment,
/// Delete the autocreate property
autocreate,
Autocreate,
/// Delete the scopes property
scopes,
Scopes,
/// Delete the prompt property
prompt,
Prompt,
/// Delete the acr_values property
acr_values,
AcrValues,
}
#[api(
@ -215,22 +214,22 @@ pub fn update_openid_realm(
if let Some(delete) = delete {
for delete_prop in delete {
match delete_prop {
DeletableProperty::client_key => {
DeletableProperty::ClientKey => {
config.client_key = None;
}
DeletableProperty::comment => {
DeletableProperty::Comment => {
config.comment = None;
}
DeletableProperty::autocreate => {
DeletableProperty::Autocreate => {
config.autocreate = None;
}
DeletableProperty::scopes => {
DeletableProperty::Scopes => {
config.scopes = None;
}
DeletableProperty::prompt => {
DeletableProperty::Prompt => {
config.prompt = None;
}
DeletableProperty::acr_values => {
DeletableProperty::AcrValues => {
config.acr_values = None;
}
}

View File

@ -633,13 +633,12 @@ pub fn delete_plugin(id: String) -> Result<(), Error> {
#[api()]
#[derive(Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
#[allow(non_camel_case_types)]
/// Deletable property name
pub enum DeletableProperty {
/// Delete the disable property
disable,
Disable,
/// Delete the validation-delay property
validation_delay,
ValidationDelay,
}
#[api(
@ -711,10 +710,10 @@ pub fn update_plugin(
if let Some(delete) = delete {
for delete_prop in delete {
match delete_prop {
DeletableProperty::validation_delay => {
DeletableProperty::ValidationDelay => {
plugin.core.validation_delay = None;
}
DeletableProperty::disable => {
DeletableProperty::Disable => {
plugin.core.disable = None;
}
}

View File

@ -133,12 +133,11 @@ pub fn list_changers(
}
#[api()]
#[derive(Serialize, Deserialize)]
#[allow(non_camel_case_types)]
#[serde(rename_all = "kebab-case")]
/// Deletable property name
pub enum DeletableProperty {
/// Delete export-slots.
export_slots,
ExportSlots,
}
#[api(
@ -192,7 +191,7 @@ pub fn update_changer(
if let Some(delete) = delete {
for delete_prop in delete {
match delete_prop {
DeletableProperty::export_slots => {
DeletableProperty::ExportSlots => {
data.export_slots = None;
}
}

View File

@ -165,37 +165,36 @@ pub fn read_datastore(
#[api()]
#[derive(Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
#[allow(non_camel_case_types)]
/// Deletable property name
pub enum DeletableProperty {
/// Delete the comment property.
comment,
Comment,
/// Delete the garbage collection schedule.
gc_schedule,
GcSchedule,
/// Delete the prune job schedule.
prune_schedule,
PruneSchedule,
/// Delete the keep-last property
keep_last,
KeepLast,
/// Delete the keep-hourly property
keep_hourly,
KeepHourly,
/// Delete the keep-daily property
keep_daily,
KeepDaily,
/// Delete the keep-weekly property
keep_weekly,
KeepWeekly,
/// Delete the keep-monthly property
keep_monthly,
KeepMonthly,
/// Delete the keep-yearly property
keep_yearly,
KeepYearly,
/// Delete the verify-new property
verify_new,
VerifyNew,
/// Delete the notify-user property
notify_user,
NotifyUser,
/// Delete the notify property
notify,
Notify,
/// Delete the tuning property
tuning,
Tuning,
/// Delete the maintenance-mode property
maintenance_mode,
MaintenanceMode,
}
#[api(
@ -249,46 +248,46 @@ pub fn update_datastore(
if let Some(delete) = delete {
for delete_prop in delete {
match delete_prop {
DeletableProperty::comment => {
DeletableProperty::Comment => {
data.comment = None;
}
DeletableProperty::gc_schedule => {
DeletableProperty::GcSchedule => {
data.gc_schedule = None;
}
DeletableProperty::prune_schedule => {
DeletableProperty::PruneSchedule => {
data.prune_schedule = None;
}
DeletableProperty::keep_last => {
DeletableProperty::KeepLast => {
data.keep.keep_last = None;
}
DeletableProperty::keep_hourly => {
DeletableProperty::KeepHourly => {
data.keep.keep_hourly = None;
}
DeletableProperty::keep_daily => {
DeletableProperty::KeepDaily => {
data.keep.keep_daily = None;
}
DeletableProperty::keep_weekly => {
DeletableProperty::KeepWeekly => {
data.keep.keep_weekly = None;
}
DeletableProperty::keep_monthly => {
DeletableProperty::KeepMonthly => {
data.keep.keep_monthly = None;
}
DeletableProperty::keep_yearly => {
DeletableProperty::KeepYearly => {
data.keep.keep_yearly = None;
}
DeletableProperty::verify_new => {
DeletableProperty::VerifyNew => {
data.verify_new = None;
}
DeletableProperty::notify => {
DeletableProperty::Notify => {
data.notify = None;
}
DeletableProperty::notify_user => {
DeletableProperty::NotifyUser => {
data.notify_user = None;
}
DeletableProperty::tuning => {
DeletableProperty::Tuning => {
data.tuning = None;
}
DeletableProperty::maintenance_mode => {
DeletableProperty::MaintenanceMode => {
data.maintenance_mode = None;
}
}

View File

@ -134,14 +134,13 @@ pub fn list_drives(
#[api()]
#[derive(Serialize, Deserialize)]
#[allow(non_camel_case_types)]
#[serde(rename_all = "kebab-case")]
/// Deletable property name
pub enum DeletableProperty {
/// Delete the changer property.
changer,
Changer,
/// Delete the changer-drivenum property.
changer_drivenum,
ChangerDrivenum,
}
#[api(
@ -195,11 +194,11 @@ pub fn update_drive(
if let Some(delete) = delete {
for delete_prop in delete {
match delete_prop {
DeletableProperty::changer => {
DeletableProperty::Changer => {
data.changer = None;
data.changer_drivenum = None;
}
DeletableProperty::changer_drivenum => {
DeletableProperty::ChangerDrivenum => {
data.changer_drivenum = None;
}
}

View File

@ -103,19 +103,18 @@ pub fn get_config(name: String) -> Result<MediaPoolConfig, Error> {
#[api()]
#[derive(Serialize, Deserialize)]
#[allow(non_camel_case_types)]
/// Deletable property name
pub enum DeletableProperty {
/// Delete media set allocation policy.
allocation,
Allocation,
/// Delete pool retention policy
retention,
Retention,
/// Delete media set naming template
template,
Template,
/// Delete encryption fingerprint
encrypt,
Encrypt,
/// Delete comment
comment,
Comment,
}
#[api(
@ -158,19 +157,19 @@ pub fn update_pool(
if let Some(delete) = delete {
for delete_prop in delete {
match delete_prop {
DeletableProperty::allocation => {
DeletableProperty::Allocation => {
data.allocation = None;
}
DeletableProperty::retention => {
DeletableProperty::Retention => {
data.retention = None;
}
DeletableProperty::template => {
DeletableProperty::Template => {
data.template = None;
}
DeletableProperty::encrypt => {
DeletableProperty::Encrypt => {
data.encrypt = None;
}
DeletableProperty::comment => {
DeletableProperty::Comment => {
data.comment = None;
}
}

View File

@ -133,15 +133,14 @@ pub fn read_remote(
#[api()]
#[derive(Serialize, Deserialize)]
#[allow(non_camel_case_types)]
/// Deletable property name
pub enum DeletableProperty {
/// Delete the comment property.
comment,
Comment,
/// Delete the fingerprint property.
fingerprint,
Fingerprint,
/// Delete the port property.
port,
Port,
}
#[api(
@ -200,13 +199,13 @@ pub fn update_remote(
if let Some(delete) = delete {
for delete_prop in delete {
match delete_prop {
DeletableProperty::comment => {
DeletableProperty::Comment => {
data.config.comment = None;
}
DeletableProperty::fingerprint => {
DeletableProperty::Fingerprint => {
data.config.fingerprint = None;
}
DeletableProperty::port => {
DeletableProperty::Port => {
data.config.port = None;
}
}

View File

@ -189,33 +189,32 @@ pub fn read_sync_job(id: String, rpcenv: &mut dyn RpcEnvironment) -> Result<Sync
#[api()]
#[derive(Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
#[allow(non_camel_case_types)]
/// Deletable property name
pub enum DeletableProperty {
/// Delete the owner property.
owner,
Owner,
/// Delete the comment property.
comment,
Comment,
/// Delete the job schedule.
schedule,
Schedule,
/// Delete the remove-vanished flag.
remove_vanished,
RemoveVanished,
/// Delete the group_filter property.
group_filter,
GroupFilter,
/// Delete the rate_in property.
rate_in,
RateIn,
/// Delete the burst_in property.
burst_in,
BurstIn,
/// Delete the rate_out property.
rate_out,
RateOut,
/// Delete the burst_out property.
burst_out,
BurstOut,
/// Delete the ns property,
ns,
Ns,
/// Delete the remote_ns property,
remote_ns,
RemoteNs,
/// Delete the max_depth property,
max_depth,
MaxDepth,
}
#[api(
@ -274,40 +273,40 @@ pub fn update_sync_job(
if let Some(delete) = delete {
for delete_prop in delete {
match delete_prop {
DeletableProperty::owner => {
DeletableProperty::Owner => {
data.owner = None;
}
DeletableProperty::comment => {
DeletableProperty::Comment => {
data.comment = None;
}
DeletableProperty::schedule => {
DeletableProperty::Schedule => {
data.schedule = None;
}
DeletableProperty::remove_vanished => {
DeletableProperty::RemoveVanished => {
data.remove_vanished = None;
}
DeletableProperty::group_filter => {
DeletableProperty::GroupFilter => {
data.group_filter = None;
}
DeletableProperty::rate_in => {
DeletableProperty::RateIn => {
data.limit.rate_in = None;
}
DeletableProperty::rate_out => {
DeletableProperty::RateOut => {
data.limit.rate_out = None;
}
DeletableProperty::burst_in => {
DeletableProperty::BurstIn => {
data.limit.burst_in = None;
}
DeletableProperty::burst_out => {
DeletableProperty::BurstOut => {
data.limit.burst_out = None;
}
DeletableProperty::ns => {
DeletableProperty::Ns => {
data.ns = None;
}
DeletableProperty::remote_ns => {
DeletableProperty::RemoteNs => {
data.remote_ns = None;
}
DeletableProperty::max_depth => {
DeletableProperty::MaxDepth => {
data.max_depth = None;
}
}

View File

@ -101,22 +101,21 @@ pub fn read_traffic_control(
#[api()]
#[derive(Serialize, Deserialize)]
#[allow(non_camel_case_types)]
#[serde(rename_all = "kebab-case")]
/// Deletable property name
pub enum DeletableProperty {
/// Delete the rate_in property.
rate_in,
RateIn,
/// Delete the burst_in property.
burst_in,
BurstIn,
/// Delete the rate_out property.
rate_out,
RateOut,
/// Delete the burst_out property.
burst_out,
BurstOut,
/// Delete the comment property.
comment,
Comment,
/// Delete the timeframe property
timeframe,
Timeframe,
}
// fixme: use TrafficControlUpdater
@ -170,22 +169,22 @@ pub fn update_traffic_control(
if let Some(delete) = delete {
for delete_prop in delete {
match delete_prop {
DeletableProperty::rate_in => {
DeletableProperty::RateIn => {
data.limit.rate_in = None;
}
DeletableProperty::rate_out => {
DeletableProperty::RateOut => {
data.limit.rate_out = None;
}
DeletableProperty::burst_in => {
DeletableProperty::BurstIn => {
data.limit.burst_in = None;
}
DeletableProperty::burst_out => {
DeletableProperty::BurstOut => {
data.limit.burst_out = None;
}
DeletableProperty::comment => {
DeletableProperty::Comment => {
data.comment = None;
}
DeletableProperty::timeframe => {
DeletableProperty::Timeframe => {
data.timeframe = None;
}
}

View File

@ -37,37 +37,36 @@ pub fn get_node_config(rpcenv: &mut dyn RpcEnvironment) -> Result<NodeConfig, Er
#[api()]
#[derive(Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
#[allow(non_camel_case_types)]
/// Deletable property name
pub enum DeletableProperty {
/// Delete the acme property.
acme,
Acme,
/// Delete the acmedomain0 property.
acmedomain0,
Acmedomain0,
/// Delete the acmedomain1 property.
acmedomain1,
Acmedomain1,
/// Delete the acmedomain2 property.
acmedomain2,
Acmedomain2,
/// Delete the acmedomain3 property.
acmedomain3,
Acmedomain3,
/// Delete the acmedomain4 property.
acmedomain4,
Acmedomain4,
/// Delete the http-proxy property.
http_proxy,
HttpProxy,
/// Delete the email-from property.
email_from,
EmailFrom,
/// Delete the ciphers-tls-1.3 property.
#[serde(rename = "ciphers-tls-1.3")]
ciphers_tls_1_3,
CiphersTls1_3,
/// Delete the ciphers-tls-1.2 property.
#[serde(rename = "ciphers-tls-1.2")]
ciphers_tls_1_2,
CiphersTls1_2,
/// Delete the default-lang property.
default_lang,
DefaultLang,
/// Delete any description
description,
Description,
/// Delete the task-log-max-days property
task_log_max_days,
TaskLogMaxDays,
}
#[api(
@ -117,43 +116,43 @@ pub fn update_node_config(
if let Some(delete) = delete {
for delete_prop in delete {
match delete_prop {
DeletableProperty::acme => {
DeletableProperty::Acme => {
config.acme = None;
}
DeletableProperty::acmedomain0 => {
DeletableProperty::Acmedomain0 => {
config.acmedomain0 = None;
}
DeletableProperty::acmedomain1 => {
DeletableProperty::Acmedomain1 => {
config.acmedomain1 = None;
}
DeletableProperty::acmedomain2 => {
DeletableProperty::Acmedomain2 => {
config.acmedomain2 = None;
}
DeletableProperty::acmedomain3 => {
DeletableProperty::Acmedomain3 => {
config.acmedomain3 = None;
}
DeletableProperty::acmedomain4 => {
DeletableProperty::Acmedomain4 => {
config.acmedomain4 = None;
}
DeletableProperty::http_proxy => {
DeletableProperty::HttpProxy => {
config.http_proxy = None;
}
DeletableProperty::email_from => {
DeletableProperty::EmailFrom => {
config.email_from = None;
}
DeletableProperty::ciphers_tls_1_3 => {
DeletableProperty::CiphersTls1_3 => {
config.ciphers_tls_1_3 = None;
}
DeletableProperty::ciphers_tls_1_2 => {
DeletableProperty::CiphersTls1_2 => {
config.ciphers_tls_1_2 = None;
}
DeletableProperty::default_lang => {
DeletableProperty::DefaultLang => {
config.default_lang = None;
}
DeletableProperty::description => {
DeletableProperty::Description => {
config.description = None;
}
DeletableProperty::task_log_max_days => {
DeletableProperty::TaskLogMaxDays => {
config.task_log_max_days = None;
}
}

View File

@ -22,15 +22,14 @@ static RESOLV_CONF_FN: &str = "/etc/resolv.conf";
#[api()]
#[derive(Serialize, Deserialize)]
#[allow(non_camel_case_types)]
/// Deletable property name
pub enum DeletableProperty {
/// Delete first nameserver entry
dns1,
Dns1,
/// Delete second nameserver entry
dns2,
Dns2,
/// Delete third nameserver entry
dns3,
Dns3,
}
pub fn read_etc_resolv_conf() -> Result<Value, Error> {
@ -146,13 +145,13 @@ pub fn update_dns(
for delete_prop in delete {
let config = config.as_object_mut().unwrap();
match delete_prop {
DeletableProperty::dns1 => {
DeletableProperty::Dns1 => {
config.remove("dns1");
}
DeletableProperty::dns2 => {
DeletableProperty::Dns2 => {
config.remove("dns2");
}
DeletableProperty::dns3 => {
DeletableProperty::Dns3 => {
config.remove("dns3");
}
}

View File

@ -356,13 +356,13 @@ pub fn create_interface(
if let Some(mode) = bond_mode {
interface.bond_mode = bond_mode;
if bond_primary.is_some() {
if mode != LinuxBondMode::active_backup {
if mode != LinuxBondMode::ActiveBackup {
bail!("bond-primary is only valid with Active/Backup mode");
}
interface.bond_primary = bond_primary;
}
if bond_xmit_hash_policy.is_some() {
if mode != LinuxBondMode::ieee802_3ad && mode != LinuxBondMode::balance_xor {
if mode != LinuxBondMode::Ieee802_3ad && mode != LinuxBondMode::BalanceXor {
bail!("bond_xmit_hash_policy is only valid with LACP(802.3ad) or balance-xor mode");
}
interface.bond_xmit_hash_policy = bond_xmit_hash_policy;
@ -400,40 +400,39 @@ pub fn create_interface(
#[api()]
#[derive(Serialize, Deserialize)]
#[allow(non_camel_case_types)]
/// Deletable property name
pub enum DeletableProperty {
/// Delete the IPv4 address property.
cidr,
Cidr,
/// Delete the IPv6 address property.
cidr6,
Cidr6,
/// Delete the IPv4 gateway property.
gateway,
Gateway,
/// Delete the IPv6 gateway property.
gateway6,
Gateway6,
/// Delete the whole IPv4 configuration entry.
method,
Method,
/// Delete the whole IPv6 configuration entry.
method6,
Method6,
/// Delete IPv4 comments
comments,
Comments,
/// Delete IPv6 comments
comments6,
Comments6,
/// Delete mtu.
mtu,
Mtu,
/// Delete autostart flag
autostart,
Autostart,
/// Delete bridge ports (set to 'none')
bridge_ports,
BridgePorts,
/// Delete bridge-vlan-aware flag
bridge_vlan_aware,
BridgeVlanAware,
/// Delete bond-slaves (set to 'none')
slaves,
Slaves,
/// Delete bond-primary
#[serde(rename = "bond-primary")]
bond_primary,
BondPrimary,
/// Delete bond transmit hash policy
bond_xmit_hash_policy,
BondXmitHashPolicy,
}
#[api(
@ -595,49 +594,49 @@ pub fn update_interface(
if let Some(delete) = delete {
for delete_prop in delete {
match delete_prop {
DeletableProperty::cidr => {
DeletableProperty::Cidr => {
interface.cidr = None;
}
DeletableProperty::cidr6 => {
DeletableProperty::Cidr6 => {
interface.cidr6 = None;
}
DeletableProperty::gateway => {
DeletableProperty::Gateway => {
interface.gateway = None;
}
DeletableProperty::gateway6 => {
DeletableProperty::Gateway6 => {
interface.gateway6 = None;
}
DeletableProperty::method => {
DeletableProperty::Method => {
interface.method = None;
}
DeletableProperty::method6 => {
DeletableProperty::Method6 => {
interface.method6 = None;
}
DeletableProperty::comments => {
DeletableProperty::Comments => {
interface.comments = None;
}
DeletableProperty::comments6 => {
DeletableProperty::Comments6 => {
interface.comments6 = None;
}
DeletableProperty::mtu => {
DeletableProperty::Mtu => {
interface.mtu = None;
}
DeletableProperty::autostart => {
DeletableProperty::Autostart => {
interface.autostart = false;
}
DeletableProperty::bridge_ports => {
DeletableProperty::BridgePorts => {
set_bridge_ports(interface, Vec::new())?;
}
DeletableProperty::bridge_vlan_aware => {
DeletableProperty::BridgeVlanAware => {
interface.bridge_vlan_aware = None;
}
DeletableProperty::slaves => {
DeletableProperty::Slaves => {
set_bond_slaves(interface, Vec::new())?;
}
DeletableProperty::bond_primary => {
DeletableProperty::BondPrimary => {
interface.bond_primary = None;
}
DeletableProperty::bond_xmit_hash_policy => interface.bond_xmit_hash_policy = None,
DeletableProperty::BondXmitHashPolicy => interface.bond_xmit_hash_policy = None,
}
}
}
@ -668,13 +667,13 @@ pub fn update_interface(
if let Some(mode) = bond_mode {
interface.bond_mode = bond_mode;
if bond_primary.is_some() {
if mode != LinuxBondMode::active_backup {
if mode != LinuxBondMode::ActiveBackup {
bail!("bond-primary is only valid with Active/Backup mode");
}
interface.bond_primary = bond_primary;
}
if bond_xmit_hash_policy.is_some() {
if mode != LinuxBondMode::ieee802_3ad && mode != LinuxBondMode::balance_xor {
if mode != LinuxBondMode::Ieee802_3ad && mode != LinuxBondMode::BalanceXor {
bail!("bond_xmit_hash_policy is only valid with LACP(802.3ad) or balance-xor mode");
}
interface.bond_xmit_hash_policy = bond_xmit_hash_policy;