Commit Graph

340 Commits

Author SHA1 Message Date
Dietmar Maurer 3192ae968c src/catar/encoder.rs: write entry and symlink data 2018-12-28 09:55:26 +01:00
Dietmar Maurer 50ea43962e make map_struct functions public 2018-12-28 08:04:46 +01:00
Dietmar Maurer d2b03f2397 catar/encoder.rs: improve error handling 2018-12-28 07:45:15 +01:00
Dietmar Maurer 0ff559990c cleanups, avoid compiler warnings 2018-12-28 07:14:12 +01:00
Dietmar Maurer 45281d4927 catar/encoder: detect symlink and regular files 2018-12-27 14:24:31 +01:00
Dietmar Maurer fb8365b79f catar/encoder.rs: first try 2018-12-27 13:15:47 +01:00
Wolfgang Bumiller fba3437f1e timer: setup_timeout_handler cannot fail
and if it does it panics anyway

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-27 10:36:28 +01:00
Dietmar Maurer bcd879cfb3 backup-client: allow to specify directories (prepare for catar backup) 2018-12-27 10:11:11 +01:00
Dietmar Maurer b62b6cadf4 start implementing catar 2018-12-27 09:22:23 +01:00
Dietmar Maurer dc3de618ed new helper map_struct and map_struct_mut 2018-12-27 09:20:17 +01:00
Dietmar Maurer a198d74fc0 cleanup: reduce compiler warnings 2018-12-25 13:29:27 +01:00
Dietmar Maurer 991de6007b remove outdated comment 2018-12-25 13:24:50 +01:00
Dietmar Maurer 7ee2aa1b94 touch_chunk: use libc::lutimensat 2018-12-25 12:27:25 +01:00
Dietmar Maurer 2c32fdde86 move lookup_datastore() to backup/datastore.rs 2018-12-22 17:37:25 +01:00
Dietmar Maurer 64e53b2835 gather usage statistics during garbage collection 2018-12-22 16:58:16 +01:00
Dietmar Maurer 28b96b56e1 open_file_locked: improve error message 2018-12-22 15:59:55 +01:00
Dietmar Maurer 176e4af964 sweep_used_chunks: print percentage 2018-12-22 15:39:05 +01:00
Dietmar Maurer 7b2b40a893 use openssl for faster hashing 2018-12-22 14:31:59 +01:00
Dietmar Maurer e95950e40a chunk_store: reduce number of directories
Else, scans everything takes too long ...
2018-12-22 14:04:05 +01:00
Dietmar Maurer 15e9b4ed60 src/api3/datastore.rs: new file 2018-12-21 13:38:41 +01:00
Dietmar Maurer 3c140f60cd use return value (avoid compiler warning) 2018-12-21 12:44:20 +01:00
Dietmar Maurer 03e4753d8e fix mutability for chunk store 2018-12-21 12:15:26 +01:00
Dietmar Maurer 2d9d143a8f backup-client: add optional chunk-size parameter 2018-12-21 11:18:08 +01:00
Dietmar Maurer f0819fe5a5 backup-client: do not start garbage collection after backup 2018-12-21 09:24:55 +01:00
Dietmar Maurer d62e6e2264 backup-client: use 1M chunks, make chunk_size configurable 2018-12-21 08:36:57 +01:00
Dietmar Maurer c34eb16651 backup-clinet: specify target file name 2018-12-20 14:09:31 +01:00
Dietmar Maurer c2d9b3914a add test code to access static global state 2018-12-20 14:03:42 +01:00
Dietmar Maurer fe0e04c69c use proxmox-backup as package name 2018-12-20 10:45:14 +01:00
Dietmar Maurer f7dd683b46 fix tests 2018-12-19 13:54:22 +01:00
Dietmar Maurer 277fc5a3ce try to improve error messages 2018-12-19 13:40:26 +01:00
Dietmar Maurer eae8aa3aa9 cleanups: avoid compiler warnings 2018-12-19 12:49:23 +01:00
Dietmar Maurer 6c20a13d3c cleanup - avoid too much indentation 2018-12-19 12:40:26 +01:00
Dietmar Maurer 1c43c56b06 cleanup 2018-12-19 12:30:37 +01:00
Dietmar Maurer 2bf5f6b220 ChunkStore::sweep_used_chunks - use openat to speedup directory walks 2018-12-19 12:20:01 +01:00
Wolfgang Bumiller 1628a4c731 use timers with a signal for file locking
* rename lock_file -> open_file_locked,
* add lock_file as a function working on already-opened
  files
