Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							edebbf920a 
							
						 
					 
					
						
						
							
							fix property sorting  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2020-01-23 13:15:59 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							f22b693800 
							
						 
					 
					
						
						
							
							macro: silence some warnings in tests  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2020-01-15 14:10:58 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							0f630a4cb8 
							
						 
					 
					
						
						
							
							api-macro: more documentation  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2020-01-08 11:23:48 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							5b652dbad8 
							
						 
					 
					
						
						
							
							api-macro: schema tests for async fns  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2020-01-08 11:01:55 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							943bc4de52 
							
						 
					 
					
						
						
							
							api-macro: more tests  
						
						... 
						
						
						
						Note that this one tests the fact that we do not do output
schema validation!
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2020-01-08 10:58:27 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							58158b495e 
							
						 
					 
					
						
						
							
							api-macro: more invocation tests for api methods  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2020-01-08 10:56:45 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							679ad01c03 
							
						 
					 
					
						
						
							
							api-macro: add expanded data to tests for verification  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2020-01-08 10:51:00 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							08e1cf3c2f 
							
						 
					 
					
						
						
							
							api-macro: support empty api macro on structs  
						
						... 
						
						
						
						The description comes from the doc comment, the field types
and description from field doc comments and types.
Previously we needed to add at least the hint that the
schema is an object schema. Now we support an empty #[api]
attribute as well.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2020-01-08 10:09:42 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							2e63bf8422 
							
						 
					 
					
						
						
							
							api-macro: support rename_all in enums  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2020-01-07 15:29:56 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							3626f57d2c 
							
						 
					 
					
						
						
							
							api-macro: more option type handling  
						
						... 
						
						
						
						infer_type now also returns whether it was encapsualted in
an Option<>. So `type: String, optional: true` is now
inferred propertly from `Option<String>`.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2020-01-07 13:37:34 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							860a4fd0ad 
							
						 
					 
					
						
						
							
							api-macro: add basic struct handling  
						
						... 
						
						
						
						- handle doc comments for descriptions
- infer fields from structs when possible
- perform some basic error checking
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2020-01-07 13:09:20 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							4c77a7fece 
							
						 
					 
					
						
						
							
							api-macro: derive descriptions for structs  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2020-01-07 12:00:17 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							3e5927a1b4 
							
						 
					 
					
						
						
							
							api-macro: generalized '{ schema: PATH }' schemas  
						
						... 
						
						
						
						allow 'schema: PATH' outside object property context
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-12-16 12:11:52 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							808035f524 
							
						 
					 
					
						
						
							
							api-macro: support 'async fn' with new async api method  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-12-16 11:13:26 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							b81beb4dfb 
							
						 
					 
					
						
						
							
							api-macro: allow methods without return types  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-12-04 14:27:57 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							c282c8ce23 
							
						 
					 
					
						
						
							
							api-macro: don't return Null without return schema  
						
						... 
						
						
						
						serde_json turns () into Null anyway, so there's no need to
check this!
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-12-04 14:25:12 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							f9d775924d 
							
						 
					 
					
						
						
							
							api-macro: get enum description from doc comments  
						
						... 
						
						
						
						instead of:
    #[api(description: "Some description.")]
    pub enum { ... }
support:
    #[api]
    /// Some description.
    pub enum { ... }
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-12-04 11:52:03 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							4de409c526 
							
						 
					 
					
						
						
							
							api-macro: support hyphenated parameter names  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-12-03 13:34:37 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							d3ec63f26d 
							
						 
					 
					
						
						
							
							api-macro: allow referencing external schemas in properties  
						
						... 
						
						
						
						Reference a predefined BACKUP_ARCHIVE_NAME StringSchema like
this:
    #[api(
        input: {
            properties: {
                archive: {
                    optional: true,
                    schema: BACKUP_ARCHIVE_NAME,
                },
            }
        }
    )]
    fn get_archive(archive: String) -> Result<(), Error> {
        ...
    }
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-12-03 11:11:46 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							d78659a2c0 
							
						 
					 
					
						
						
							
							api-macro: allow inferring some types automatically  
						
						... 
						
						
						
						non-optional boolean, string and integer types can be
inferred from the function
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-12-02 11:46:15 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							7fd69f8b12 
							
						 
					 
					
						
						
							
							api-macro: test optional value invocation  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-12-02 11:12:36 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							263b943287 
							
						 
					 
					
						
						
							
							api-macro: allow skipping input schema  
						
						... 
						
						
						
						when there are no parameters
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-12-02 11:00:04 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							bead1e6b13 
							
						 
					 
					
						
						
							
							api-macro: add test with no parameters  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-12-02 10:55:28 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							a997502ab1 
							
						 
					 
					
						
						
							
							api-macro: make return schema optional  
						
						... 
						
						
						
						and support returning () from methods
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-12-02 10:43:10 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							6afad53466 
							
						 
					 
					
						
						
							
							api-macro: some more test code  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-11-28 13:49:14 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							22581b382c 
							
						 
					 
					
						
						
							
							api-macro: fixup  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-11-28 13:47:42 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							5690e5e6a2 
							
						 
					 
					
						
						
							
							api-macro: cleanup  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-11-28 13:43:25 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							7d6fac0fa5 
							
						 
					 
					
						
						
							
							api-macro: parse serde(rename) on enums  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-11-28 13:42:46 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							30a1c0b9ae 
							
						 
					 
					
						
						
							
							api-macro: experimental enum support  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-11-28 12:21:46 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							6818cf76c9 
							
						 
					 
					
						
						
							
							api-macro: support defining schemas for structs  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-11-28 11:15:37 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							4f042f8133 
							
						 
					 
					
						
						
							
							api-macro: support external types  
						
						... 
						
						
						
						See the test example:
