RFC: schema: make enums static

I don't see a reason to allow these to be dynamically
modifiable.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
This commit is contained in:
Wolfgang Bumiller 2019-05-23 11:27:45 +02:00
parent aa1b2e04fe
commit cc84a830c5
4 changed files with 7 additions and 7 deletions

View File

@ -33,7 +33,7 @@ pub fn api_method_upgrade_backup() -> ApiAsyncMethod {
ObjectSchema::new("Upgraded to backup protocol.") ObjectSchema::new("Upgraded to backup protocol.")
.required("store", StringSchema::new("Datastore name.")) .required("store", StringSchema::new("Datastore name."))
.required("backup-type", StringSchema::new("Backup type.") .required("backup-type", StringSchema::new("Backup type.")
.format(Arc::new(ApiStringFormat::Enum(vec!["vm".into(), "ct".into(), "host".into()])))) .format(Arc::new(ApiStringFormat::Enum(&["vm", "ct", "host"]))))
.required("backup-id", StringSchema::new("Backup ID.")) .required("backup-id", StringSchema::new("Backup ID."))
) )
} }

View File

@ -130,7 +130,7 @@ pub fn api_method_upload_pxar() -> ApiAsyncMethod {
.required("store", StringSchema::new("Datastore name.")) .required("store", StringSchema::new("Datastore name."))
.required("archive-name", StringSchema::new("Backup archive name.")) .required("archive-name", StringSchema::new("Backup archive name."))
.required("backup-type", StringSchema::new("Backup type.") .required("backup-type", StringSchema::new("Backup type.")
.format(Arc::new(ApiStringFormat::Enum(vec!["ct".into(), "host".into()])))) .format(Arc::new(ApiStringFormat::Enum(&["ct", "host"]))))
.required("backup-id", StringSchema::new("Backup ID.")) .required("backup-id", StringSchema::new("Backup ID."))
.required("backup-time", IntegerSchema::new("Backup time (Unix epoch.)") .required("backup-time", IntegerSchema::new("Backup time (Unix epoch.)")
.minimum(1547797308)) .minimum(1547797308))
@ -194,7 +194,7 @@ pub fn api_method_download_pxar() -> ApiAsyncMethod {
.required("store", StringSchema::new("Datastore name.")) .required("store", StringSchema::new("Datastore name."))
.required("archive-name", StringSchema::new("Backup archive name.")) .required("archive-name", StringSchema::new("Backup archive name."))
.required("backup-type", StringSchema::new("Backup type.") .required("backup-type", StringSchema::new("Backup type.")
.format(Arc::new(ApiStringFormat::Enum(vec!["ct".into(), "host".into()])))) .format(Arc::new(ApiStringFormat::Enum(&["ct", "host"]))))
.required("backup-id", StringSchema::new("Backup ID.")) .required("backup-id", StringSchema::new("Backup ID."))
.required("backup-time", IntegerSchema::new("Backup time (Unix epoch.)") .required("backup-time", IntegerSchema::new("Backup time (Unix epoch.)")
.minimum(1547797308)) .minimum(1547797308))

View File

@ -372,7 +372,7 @@ impl From<ArraySchema> for Arc<Schema> {
} }
pub enum ApiStringFormat { pub enum ApiStringFormat {
Enum(Vec<String>), Enum(&'static [&'static str]),
Pattern(&'static Regex), Pattern(&'static Regex),
Complex(Arc<Schema>), Complex(Arc<Schema>),
VerifyFn(fn(&str) -> Result<(), Error>), VerifyFn(fn(&str) -> Result<(), Error>),
@ -744,7 +744,7 @@ fn test_query_string() {
let schema = ObjectSchema::new("Parameters.") let schema = ObjectSchema::new("Parameters.")
.required( .required(
"name", StringSchema::new("Name.") "name", StringSchema::new("Name.")
.format(Arc::new(ApiStringFormat::Enum(vec!["ev1".into(), "ev2".into()]))) .format(Arc::new(ApiStringFormat::Enum(&["ev1", "ev2"])))
); );
let res = parse_query_string("name=noenum", &schema, true); let res = parse_query_string("name=noenum", &schema, true);
@ -873,7 +873,7 @@ fn test_verify_function() {
fn test_verify_complex_object() { fn test_verify_complex_object() {
let nic_models = Arc::new(ApiStringFormat::Enum( let nic_models = Arc::new(ApiStringFormat::Enum(
vec!["e1000".into(), "virtio".into()])); &["e1000", "virtio"]));
let param_schema: Arc<Schema> = ObjectSchema::new("Properties.") let param_schema: Arc<Schema> = ObjectSchema::new("Properties.")
.default_key("model") .default_key("model")

View File

@ -409,7 +409,7 @@ fn print_property_completion(
} }
if let Schema::String(StringSchema { format: Some(format), ..} ) = schema { if let Schema::String(StringSchema { format: Some(format), ..} ) = schema {
if let ApiStringFormat::Enum(list) = format.as_ref() { if let ApiStringFormat::Enum(list) = *format.as_ref() {
for value in list { for value in list {
if value.starts_with(arg) { if value.starts_with(arg) {
println!("{}", value); println!("{}", value);