* change timeout types to std::time::Duration

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-19 11:23:00 +01:00
Wolfgang Bumiller 8cf6e764ad add tools::timer module
This wraps POSIX timers via timer_create(2).

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-19 11:23:00 +01:00
Dietmar Maurer 365bb90f17 move lock_file to tools.rs 2018-12-19 10:02:24 +01:00
Dietmar Maurer 08481a0b60 impl sweep_used_chunks, first try 2018-12-19 09:51:33 +01:00
Dietmar Maurer 6ea3a0b7fc move sweep_used_chunks to chunk_store 2018-12-18 11:18:55 +01:00
Dietmar Maurer 3d5c11e5d2 start impl garbage collection 2018-12-18 11:06:03 +01:00
Dietmar Maurer 529de6c7a3 start implementing DataStore 2018-12-17 13:00:39 +01:00
Dietmar Maurer 4818c8b6f7 start implementing ImageIndexReader 2018-12-16 14:44:44 +01:00
Dietmar Maurer a27a3ee4ba avoid compiler warnings 2018-12-16 13:57:59 +01:00
Dietmar Maurer af3e7d7551 fix chunk store file paths 2018-12-16 13:52:16 +01:00
Dietmar Maurer 0cd9d4206f improve error messages 2018-12-16 13:43:19 +01:00
Dietmar Maurer 4fbb72a8b4 image_index.rs: implement atomic write/rename 2018-12-16 13:39:21 +01:00
Dietmar Maurer 798881a68a rebane ImageIndex to ImageIndexWriter 2018-12-16 11:51:16 +01:00
Dietmar Maurer 5e5b7f1c2d use u64 to store time 2018-12-16 11:48:03 +01:00
Dietmar Maurer d13e3745b3 image_index.rs: write header 2018-12-15 17:05:49 +01:00
Dietmar Maurer 606ce64bb0 image_index.rs:write idx of chunks (use mmap) 2018-12-15 14:51:05 +01:00
Dietmar Maurer f8838fe913 backup-client: add bash completion for datastore names 2018-12-15 11:24:39 +01:00
Dietmar Maurer 5f0c2d5652 remove debug println 2018-12-15 11:16:27 +01:00
Dietmar Maurer 43eeef28d1 move file_chunker to tools 2018-12-15 11:14:41 +01:00
Dietmar Maurer 48e8689505 file_chunker: use Read trait 2018-12-15 11:08:49 +01:00
Dietmar Maurer fc8b19368a backup-client: pass chunk_size as parameter to file_chunker 2018-12-15 10:58:48 +01:00
root a914a77448 backup-client: read file by chunks 2018-12-14 13:39:41 +01:00
root ff5d37074d bin/backup-client.rs: nbew tool to play with chunk store 2018-12-14 08:28:56 +01:00
root 15b64d4606 api3/config/datastore.rs: create datastore files 2018-12-13 14:41:14 +01:00
Dietmar Maurer 7f4e639b37 improve completion 2018-12-12 13:00:58 +01:00
Dietmar Maurer e3d40bb8cd complete_datastore_name: write more compact code 2018-12-12 12:41:59 +01:00
Dietmar Maurer 30d2e99c77 implement completion functions 2018-12-12 12:19:26 +01:00
Dietmar Maurer 91643d9012 section_config.rs: remove debug output 2018-12-12 12:19:26 +01:00
Dietmar Maurer d64d80d20a add comment 2018-12-12 11:23:04 +01:00
Dietmar Maurer 5ba6968922 add comment to make intensions more clear 2018-12-12 11:21:00 +01:00
Dietmar Maurer ca9caffa23 cleanup parameter types 2018-12-12 10:37:03 +01:00
Dietmar Maurer 38555b5072 implement completion for enums 2018-12-12 08:33:50 +01:00
Dietmar Maurer 2f0258959b improve completion 2018-12-12 08:18:38 +01:00
Dietmar Maurer f46403cc65 improve bash completion 2018-12-12 07:51:43 +01:00
Dietmar Maurer b6e8dd39aa impl bash completion: first try 2018-12-11 14:21:05 +01:00
Dietmar Maurer c21de379ed install bash completion scripts
Completion itself is not implemented.
2018-12-11 12:54:10 +01:00
Dietmar Maurer 6460764dbb cli/command.rs: add new type CliCommandMap 2018-12-11 11:31:36 +01:00
Dietmar Maurer bf7f103944 implement builder pattern for CliCommand 2018-12-11 11:12:13 +01:00
Dietmar Maurer baed30b702 cli/command.rs: implement prefix match 2018-12-10 18:13:55 +01:00
Dietmar Maurer 8f62336b0f impl From for CommandLineInterface 2018-12-10 13:51:10 +01:00
Dietmar Maurer 9f6ab1fc58 rename CmdDef to CommandLineInterface 2018-12-10 13:40:10 +01:00
Dietmar Maurer b7329c8a1a src/cli/command.rs: move code into separate file 2018-12-10 13:36:52 +01:00
Dietmar Maurer 211fabd795 try to support nested cli command definitions 2018-12-10 13:28:38 +01:00
Dietmar Maurer 34d3ba52eb api3/config/datastore.rs: implement delete 2018-12-09 16:52:32 +01:00
Dietmar Maurer 1a7bc3dd5e file_set_contents: correctly use perm parameter 2018-12-09 16:41:54 +01:00
Dietmar Maurer f12f8ff1a6 implement tools::file_set_contents 2018-12-09 16:37:48 +01:00
Dietmar Maurer 652c11900d api3/config/datastore.rs: impl create 2018-12-09 12:51:31 +01:00
Dietmar Maurer ea0b8b6ec0 bin/pbs-datastore.rs: start implementing cli commands 2018-12-09 11:59:32 +01:00
Dietmar Maurer 5b34c2607d rename entry to item 2018-12-09 10:25:56 +01:00
Dietmar Maurer b65eaac62d api3/config/datastore.rs: return real data 2018-12-09 10:23:19 +01:00
Dietmar Maurer 6349ed60b4 config/datastore.rs - open file for reading 2018-12-09 10:22:39 +01:00
Dietmar Maurer ce55dbbcc6 simplify code 2018-12-09 09:42:17 +01:00
Dietmar Maurer 461e62fcdf remove some compiler warnings 2018-12-08 14:55:54 +01:00
Dietmar Maurer 567713b4c3 rename data_store to datastore 2018-12-08 14:51:08 +01:00
Dietmar Maurer 6ce50400c5 cleanup api3 structure 2018-12-08 14:44:55 +01:00
Dietmar Maurer 678d72df6b add data_store configuration 2018-12-08 13:58:45 +01:00
Dietmar Maurer 391a2e43ff chunk_store.insert_chunk: return information about existing chunks 2018-12-08 11:25:11 +01:00
Dietmar Maurer 12bb93b3ad code cleanup 2018-12-08 11:20:02 +01:00
Dietmar Maurer 022fb421b2 lock with timeout
clumsy, but I have node idea how to make it better
2018-12-08 10:57:09 +01:00
Dietmar Maurer 2989f6bf20 improve error messages 2018-12-08 08:38:42 +01:00
Dietmar Maurer b8d4766a4d code cleanup 2018-12-08 08:21:20 +01:00
Dietmar Maurer 45773720ab depend on nix, use flock
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2018-12-07 18:14:07 +01:00
Dietmar Maurer c5d82e5f34 chunk_store: use mutex 2018-12-07 16:12:45 +01:00
Dietmar Maurer 128b37feea impl insert_chunk 2018-12-07 14:44:56 +01:00
Dietmar Maurer 35cf5daa53 start experiments with simple chunk store 2018-12-07 10:51:53 +01:00
Dietmar Maurer b22751b20c getopts.rs: fix test 2018-12-07 09:02:24 +01:00
Dietmar Maurer a4b7c3f2df more cleanups 2018-12-06 10:41:57 +01:00
Dietmar Maurer d3369f819d code cleanup 2018-12-06 10:23:45 +01:00
Dietmar Maurer c578fcd9e2 simplify formatter code 2018-12-05 18:22:56 +01:00
Dietmar Maurer 4b26195c6a extract version from environment 2018-12-05 14:40:45 +01:00
Dietmar Maurer 95b492add8 api: add /version 2018-12-05 14:03:15 +01:00
Dietmar Maurer 1571873d7b add output formatter 2018-12-05 12:43:22 +01:00
Dietmar Maurer 083418619e move src/api/server.rs -> src/server/rest.rs 2018-12-05 10:16:23 +01:00
Dietmar Maurer 5c7a1b15c8 start the GUI 2018-12-04 17:53:10 +01:00
Dietmar Maurer 826bb98286 set content type for static file download 2018-12-02 11:00:52 +01:00
Dietmar Maurer 8adbdb0a54 fix file download, listen to 0.0.0.0 2018-12-01 15:21:25 +01:00
Dietmar Maurer f4c514c13d remove www/pbs-index.html.tt, hardcode into rust for now 2018-12-01 13:37:49 +01:00
Dietmar Maurer e3871182c5 rename bin to src/bin/api-test-server.rs 2018-11-30 12:48:45 +01:00
Dietmar Maurer 73f29c34d7 improve command line parser 2018-11-30 12:10:26 +01:00
Dietmar Maurer d42398666c improve error message 2018-11-30 12:07:27 +01:00
Dietmar Maurer bfb1d69abc fix compiler warnings, add storage/config.rs 2018-11-30 11:15:26 +01:00
Dietmar Maurer 9131286246 remove missleading comment 2018-11-30 08:47:26 +01:00
Dietmar Maurer a27b905c28 use VecDeque instead of LinkedList 2018-11-29 17:28:28 +01:00
Dietmar Maurer c6ed6cac12 SectionConfig::write - return raw string 2018-11-29 16:47:40 +01:00
Dietmar Maurer ae3a512dd9 SectionConfig::write - verify data 2018-11-29 13:18:15 +01:00
Dietmar Maurer aeb4c8217b schema: implement verify_json 2018-11-29 13:06:43 +01:00
Dietmar Maurer 9c1b42d28e simplify var names 2018-11-29 09:33:27 +01:00
Dietmar Maurer e189c93b8c section_config: add write - first try 2018-11-28 14:09:35 +01:00
Dietmar Maurer 92fb0784d4 section_config: add new struct SectionConfigData 2018-11-28 08:25:26 +01:00
Dietmar Maurer e3a2217050 avoid clone 2018-11-27 14:10:16 +01:00
Dietmar Maurer ee7fc4335a SectionConfig::parse - return Value 2018-11-27 12:54:40 +01:00
Dietmar Maurer 826698d56f SectionConfig: add schema for ID property 2018-11-27 12:34:56 +01:00
Dietmar Maurer bdb631da88 section_config: improve parser 2018-11-27 11:55:21 +01:00
Dietmar Maurer 1fa897cfed section_config: parse section content 2018-11-27 09:01:36 +01:00
Dietmar Maurer 803b95a01d SectionConfigPlugin: add schema 2018-11-27 08:41:25 +01:00
Dietmar Maurer b943ed8d2b section_config: further parser improvements 2018-11-26 18:22:07 +01:00
Dietmar Maurer 0d97734e92 use is_empty() to check for empty string 2018-11-26 18:02:29 +01:00
Dietmar Maurer dd193a61d0 section_config: improve parser 2018-11-26 18:01:24 +01:00
Dietmar Maurer 07d3fa7289 add some inline documentation 2018-11-24 17:52:43 +01:00
Dietmar Maurer 6656ba9d32 StringSchema: add method to check string length 2018-11-24 12:37:05 +01:00
Dietmar Maurer ab672c124e ArraySchema: add method to check array length 2018-11-24 12:33:44 +01:00
Dietmar Maurer ed04ce8093 parse_property_string: allow arrays
So that we can build simple lists like "1,2,3,4"
2018-11-24 12:21:56 +01:00
Dietmar Maurer 84669dc18d rename test case 2018-11-24 11:21:01 +01:00
Dietmar Maurer b436389d47 parse_property_string: first try 2018-11-24 11:20:17 +01:00
Dietmar Maurer a23dd9bb42 add test for VerifyFn 2018-11-24 08:30:23 +01:00
Dietmar Maurer 715f22fb4a remove outdated test code 2018-11-24 08:15:08 +01:00
Dietmar Maurer 757d9b4769 ArraySchema: Add min_length and max_length 2018-11-24 08:12:23 +01:00
Dietmar Maurer 3e1497fb75 remove description from ApiMethod
We use the description from parameters ObjectSchema instead.
2018-11-23 17:02:50 +01:00
Dietmar Maurer 768e01091a implement Into Arc<Schema> 2018-11-23 13:18:41 +01:00
Dietmar Maurer 8a41cfdd55 implement ArraySchema 2018-11-23 12:05:55 +01:00
Dietmar Maurer 7edeec7b06 remove parameter macro, implement ObjectSchema builder
And store "optional" attribute inside properties hash.
2018-11-23 11:34:15 +01:00
Dietmar Maurer 82df76fff0 start using builder pattern instead of macros 2018-11-23 09:55:38 +01:00
Dietmar Maurer dc454ef096 implement schema registry 2018-11-22 11:23:49 +01:00
Dietmar Maurer 00c908df85 use Arc pointer to properties 2018-11-20 17:20:50 +01:00
Dietmar Maurer e471d69946 section_config.rs: add some test code 2018-11-19 08:07:22 +01:00
Dietmar Maurer 222454221c add section_config.rs 2018-11-19 06:47:39 +01:00