assuming a `pub struct Foo` which implements `Serialize` and
`Deserialize`, we also expect it to provide a
`pub const Foo::API_SCHEMA: &Schema` like so:
    #[derive(Deserialize, Serialize)]
    pub struct StrongString(String);
    impl StrongString {
        pub const API_SCHEMA: &'static Schema =
            &StringSchema::new("Some generic string")
                .format(&ApiStringFormat::Enum(&["a", "b"]))
                .schema();
    }
Then we can use:
    #[api(
        input: {
            properties: {
                arg: { type: StrongString },
            }
        },
        ...
    )]
    fn my_api_func(arg: StrongString) -> Result<...> {
        ...
    }
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-11-28 10:42:35 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							2fc2df9a78 
							
						 
					 
					
						
						
							
							api-macro: tests: remove #![allow(dead_code)]  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-11-28 09:29:45 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							993eb7d168 
							
						 
					 
					
						
						
							
							api-macro: update tests, cleanup some macro generated paths  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-11-27 14:46:20 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							881df81976 
							
						 
					 
					
						
						
							
							api-macro: start actually extracting parameters  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-11-27 14:00:41 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							d02a8f4e42 
							
						 
					 
					
						
						
							
							api-macro: begin and explain the parameter mapping strategy  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-11-27 12:29:50 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							ebda5a3c5c 
							
						 
					 
					
						
						
							
							api-macro: parse properties as attributes to #[api]  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-11-27 11:01:40 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							044af76286 
							
						 
					 
					
						
						
							
							api-macro: test: add 'protected' attribute  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-11-27 10:06:15 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							366b50dee7 
							
						 
					 
					
						
						
							
							api-macro: understand a 'Returns:' section in function doc comments  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-11-26 13:39:20 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							7f7a9fe92f 
							
						 
					 
					
						
						
							
							api-macro: make type optional in some cases  
						
						... 
						
						
						
						Objects and arrays are now optionally identified by their
'properties' or 'items' property if their 'type' is left
out.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-11-26 13:27:54 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							5a2fe67cd8 
							
						 
					 
					
						
						
							
							api-macro: rename elements to properties  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-11-26 12:16:05 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							a646146f75 
							
						 
					 
					
						
						
							
							replace builder-pattern api macro parser with json  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-11-26 12:12:49 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							5721d21a5e 
							
						 
					 
					
						
						
							
							import a first draft of api macros  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-11-22 15:23:24 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							068d56ed3d 
							
						 
					 
					
						
						
							
							delete the old api macro stuff  
						
						... 
						
						
						
						to be replaced by a new set of macros for the current api
schema in proxmox-backup
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-11-21 13:13:18 +01:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							eb4e28d7bf 
							
						 
					 
					
						
						
							
							remove async_await feature gate  
						
						... 
						
						
						
						then we can build with beta as well
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-09-28 10:10:06 +02:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							a7b9c8d89e 
							
						 
					 
					
						
						
							
							fixup tests for router change  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@errno.eu> 
						
					 
					
						2019-08-15 20:26:18 +02:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							bb3e2859e4 
							
						 
					 
					
						
						
							
							macro: derive ser/de for newtypes just like structs  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-08-08 11:29:12 +02:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							ec1ad87193 
							
						 
					 
					
						
						
							
							macro: replace named struct handler  
						
						... 
						
						
						
						We now derive Serialize and Deserialize automatically.
This way we'll be able to add verifiers right into the
structs, support our 'rename' functionality, and our
'default' handling etc. which needs to be compatible with
what we have in perl.
Ideally this will also give us the option to mark structs as
being perl-compatible "property strings"
(PVE::JSONSchema::parse_property_string()) and automatically
derive FromStr for structs on demand.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-07-19 11:04:55 +02:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							da40267188 
							
						 
					 
					
						
						
							
							api-server, tools: formatting cleanup  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-07-18 10:47:56 +02:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							bfbba4e605 
							
						 
					 
					
						
						
							
							tests: use an async block instead of an async closure  
						
						... 
						
						
						
						Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com> 
						
					 
					
						2019-07-17 16:13:36 +02:00 
						 
				 
			
				
					
						
							
							
								Wolfgang Bumiller 
							
						 
					 
					
						
						
						
						
							
						
						
							c8e11115d2 
							
						 
					 
					
						
						
							
							api: replace handler() with call()  
						
						... 
						
						
						
						An `fn` type can be more annoying to produce in some generic
cases, and we haven't really needed it yet.
Signed-off-by: Wolfgang Bumiller <wry.git@bumiller.com> 
						
					 
					
						2019-06-23 11:19:49 +02:00