update rust modules

This commit is contained in:
Алексей Шабалин 2023-03-17 21:17:43 +03:00
parent 109d180cf0
commit 1e21635421
43 changed files with 1361 additions and 198 deletions

View File

@ -23,6 +23,10 @@ replace-with = "vendored-sources"
git = "git://git.proxmox.com/git/proxmox-openid-rs.git" git = "git://git.proxmox.com/git/proxmox-openid-rs.git"
replace-with = "vendored-sources" replace-with = "vendored-sources"
[source."git+git://git.proxmox.com/git/proxmox-resource-scheduling.git"]
git = "git://git.proxmox.com/git/proxmox-resource-scheduling.git"
replace-with = "vendored-sources"
[source."git://git.proxmox.com/git/proxmox.git"] [source."git://git.proxmox.com/git/proxmox.git"]
git = "git://git.proxmox.com/git/proxmox.git" git = "git://git.proxmox.com/git/proxmox.git"
replace-with = "vendored-sources" replace-with = "vendored-sources"
@ -44,3 +48,5 @@ proxmox-schema = { git = "git://git.proxmox.com/git/proxmox.git" }
proxmox-sys = { git = "git://git.proxmox.com/git/proxmox.git" } proxmox-sys = { git = "git://git.proxmox.com/git/proxmox.git" }
proxmox-http = { git = "git://git.proxmox.com/git/proxmox.git" } proxmox-http = { git = "git://git.proxmox.com/git/proxmox.git" }
proxmox-subscription = { git = "git://git.proxmox.com/git/proxmox.git" } proxmox-subscription = { git = "git://git.proxmox.com/git/proxmox.git" }
proxmox-resource-scheduling = { git = "git://git.proxmox.com/git/proxmox-resource-scheduling.git" }

13
Cargo.lock generated
View File

@ -761,6 +761,16 @@ dependencies = [
"url", "url",
] ]
[[package]]
name = "proxmox-resource-scheduling"
version = "0.1.0"
source = "git+git://git.proxmox.com/git/proxmox-resource-scheduling.git#582cf066d506eb31097098f416f698dd128867c1"
dependencies = [
"anyhow",
"lazy_static",
"serde",
]
[[package]] [[package]]
name = "proxmox-schema" name = "proxmox-schema"
version = "1.3.4" version = "1.3.4"
@ -870,7 +880,7 @@ dependencies = [
[[package]] [[package]]
name = "pve-rs" name = "pve-rs"
version = "0.7.2" version = "0.7.3"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"base32", "base32",
@ -884,6 +894,7 @@ dependencies = [
"proxmox-apt", "proxmox-apt",
"proxmox-http", "proxmox-http",
"proxmox-openid", "proxmox-openid",
"proxmox-resource-scheduling",
"proxmox-subscription", "proxmox-subscription",
"proxmox-sys", "proxmox-sys",
"proxmox-tfa", "proxmox-tfa",

View File

@ -1 +1 @@
{"files":{"Cargo.toml":"a7db8d12dd4b822c503e66f8303f80ce189ba5ad2252d014c2eb339d3734e56c","build.rs":"4c2e67d1341ab7767b0324324c7b49b6dce1eb6dd6ea8cbe591838fca8af0339","src/attribs.rs":"b56c1c2761d3ec11028d20616aecf47ddba61d778289b10c49e005e94b136bd9","src/function.rs":"923f28413c686a4497c81ad1c51c2d8fca6403a0c7f2293b5167be7c12261634","src/lib.rs":"ef924a4e9d1fbbd413ab5c597d8a1b12b2da478c574753eb378b8111b8b59022","src/module.rs":"e1cf30c1549367ecaf248f98d413b9ceb3887b4eaf5d08f55512bdfd100d7b56","src/package.rs":"1d713c2785e711d4a527199bc3535cfbe9a8f60abc14a0686c54c9ff213ee346"},"package":null} {"files":{"Cargo.toml":"1a0890b05d7eb054c9d65167ffa51bc3f827ec8106865676dfc3c545bda36061","build.rs":"4c2e67d1341ab7767b0324324c7b49b6dce1eb6dd6ea8cbe591838fca8af0339","src/attribs.rs":"b56c1c2761d3ec11028d20616aecf47ddba61d778289b10c49e005e94b136bd9","src/function.rs":"923f28413c686a4497c81ad1c51c2d8fca6403a0c7f2293b5167be7c12261634","src/lib.rs":"ef924a4e9d1fbbd413ab5c597d8a1b12b2da478c574753eb378b8111b8b59022","src/module.rs":"e1cf30c1549367ecaf248f98d413b9ceb3887b4eaf5d08f55512bdfd100d7b56","src/package.rs":"1d713c2785e711d4a527199bc3535cfbe9a8f60abc14a0686c54c9ff213ee346"},"package":null}

View File

@ -1,18 +1,28 @@
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package] [package]
edition = "2021"
name = "perlmod-macro" name = "perlmod-macro"
version = "0.8.0" version = "0.8.0"
authors = ["Wolfgang Bumiller <w.bumiller@proxmox.com>"] authors = ["Wolfgang Bumiller <w.bumiller@proxmox.com>"]
edition = "2021"
build = "build.rs" build = "build.rs"
license = "Apache-2.0 OR MIT" exclude = ["debian"]
categories = [ "API bindings" ]
keywords = [ "ffi", "perl" ]
description = "perl package macros to create perl package bindings from rust at compile time" description = "perl package macros to create perl package bindings from rust at compile time"
keywords = [
exclude = [ "debian" ] "ffi",
"perl",
[badges] ]
maintenance = { status = "experimental" } categories = ["API bindings"]
license = "Apache-2.0 OR MIT"
[lib] [lib]
proc-macro = true proc-macro = true
@ -20,7 +30,13 @@ proc-macro = true
[dependencies] [dependencies]
proc-macro2 = "1.0" proc-macro2 = "1.0"
quote = "1.0" quote = "1.0"
syn = { version = "1.0", features = [ "full" ] }
[dev-dependencies] [dependencies.syn]
perlmod = { path = "../perlmod" } version = "1.0"
features = ["full"]
[dev-dependencies.perlmod]
path = "../perlmod"
[badges.maintenance]
status = "experimental"

View File

@ -1 +1 @@
{"files":{"Cargo.toml":"ac04cc077bbcce96c4803b865531ed9df16fd4995bcaa437454463dbfc994998","build.rs":"f3b5081270112e127881faad53edd029918adea11a79db1c9b4cc13966ae2b36","src/array.rs":"8ff3a664b80479f8c4962f978afda0c3f9156adb58a6aab9f2698f6509d74e7b","src/de.rs":"9be5d66bec60c8124d47e98cbb5c8a344e7f7ad0369c66fe8e276279b2be32da","src/error.rs":"bf8f667807dd9aa994373af07d33e0c0935158534345fb25d1504f123291531c","src/ffi.rs":"744b7c89ab004803b29d05f07f563312159c761661652c6f4569d5bdc0bc5817","src/glue.c":"9feba990a4ffef2245b72074b444ead76df64a3bc1cabc1b1ee1f66e392af55d","src/hash.rs":"53b10c17ef23a2bd6a309c144b8594d86eed8d5f8997b15113fc57ac6d17e6dd","src/lib.rs":"0b169d995139c5c843e94828dd156199d278335f7bdbea7dc031d5b2dadccd32","src/macros.rs":"fcb27162283040a53280347bf16d8f7f532eb06173022761c33dd44a3851def8","src/magic.rs":"6e9add09e537760eea28a7a5404b8420e7d99c8350590af702a388b526f5ec74","src/raw_value.rs":"8ecb83841b084ebc17c32d2c5f9bfcbbe68cfdd2cb5810ab047e0c9124b6c3d8","src/scalar.rs":"a943a2ddb009d96edd03a7ba5d52fc52764ae97c2cbe84d29edc0296f6900f79","src/ser.rs":"b3d642ca3843d0cc2edb7517551669a94a52622ceaf898f02748312b4c2b1f85","src/value.rs":"f78668e1ea7e2752005b7f2a8b8a406ef5fa7b134689e1ada0945b323528ee86"},"package":null} {"files":{"Cargo.toml":"1b9d4e5188bf118e99ec6dc281e4b89e451a3d2b2ca9eeab714477f7fbe7129d","build.rs":"f3b5081270112e127881faad53edd029918adea11a79db1c9b4cc13966ae2b36","src/array.rs":"8ff3a664b80479f8c4962f978afda0c3f9156adb58a6aab9f2698f6509d74e7b","src/de.rs":"9be5d66bec60c8124d47e98cbb5c8a344e7f7ad0369c66fe8e276279b2be32da","src/error.rs":"bf8f667807dd9aa994373af07d33e0c0935158534345fb25d1504f123291531c","src/ffi.rs":"744b7c89ab004803b29d05f07f563312159c761661652c6f4569d5bdc0bc5817","src/glue.c":"9feba990a4ffef2245b72074b444ead76df64a3bc1cabc1b1ee1f66e392af55d","src/hash.rs":"53b10c17ef23a2bd6a309c144b8594d86eed8d5f8997b15113fc57ac6d17e6dd","src/lib.rs":"0b169d995139c5c843e94828dd156199d278335f7bdbea7dc031d5b2dadccd32","src/macros.rs":"fcb27162283040a53280347bf16d8f7f532eb06173022761c33dd44a3851def8","src/magic.rs":"6e9add09e537760eea28a7a5404b8420e7d99c8350590af702a388b526f5ec74","src/raw_value.rs":"8ecb83841b084ebc17c32d2c5f9bfcbbe68cfdd2cb5810ab047e0c9124b6c3d8","src/scalar.rs":"a943a2ddb009d96edd03a7ba5d52fc52764ae97c2cbe84d29edc0296f6900f79","src/ser.rs":"b3d642ca3843d0cc2edb7517551669a94a52622ceaf898f02748312b4c2b1f85","src/value.rs":"f78668e1ea7e2752005b7f2a8b8a406ef5fa7b134689e1ada0945b323528ee86"},"package":null}

View File

@ -1,29 +1,45 @@
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package] [package]
edition = "2021"
name = "perlmod" name = "perlmod"
version = "0.13.1" version = "0.13.1"
authors = ["Wolfgang Bumiller <w.bumiller@proxmox.com>"] authors = ["Wolfgang Bumiller <w.bumiller@proxmox.com>"]
edition = "2021"
build = "build.rs" build = "build.rs"
license = "Apache-2.0 OR MIT" exclude = ["debian"]
categories = [ "API bindings" ]
keywords = [ "ffi", "perl" ]
description = "ffi & serde code for limited interaction with perl code" description = "ffi & serde code for limited interaction with perl code"
keywords = [
exclude = [ "debian" ] "ffi",
"perl",
[badges] ]
maintenance = { status = "experimental" } categories = ["API bindings"]
license = "Apache-2.0 OR MIT"
[dependencies] [dependencies]
bitflags = "1.2.1" bitflags = "1.2.1"
libc = "0.2" libc = "0.2"
serde = "1.0" serde = "1.0"
perlmod-macro = { path = "../perlmod-macro", optional = true, version = "0.8" } [dependencies.perlmod-macro]
version = "0.8"
path = "../perlmod-macro"
optional = true
[build-dependencies]
cc = "1.0.46"
[features] [features]
default = ["exporter"] default = ["exporter"]
exporter = ["perlmod-macro"] exporter = ["perlmod-macro"]
[build-dependencies] [badges.maintenance]
cc = "1.0.46" status = "experimental"

View File

@ -1 +1 @@
{"files":{".cargo/config":"37beff0fa7970cf880e0ca1d4b564c22cb48f8b606155656d02e9da3fb2e415a","Cargo.toml":"77c2e120e48a8cacaabe32fd9b0b514dc1cab8bb2b9bf8563272206adae2a935","Makefile":"423287f70b374da2d8e2cbc4d0681c48a14fe164340938d125cd9f8c6dd4adfb","rustfmt.toml":"d8e7f616455a670ba75e3e94bf6f88f4c168c481664d12501820c7dfff5c3cc2","src/account.rs":"5c25e80a9ff544742cd8c3f2001ed8c3b35121e84a1ef5111c7a5a46e4d89d61","src/authorization.rs":"ce0cad666eb1dcb5437e5992b66ff1719a04994b36207a19d4a72240afaa8ad7","src/b64u.rs":"efe15408962741cca2f578164dda8df5f3fd649b38c4559b7f9254f5123f32b4","src/client.rs":"286ed78469c5d5376ad93933bee890770d28923e5baaf414f04810f8e3076cf1","src/directory.rs":"93ce3f2d531a4f00cb2557204309fdefeaaa1c89bc3ceb66150cb50bfcc0350f","src/error.rs":"8a2411973635c1e60cbcac8844b8248251e77f4e322721ad3892d8f1da044eeb","src/json.rs":"00954229d2ee4a0961b2be0c955a9f5c85232aef816710168ea2f3edfbd84faa","src/jws.rs":"9d7df713b3bc58ca1098528e63fb2fd2950f5b957b60f83f0d33ea6472e00a43","src/key.rs":"8e609e55d1a358727513c585d064cfd2b71ff44f11226bbd6fcc948fea5fea0d","src/lib.rs":"79325c3ab2db83f21a3b00e8c1236003f6e555996de3bd4d760265755983dd0e","src/order.rs":"7d2766e1c53988dad9bc150d1830829521bd0422eeec357b40e680fbad45bfd5","src/request.rs":"eb359391f3065926fccc27ee2e6c2725c1fdb92867d80583e38ab9f1f7bee561","src/util.rs":"22d78f6eb3cc1a34f958406414d1d303822fa73e0c0a6e9648b122b938172093"},"package":null} {"files":{".cargo/config":"37beff0fa7970cf880e0ca1d4b564c22cb48f8b606155656d02e9da3fb2e415a","Cargo.toml":"417441841d042321d8f70b6248804459f0116e09cf46dbda448a41d52563b4cf","Makefile":"423287f70b374da2d8e2cbc4d0681c48a14fe164340938d125cd9f8c6dd4adfb","rustfmt.toml":"d8e7f616455a670ba75e3e94bf6f88f4c168c481664d12501820c7dfff5c3cc2","src/account.rs":"5c25e80a9ff544742cd8c3f2001ed8c3b35121e84a1ef5111c7a5a46e4d89d61","src/authorization.rs":"ce0cad666eb1dcb5437e5992b66ff1719a04994b36207a19d4a72240afaa8ad7","src/b64u.rs":"efe15408962741cca2f578164dda8df5f3fd649b38c4559b7f9254f5123f32b4","src/client.rs":"286ed78469c5d5376ad93933bee890770d28923e5baaf414f04810f8e3076cf1","src/directory.rs":"93ce3f2d531a4f00cb2557204309fdefeaaa1c89bc3ceb66150cb50bfcc0350f","src/error.rs":"8a2411973635c1e60cbcac8844b8248251e77f4e322721ad3892d8f1da044eeb","src/json.rs":"00954229d2ee4a0961b2be0c955a9f5c85232aef816710168ea2f3edfbd84faa","src/jws.rs":"9d7df713b3bc58ca1098528e63fb2fd2950f5b957b60f83f0d33ea6472e00a43","src/key.rs":"8e609e55d1a358727513c585d064cfd2b71ff44f11226bbd6fcc948fea5fea0d","src/lib.rs":"79325c3ab2db83f21a3b00e8c1236003f6e555996de3bd4d760265755983dd0e","src/order.rs":"7d2766e1c53988dad9bc150d1830829521bd0422eeec357b40e680fbad45bfd5","src/request.rs":"eb359391f3065926fccc27ee2e6c2725c1fdb92867d80583e38ab9f1f7bee561","src/util.rs":"22d78f6eb3cc1a34f958406414d1d303822fa73e0c0a6e9648b122b938172093"},"package":null}

View File

@ -1,33 +1,54 @@
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package] [package]
edition = "2021"
name = "proxmox-acme-rs" name = "proxmox-acme-rs"
version = "0.4.0" version = "0.4.0"
authors = ["Wolfgang Bumiller <w.bumiller@proxmox.com>"] authors = ["Wolfgang Bumiller <w.bumiller@proxmox.com>"]
edition = "2021"
license = "AGPL-3"
description = "ACME client library"
exclude = [ exclude = [
"build", "build",
"debian", "debian",
] ]
description = "ACME client library"
license = "AGPL-3"
[dependencies] [dependencies]
base64 = "0.13.0" base64 = "0.13.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
openssl = "0.10.29" openssl = "0.10.29"
serde_json = "1.0"
# For the client [dependencies.native-tls]
native-tls = { version = "0.2", optional = true } version = "0.2"
optional = true
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.ureq] [dependencies.ureq]
optional = true
version = "2.4" version = "2.4"
features = [
"native-tls",
"gzip",
]
optional = true
default-features = false default-features = false
features = [ "native-tls", "gzip" ]
[features]
default = []
client = ["ureq", "native-tls"]
[dev-dependencies] [dev-dependencies]
anyhow = "1.0" anyhow = "1.0"
[features]
client = [
"ureq",
"native-tls",
]
default = []

View File

@ -1 +1 @@
{"files":{"Cargo.toml":"f1a64433c63b7771a7f16bf4ec7755d534e876fc56119402c11337ba147d81d3","src/api/attributes.rs":"c6bd55dcb71472ece5bdf0368396f8da648c6175fe81698820005486db118c04","src/api/enums.rs":"3a6fc219d66d97314a6b063fc734fce9bf1dad020922e6e74f27e3b61332a918","src/api/method.rs":"b7e91477c00ef39de819eaf8768f4ebffb379e2e03a8f34d7d802186022466d1","src/api/mod.rs":"20a3fc562b59b3d21a70d0c8eedb539347f28fbaad66cc08f36c65d61083a879","src/api/structs.rs":"eae40605f7f0dc9ba73d1ee1101da24d48f3b6518bbaf5654d342ff7964415ac","src/lib.rs":"f87643e20b46bd0a1357e7444706a85dd0e8195971330f083f27eae3950763b9","src/serde.rs":"5ccbc647a699067dcc8320252e773ece6af82fe2910c71871bb50730d7590cf4","src/types.rs":"658011b06efa084615ca0fb09b20b67d4eb0c04e4c600b09cddd34cab9c9abe8","src/updater.rs":"699e45fa975e12e0dcc0e2f69649ec1ebeaee87c6ef593ea1d0dd2a3f6c2146b","src/util.rs":"0fc90af07d904d18bd008291494936db8a65662f320acfb8e7d9cf259de625b7","tests/allof.rs":"44a776563e8fd66519cafd274a7188d448b56474f7522d898d37e2f919c4318b","tests/api1.rs":"494e9360a35eee79cb6c4afbb374540aaa0d743459105b75f3a3155cf4883384","tests/api2.rs":"2b238982c2582ca9145f842e495772d6c65e1e509356d9e451e29970b0b01544","tests/ext-schema.rs":"cb2ff7aef371721ce84b9ff57ba06af553f52336f165bf76754732dd2b28d032","tests/int-limits.rs":"9daba02a0ffe128961298b43a4fe83b8edc4c76a43285e610f481670e02ab5a6","tests/options.rs":"12faf5ba2761318bd454d6bc85ac5e9e1e344318b40851742d8eb8f5209576f0","tests/types.rs":"a73e1282a5ab3c5215c1f64b9349181b949edd847aa2d76cf9193ce95dd4a074","tests/updater.rs":"6d1abad2ac9be5ecc3ae9f4565b2e445f1e033941545a8f600fcc9b78f0fc937"},"package":null} {"files":{"Cargo.toml":"2d40040a480f87886f2c26c28d2350913cc907218396c0f9ec64d8d0f42c9132","src/api/attributes.rs":"c6bd55dcb71472ece5bdf0368396f8da648c6175fe81698820005486db118c04","src/api/enums.rs":"3a6fc219d66d97314a6b063fc734fce9bf1dad020922e6e74f27e3b61332a918","src/api/method.rs":"b7e91477c00ef39de819eaf8768f4ebffb379e2e03a8f34d7d802186022466d1","src/api/mod.rs":"20a3fc562b59b3d21a70d0c8eedb539347f28fbaad66cc08f36c65d61083a879","src/api/structs.rs":"eae40605f7f0dc9ba73d1ee1101da24d48f3b6518bbaf5654d342ff7964415ac","src/lib.rs":"f87643e20b46bd0a1357e7444706a85dd0e8195971330f083f27eae3950763b9","src/serde.rs":"5ccbc647a699067dcc8320252e773ece6af82fe2910c71871bb50730d7590cf4","src/types.rs":"658011b06efa084615ca0fb09b20b67d4eb0c04e4c600b09cddd34cab9c9abe8","src/updater.rs":"699e45fa975e12e0dcc0e2f69649ec1ebeaee87c6ef593ea1d0dd2a3f6c2146b","src/util.rs":"0fc90af07d904d18bd008291494936db8a65662f320acfb8e7d9cf259de625b7","tests/allof.rs":"44a776563e8fd66519cafd274a7188d448b56474f7522d898d37e2f919c4318b","tests/api1.rs":"494e9360a35eee79cb6c4afbb374540aaa0d743459105b75f3a3155cf4883384","tests/api2.rs":"2b238982c2582ca9145f842e495772d6c65e1e509356d9e451e29970b0b01544","tests/ext-schema.rs":"cb2ff7aef371721ce84b9ff57ba06af553f52336f165bf76754732dd2b28d032","tests/int-limits.rs":"9daba02a0ffe128961298b43a4fe83b8edc4c76a43285e610f481670e02ab5a6","tests/options.rs":"12faf5ba2761318bd454d6bc85ac5e9e1e344318b40851742d8eb8f5209576f0","tests/types.rs":"a73e1282a5ab3c5215c1f64b9349181b949edd847aa2d76cf9193ce95dd4a074","tests/updater.rs":"6d1abad2ac9be5ecc3ae9f4565b2e445f1e033941545a8f600fcc9b78f0fc937"},"package":null}

View File

@ -1,12 +1,22 @@
[package] # THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
name = "proxmox-api-macro" #
edition = "2018" # When uploading crates to the registry Cargo will automatically
version = "1.0.3" # "normalize" Cargo.toml files for maximal compatibility
authors = [ "Wolfgang Bumiller <w.bumiller@proxmox.com>" ] # with all versions of Cargo and also rewrite `path` dependencies
license = "AGPL-3" # to registry (e.g., crates.io) dependencies.
description = "Proxmox API macro" #
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
exclude = [ "debian" ] [package]
edition = "2018"
name = "proxmox-api-macro"
version = "1.0.3"
authors = ["Wolfgang Bumiller <w.bumiller@proxmox.com>"]
exclude = ["debian"]
description = "Proxmox API macro"
license = "AGPL-3"
[lib] [lib]
proc-macro = true proc-macro = true
@ -15,24 +25,32 @@ proc-macro = true
anyhow = "1.0" anyhow = "1.0"
proc-macro2 = "1.0" proc-macro2 = "1.0"
quote = "1.0" quote = "1.0"
syn = { version = "1.0", features = [ "extra-traits", "full", "visit-mut" ] }
[dependencies.syn]
version = "1.0"
features = [
"extra-traits",
"full",
"visit-mut",
]
[dev-dependencies] [dev-dependencies]
futures = "0.3" futures = "0.3"
serde = { version = "1.0", features = [ "derive" ] }
serde_json = "1.0" serde_json = "1.0"
[dev-dependencies.proxmox-schema]
version = "1.0.0"
path = "../proxmox-schema"
features = [ "test-harness", "api-macro" ]
[dev-dependencies.proxmox-router] [dev-dependencies.proxmox-router]
version = "1.0.0" version = "1.0.0"
path = "../proxmox-router" path = "../proxmox-router"
features = [ "test-harness" ] features = ["test-harness"]
# [features] [dev-dependencies.proxmox-schema]
# # Used to quickly filter out the serde derive noise when using `cargo expand` for debugging! version = "1.0.0"
# # Add this in case you need it, but don't commit it (to avoid debcargo picking this up)! path = "../proxmox-schema"
# noserde = [] features = [
"test-harness",
"api-macro",
]
[dev-dependencies.serde]
version = "1.0"
features = ["derive"]

File diff suppressed because one or more lines are too long

View File

@ -1,16 +1,26 @@
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package] [package]
edition = "2021"
name = "proxmox-apt" name = "proxmox-apt"
version = "0.9.2" version = "0.9.2"
authors = [ authors = [
"Fabian Ebner <f.ebner@proxmox.com>", "Fabian Ebner <f.ebner@proxmox.com>",
"Proxmox Support Team <support@proxmox.com>", "Proxmox Support Team <support@proxmox.com>",
] ]
edition = "2021" exclude = ["debian"]
license = "AGPL-3"
description = "Proxmox library for APT" description = "Proxmox library for APT"
homepage = "https://www.proxmox.com" homepage = "https://www.proxmox.com"
license = "AGPL-3"
exclude = [ "debian" ]
[lib] [lib]
name = "proxmox_apt" name = "proxmox_apt"
@ -22,7 +32,12 @@ hex = "0.4.3"
once_cell = "1.3.1" once_cell = "1.3.1"
openssl = "0.10" openssl = "0.10"
rfc822-like = "0.2.1" rfc822-like = "0.2.1"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0.41" serde_json = "1.0.41"
proxmox-schema = { version = "1", features = [ "api-macro" ] } [dependencies.proxmox-schema]
version = "1"
features = ["api-macro"]
[dependencies.serde]
version = "1.0"
features = ["derive"]

View File

@ -1 +1 @@
{"files":{"Cargo.toml":"a94751bfe246a4e8af16095f9284da1725598a79dbe5853c96e8cbcb97989429","src/client/connector.rs":"60967522fabf9306898efd1543c056b56c88880c0328e571d183e99c743093cc","src/client/mod.rs":"9d3a02706974e573377cd9b6575cfa24eab8ce6af8cebfe70b4869b57c2c4edc","src/client/rate_limited_stream.rs":"bde1c53a2b4b45ef251a85bd91ec477421541d45c55ad3d6b395b18643bd8d26","src/client/rate_limiter.rs":"19a3d4d9192079a61e47bad3eb0b1e2639b83beb9eb0ab9bc67ec63048d63c37","src/client/simple.rs":"3da764ad7daff74e2335962762dd2cca6b0b5eadbfe2f822f7e764d6c6d81d89","src/client/sync.rs":"416f7572d16d323f5283d741032d6025dd23ef5b0fb19a2ed80ff4acde053d59","src/client/tls.rs":"31af1bb8eeaa53f5de06d5000839c99e8bf9559984ab4c6d1ae58f8dea76ba2d","src/client_trait.rs":"123c7977bdd7bd33731cb8d0f3d0a6cf8793755d6cf3a20884df1ef522d4eece","src/http_options.rs":"083a6ec2cd20dee74590a6da994f2aaa8d1d60b4e61949afe519b2bfa9729fcb","src/lib.rs":"73bcf7cd31416936f9fde25166fcafe6008aea60aafda766d68d630e7c45d3f3","src/proxy_config.rs":"fa593b46d0628e36a18a56c4e902be547688c53d6e286df1e3f301848928e07c","src/uri.rs":"2acb95a8700e3bc06ee348011caa0756f6ac63300167d70085e263023bb498ca","src/websocket/mod.rs":"103afc1df63d83870e025259a1892642fb60611f239d0ed689fedadd6f3e2942"},"package":null} {"files":{"Cargo.toml":"27f3c99aa71065f17b5c37556e441f897fdd46378471c527e77b9fc778a81ae8","src/client/connector.rs":"60967522fabf9306898efd1543c056b56c88880c0328e571d183e99c743093cc","src/client/mod.rs":"9d3a02706974e573377cd9b6575cfa24eab8ce6af8cebfe70b4869b57c2c4edc","src/client/rate_limited_stream.rs":"bde1c53a2b4b45ef251a85bd91ec477421541d45c55ad3d6b395b18643bd8d26","src/client/rate_limiter.rs":"19a3d4d9192079a61e47bad3eb0b1e2639b83beb9eb0ab9bc67ec63048d63c37","src/client/simple.rs":"3da764ad7daff74e2335962762dd2cca6b0b5eadbfe2f822f7e764d6c6d81d89","src/client/sync.rs":"416f7572d16d323f5283d741032d6025dd23ef5b0fb19a2ed80ff4acde053d59","src/client/tls.rs":"31af1bb8eeaa53f5de06d5000839c99e8bf9559984ab4c6d1ae58f8dea76ba2d","src/client_trait.rs":"123c7977bdd7bd33731cb8d0f3d0a6cf8793755d6cf3a20884df1ef522d4eece","src/http_options.rs":"083a6ec2cd20dee74590a6da994f2aaa8d1d60b4e61949afe519b2bfa9729fcb","src/lib.rs":"73bcf7cd31416936f9fde25166fcafe6008aea60aafda766d68d630e7c45d3f3","src/proxy_config.rs":"fa593b46d0628e36a18a56c4e902be547688c53d6e286df1e3f301848928e07c","src/uri.rs":"2acb95a8700e3bc06ee348011caa0756f6ac63300167d70085e263023bb498ca","src/websocket/mod.rs":"103afc1df63d83870e025259a1892642fb60611f239d0ed689fedadd6f3e2942"},"package":null}

View File

@ -1,41 +1,117 @@
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package] [package]
name = "proxmox-http"
edition = "2018" edition = "2018"
name = "proxmox-http"
version = "0.7.0" version = "0.7.0"
authors = [ authors = [
"Dietmar Maurer <dietmar@proxmox.com>", "Dietmar Maurer <dietmar@proxmox.com>",
"Wolfgang Bumiller <w.bumiller@proxmox.com>", "Wolfgang Bumiller <w.bumiller@proxmox.com>",
] ]
license = "AGPL-3" exclude = ["debian"]
description = "Proxmox HTTP library" description = "Proxmox HTTP library"
license = "AGPL-3"
exclude = [ "debian" ]
[dependencies] [dependencies]
anyhow = "1.0" anyhow = "1.0"
base64 = { version = "0.13", optional = true }
futures = { version = "0.3", optional = true }
http = { version = "0.2", optional = true }
hyper = { version = "0.14", default_features = false, optional = true }
openssl = { version = "0.10", optional = true }
serde_json = { version = "1.0", optional = true }
tokio = { version = "1.0", features = [], optional = true }
tokio-openssl = { version = "0.6.1", optional = true }
ureq = { version = "2.4", features = ["native-certs"], optional = true }
url = { version = "2", optional = true }
proxmox-async = { path = "../proxmox-async", optional = true, version = "0.4.1" } [dependencies.base64]
proxmox-sys = { path = "../proxmox-sys", optional = true, version = "0.4" } version = "0.13"
proxmox-io = { path = "../proxmox-io", optional = true, version = "1.0.0" } optional = true
proxmox-lang = { path = "../proxmox-lang", optional = true, version = "1.1" }
[dependencies.futures]
version = "0.3"
optional = true
[dependencies.http]
version = "0.2"
optional = true
[dependencies.hyper]
version = "0.14"
optional = true
default_features = false
[dependencies.openssl]
version = "0.10"
optional = true
[dependencies.proxmox-async]
version = "0.4.1"
path = "../proxmox-async"
optional = true
[dependencies.proxmox-io]
version = "1.0.0"
path = "../proxmox-io"
optional = true
[dependencies.proxmox-lang]
version = "1.1"
path = "../proxmox-lang"
optional = true
[dependencies.proxmox-sys]
version = "0.4"
path = "../proxmox-sys"
optional = true
[dependencies.serde_json]
version = "1.0"
optional = true
[dependencies.tokio]
version = "1.0"
features = []
optional = true
[dependencies.tokio-openssl]
version = "0.6.1"
optional = true
[dependencies.ureq]
version = "2.4"
features = ["native-certs"]
optional = true
[dependencies.url]
version = "2"
optional = true
[features] [features]
client = [
"dep:futures",
"http-helpers",
"dep:hyper",
"hyper?/full",
"dep:openssl",
"dep:tokio",
"tokio?/io-util",
"dep:tokio-openssl",
]
client-sync = [
"client-trait",
"http-helpers",
"dep:ureq",
]
client-trait = ["dep:http"]
default = [] default = []
http-helpers = [
client = [ "dep:futures", "http-helpers", "dep:hyper", "hyper?/full", "dep:openssl", "dep:tokio", "tokio?/io-util", "dep:tokio-openssl" ] "dep:base64",
client-sync = [ "client-trait", "http-helpers", "dep:ureq" ] "dep:http",
client-trait = [ "dep:http" ] "dep:proxmox-sys",
http-helpers = [ "dep:base64", "dep:http", "dep:proxmox-sys", "dep:serde_json", "dep:url" ] "dep:serde_json",
"dep:url",
]
websocket = [ websocket = [
"dep:base64", "dep:base64",
"dep:futures", "dep:futures",

View File

@ -1 +1 @@
{"files":{"Cargo.toml":"0d4792823e137ebe7f44914db14976885cac25b830ca7dc5d6e4aed99f0e8844","src/byte_buffer.rs":"abd3798a9fde5ac6561c7103721a6c53834698f539834d7ada28fa6b5d734744","src/lib.rs":"3079f0a7302d3706bdcacabfddb4e2e108511312c53b3dce65b716715012ed19","src/read.rs":"475ad96a2a3f5e00579b3e56bf272b08a6f5001b99d6c985835665f2b7872cdc","src/sparse_copy.rs":"24f438e1c25ab956209a47636aa1898f813281f0878241081536e1a5734af0fa","src/std_channel_writer.rs":"e11c6206404345d44c6622f2ebacf786d2b8aaf5b73fc267acefbb20d74bda0e","src/vec/byte_vec.rs":"5f0417c31fe084753c46ea1f8ae9a36beca1d48c8ba7f98f97d4f35fe1400570","src/vec/mod.rs":"86afaa1d50acb53f201028268960a1721d9f02067e19d7be0eeb6f582130621d","src/write.rs":"29b1306a6eef683dd281e17741e0f7473972ecb8ee0f101471c84bf5c29c0a8f"},"package":null} {"files":{"Cargo.toml":"bd5541d9b7207700190f6d4f708c1cb015257d1d3e63747bd5874e181105195b","src/byte_buffer.rs":"abd3798a9fde5ac6561c7103721a6c53834698f539834d7ada28fa6b5d734744","src/lib.rs":"3079f0a7302d3706bdcacabfddb4e2e108511312c53b3dce65b716715012ed19","src/read.rs":"475ad96a2a3f5e00579b3e56bf272b08a6f5001b99d6c985835665f2b7872cdc","src/sparse_copy.rs":"24f438e1c25ab956209a47636aa1898f813281f0878241081536e1a5734af0fa","src/std_channel_writer.rs":"e11c6206404345d44c6622f2ebacf786d2b8aaf5b73fc267acefbb20d74bda0e","src/vec/byte_vec.rs":"5f0417c31fe084753c46ea1f8ae9a36beca1d48c8ba7f98f97d4f35fe1400570","src/vec/mod.rs":"86afaa1d50acb53f201028268960a1721d9f02067e19d7be0eeb6f582130621d","src/write.rs":"29b1306a6eef683dd281e17741e0f7473972ecb8ee0f101471c84bf5c29c0a8f"},"package":null}

View File

@ -1,14 +1,28 @@
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package] [package]
edition = "2018"
name = "proxmox-io" name = "proxmox-io"
version = "1.0.1" version = "1.0.1"
authors = ["Proxmox Support Team <support@proxmox.com>"] authors = ["Proxmox Support Team <support@proxmox.com>"]
edition = "2018" exclude = ["debian"]
license = "AGPL-3"
description = "extension traits for Read and Write" description = "extension traits for Read and Write"
license = "AGPL-3"
exclude = [ "debian" ] [dependencies.endian_trait]
version = "0.6"
features = ["arrays"]
[dependencies] [dependencies.tokio]
endian_trait = { version = "0.6", features = ["arrays"] } version = "1.0"
# this is also the feature name: features = ["io-util"]
tokio = { version = "1.0", features = [ "io-util" ], optional = true } optional = true

View File

@ -1 +1 @@
{"files":{"Cargo.toml":"3ca70b9875c0ec34e81009184bddf9577f5640e8d266d7fe36eb9228774fb70e","src/constnamedbitmap.rs":"d090244219f26828357efa56b8e0f645aab14e6651d0107217d937ab7476eea6","src/error.rs":"5d667969377bea1fcd5a7da58e106b756d221b2b146f1481907a8a5c9866e8af","src/lib.rs":"d251d726369f6906f9db5354777d224ef8af295ee83a3cf865d379fddc6e8610","src/ops.rs":"4b39911ac5ef8faa20968e754cf16d3ed94112d0ec676020e3b9d377e3a55e3a"},"package":null} {"files":{"Cargo.toml":"bc4e5cde0cbeb4e1ebd781986f0e1fb7f87121a4a6b986c0358e18125c060354","src/constnamedbitmap.rs":"d090244219f26828357efa56b8e0f645aab14e6651d0107217d937ab7476eea6","src/error.rs":"5d667969377bea1fcd5a7da58e106b756d221b2b146f1481907a8a5c9866e8af","src/lib.rs":"d251d726369f6906f9db5354777d224ef8af295ee83a3cf865d379fddc6e8610","src/ops.rs":"4b39911ac5ef8faa20968e754cf16d3ed94112d0ec676020e3b9d377e3a55e3a"},"package":null}

View File

@ -1,11 +1,21 @@
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package] [package]
edition = "2018"
name = "proxmox-lang" name = "proxmox-lang"
version = "1.1.0" version = "1.1.0"
authors = ["Proxmox Support Team <support@proxmox.com>"] authors = ["Proxmox Support Team <support@proxmox.com>"]
edition = "2018" exclude = ["debian"]
license = "AGPL-3"
description = "simple rust language utilities such as try_block, which have no dependencies" description = "simple rust language utilities such as try_block, which have no dependencies"
license = "AGPL-3"
exclude = [ "debian" ]
[dependencies] [dependencies]

View File

@ -1 +1 @@
{"files":{".cargo/config":"37beff0fa7970cf880e0ca1d4b564c22cb48f8b606155656d02e9da3fb2e415a","Cargo.toml":"b8cbdbff80a730fe04b5f7621c9796af22c7464c98d2e79688a78f8b18a84d22","Makefile":"effc5f1ba9c04515ffa157d51120819bea4e62dcafc7897e75c5f8045f2695a5","src/auth_state.rs":"3f5f4940d018e644606191204846577808ab974a03ce9b9e15c5bc12dd726a40","src/http_client.rs":"075aed48436441417aba32a673fa90c485517207401a243646a01142dd2983c9","src/lib.rs":"45da5262a412ead5e3e6174d309e521ea0cdbf27eb69921cb5dc5803afcb0f77"},"package":null} {"files":{".cargo/config":"37beff0fa7970cf880e0ca1d4b564c22cb48f8b606155656d02e9da3fb2e415a","Cargo.toml":"c7623bd84a447a018dc266bc898719000c3db0582e0fd9d30e2d622ecf1218a3","Makefile":"effc5f1ba9c04515ffa157d51120819bea4e62dcafc7897e75c5f8045f2695a5","src/auth_state.rs":"3f5f4940d018e644606191204846577808ab974a03ce9b9e15c5bc12dd726a40","src/http_client.rs":"075aed48436441417aba32a673fa90c485517207401a243646a01142dd2983c9","src/lib.rs":"45da5262a412ead5e3e6174d309e521ea0cdbf27eb69921cb5dc5803afcb0f77"},"package":null}

View File

@ -1,13 +1,24 @@
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package] [package]
edition = "2018"
name = "proxmox-openid" name = "proxmox-openid"
version = "0.9.7" version = "0.9.7"
authors = ["Dietmar Maurer <dietmar@proxmox.com>"] authors = ["Dietmar Maurer <dietmar@proxmox.com>"]
edition = "2018"
license = "AGPL-3"
exclude = [ exclude = [
"build", "build",
"debian", "debian",
] ]
license = "AGPL-3"
[lib] [lib]
name = "proxmox_openid" name = "proxmox_openid"
@ -16,14 +27,30 @@ path = "src/lib.rs"
[dependencies] [dependencies]
anyhow = "1.0" anyhow = "1.0"
http = "0.2" http = "0.2"
nix = "0.24"
openidconnect = { version = "2.2", default-features = false, features = ["accept-rfc3339-timestamps"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
thiserror="1.0"
ureq = { version = "2.4", default-features = false, features = ["native-tls", "gzip"] }
native-tls = "0.2" native-tls = "0.2"
nix = "0.24"
proxmox-time = "1"
serde_json = "1.0"
thiserror = "1.0"
url = "2.1" url = "2.1"
proxmox-time = "1" [dependencies.openidconnect]
proxmox-sys = { version = "0.4", features = ["timer"] } version = "2.2"
features = ["accept-rfc3339-timestamps"]
default-features = false
[dependencies.proxmox-sys]
version = "0.4"
features = ["timer"]
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.ureq]
version = "2.4"
features = [
"native-tls",
"gzip",
]
default-features = false

View File

@ -0,0 +1 @@
{"files":{".cargo/config":"37beff0fa7970cf880e0ca1d4b564c22cb48f8b606155656d02e9da3fb2e415a","Cargo.toml":"d86a5c601961c3b5d35de62b62469b9dd0311b15c7e8aa033a47fb05ad3995f3","Makefile":"9f3688645028010aa991581b866a6cc221f97667bd2923d437307dc628983f00","rustfmt.toml":"f1a22634bbffec62822faa208b352d302c19c2f70e29e57613b9df18d7c2fc36","src/lib.rs":"a785020c064988f1b52aec829b92dab0736d74517744d38abd6bf6d31eda4b50","src/pve_static.rs":"0ef9c637a090015c7623aeb682c3eb7518def7f4b957ad716802b954dbbf2fbe","src/topsis.rs":"0bcbfa0e60af2ddf9cc3c87f5c3ed8a7857ac961d7a88fb1044edacd7d88c105","tests/topsis.rs":"eab19f720ad9dd070b4e2ab4a95ef5787d4ba18400c9b539dbc4488a54ef9bc2"},"package":null}

View File

@ -0,0 +1,5 @@
[source]
[source.debian-packages]
directory = "/usr/share/cargo/registry"
[source.crates-io]
replace-with = "debian-packages"

View File

@ -0,0 +1,31 @@
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package]
edition = "2021"
name = "proxmox-resource-scheduling"
version = "0.1.0"
authors = [
"Fiona Ebner <f.ebner@proxmox.com>",
"Proxmox Support Team <support@proxmox.com>",
]
exclude = ["debian"]
description = "Proxmox library for resource scheduling"
homepage = "https://www.proxmox.com"
license = "AGPL-3"
[dependencies]
anyhow = "1.0"
lazy_static = "1.4"
[dependencies.serde]
version = "1.0"
features = ["derive"]

View File

@ -0,0 +1,67 @@
include /usr/share/dpkg/pkg-info.mk
include /usr/share/dpkg/architecture.mk
PACKAGE=proxmox-resource-scheduling
BUILDDIR ?= $(PACKAGE)-$(DEB_VERSION_UPSTREAM)
BUILDDIR_TMP ?= $(BUILDDIR).tmp
DEB=librust-$(PACKAGE)-dev_$(DEB_VERSION_UPSTREAM_REVISION)_$(DEB_BUILD_ARCH).deb
DSC=rust-$(PACKAGE)_$(DEB_VERSION_UPSTREAM_REVISION).dsc
ifeq ($(BUILD_MODE), release)
CARGO_BUILD_ARGS += --release
COMPILEDIR := target/release
else
COMPILEDIR := target/debug
endif
all: cargo-build $(SUBDIRS)
.PHONY: cargo-build
cargo-build:
cargo build $(CARGO_BUILD_ARGS)
.PHONY: build
build:
rm -rf $(BUILDDIR) $(BUILDDIR_TMP); mkdir $(BUILDDIR_TMP)
rm -f debian/control
debcargo package \
--config debian/debcargo.toml \
--changelog-ready \
--no-overlay-write-back \
--directory $(BUILDDIR_TMP) \
$(PACKAGE) \
$(shell dpkg-parsechangelog -l debian/changelog -SVersion | sed -e 's/-.*//')
cp $(BUILDDIR_TMP)/debian/control debian/control
rm -f $(BUILDDIR_TMP)/Cargo.lock
find $(BUILDDIR_TMP)/debian -name "*.hint" -delete
mv $(BUILDDIR_TMP) $(BUILDDIR)
.PHONY: deb
deb: $(DEB)
$(DEB): build
cd $(BUILDDIR); dpkg-buildpackage -b -us -uc --no-pre-clean
lintian $(DEB)
.PHONY: dsc
dsc: $(DSC)
$(DSC): build
cd $(BUILDDIR); dpkg-buildpackage -S -us -uc -d -nc
lintian $(DSC)
.PHONY: dinstall
dinstall: $(DEB)
dpkg -i $(DEB)
.PHONY: upload
upload: $(DEB)
tar cf - $(DEB) | ssh -X repoman@repo.proxmox.com -- upload --product devel --dist bullseye --arch $(DEB_BUILD_ARCH)
.PHONY: distclean
distclean: clean
.PHONY: clean
clean:
cargo clean
rm -rf *.deb *.buildinfo *.changes *.dsc rust-$(PACKAGE)_*.tar.?z $(BUILDDIR) $(BUILDDIR_TMP)
find . -name '*~' -exec rm {} ';'

View File

@ -0,0 +1 @@
edition = "2021"

View File

@ -0,0 +1,4 @@
#[macro_use]
pub mod topsis;
pub mod pve_static;

View File

@ -0,0 +1,125 @@
use anyhow::Error;
use serde::{Deserialize, Serialize};
use crate::topsis;
#[derive(Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
/// Static usage information of a node.
pub struct StaticNodeUsage {
/// Hostname of the node.
pub name: String,
/// CPU utilization. Can be more than `maxcpu` if overcommited.
pub cpu: f64,
/// Total number of CPUs.
pub maxcpu: usize,
/// Used memory in bytes. Can be more than `maxmem` if overcommited.
pub mem: usize,
/// Total memory in bytes.
pub maxmem: usize,
}
impl StaticNodeUsage {
/// Add usage of `service` to the node's usage.
pub fn add_service_usage(&mut self, service: &StaticServiceUsage) {
self.cpu = add_cpu_usage(self.cpu, self.maxcpu as f64, service.maxcpu);
self.mem += service.maxmem;
}
}
/// Calculate new CPU usage in percent.
/// `add` being `0.0` means "unlimited" and results in `max` being added.
fn add_cpu_usage(old: f64, max: f64, add: f64) -> f64 {
if add == 0.0 {
old + max
} else {
old + add
}
}
#[derive(Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
/// Static usage information of an HA resource.
pub struct StaticServiceUsage {
/// Number of assigned CPUs or CPU limit.
pub maxcpu: f64,
/// Maximum assigned memory in bytes.
pub maxmem: usize,
}
criteria_struct! {
/// A given alternative.
struct PveTopsisAlternative {
#[criterion("average CPU", -1.0)]
average_cpu: f64,
#[criterion("highest CPU", -2.0)]
highest_cpu: f64,
#[criterion("average memory", -5.0)]
average_memory: f64,
#[criterion("highest memory", -10.0)]
highest_memory: f64,
}
const N_CRITERIA;
static PVE_HA_TOPSIS_CRITERIA;
}
/// Scores candidate `nodes` to start a `service` on. Scoring is done according to the static memory
/// and CPU usages of the nodes as if the service would already be running on each.
///
/// Returns a vector of (nodename, score) pairs. Scores are between 0.0 and 1.0 and a higher score
/// is better.
pub fn score_nodes_to_start_service(
nodes: &[&StaticNodeUsage],
service: &StaticServiceUsage,
) -> Result<Vec<(String, f64)>, Error> {
let len = nodes.len();
let matrix = nodes
.iter()
.enumerate()
.map(|(target_index, _)| {
// all of these are as percentages to be comparable across nodes
let mut highest_cpu = 0.0;
let mut sum_cpu = 0.0;
let mut highest_mem = 0.0;
let mut sum_mem = 0.0;
for (index, node) in nodes.iter().enumerate() {
let new_cpu = if index == target_index {
add_cpu_usage(node.cpu, node.maxcpu as f64, service.maxcpu)
} else {
node.cpu
} / (node.maxcpu as f64);
highest_cpu = f64::max(highest_cpu, new_cpu);
sum_cpu += new_cpu;
let new_mem = if index == target_index {
node.mem + service.maxmem
} else {
node.mem
} as f64
/ node.maxmem as f64;
highest_mem = f64::max(highest_mem, new_mem);
sum_mem += new_mem;
}
PveTopsisAlternative {
average_cpu: sum_cpu / len as f64,
highest_cpu,
average_memory: sum_mem / len as f64,
highest_memory: highest_mem,
}
.into()
})
.collect::<Vec<_>>();
let scores =
topsis::score_alternatives(&topsis::Matrix::new(matrix)?, &PVE_HA_TOPSIS_CRITERIA)?;
Ok(scores
.into_iter()
.enumerate()
.map(|(n, score)| (nodes[n].name.clone(), score))
.collect())
}

View File

@ -0,0 +1,247 @@
use anyhow::{bail, Error};
fn differences<const N: usize>(xs: &[f64; N], ys: &[f64; N]) -> [f64; N] {
// Uses SSE optimizations
let mut differences = [0.0; N];
for n in 0..N {
differences[n] = xs[n] - ys[n];
}
differences
// while fails to optimize:
// std::array:from_fn(|i| xs[i] - ys[i])
}
/// Calculate the L^2-norm of the given values.
fn l2_norm(values: impl IntoIterator<Item = f64>) -> f64 {
values.into_iter().map(|v| v * v).sum::<f64>().sqrt()
}
/// A criterion that can be used when scoring with the TOPSIS algorithm.
pub struct Criterion {
/// Name of the criterion.
name: String,
/// The relative weight of the criterion. Is non-negative.
weight: f64,
/// Whether it's good to maximize or minimize the criterion.
maximize: bool,
}
impl Criterion {
/// Construct a new `Criterion`. Use a negative weight if the value for the criterion
/// should be minimized rather than maximized.
///
/// Assumes that `weight` is finite.
pub fn new(name: String, weight: f64) -> Self {
let (maximize, weight) = if weight >= 0.0 {
(true, weight)
} else {
(false, -weight)
};
Criterion {
name,
weight,
maximize,
}
}
}
/// A normalized array of `Criterion`.
pub struct Criteria<const N_CRITERIA: usize>([Criterion; N_CRITERIA]);
impl<const N: usize> Criteria<N> {
/// Create a new instance of normalized TOPSIS criteria.
///
/// Assumes that the sum of weights can be calculated to a finite, non-zero value.
pub fn new(mut criteria: [Criterion; N]) -> Result<Self, Error> {
let divisor: f64 = criteria.iter().map(|c| c.weight).sum();
if divisor == 0.0 {
bail!("no criterion has a non-zero weight");
}
for criterion in criteria.iter_mut() {
criterion.weight /= divisor;
if criterion.weight > 1.0 || criterion.weight < 0.0 || !criterion.weight.is_finite() {
bail!(
"criterion '{}' got invalid weight {}",
criterion.name,
criterion.weight
);
}
}
Ok(Criteria(criteria))
}
/// Weigh each value according to the weight of its corresponding criterion.
pub fn weigh(&self, mut values: [f64; N]) -> [f64; N] {
for (n, value) in values.iter_mut().enumerate() {
*value *= self.0[n].weight;
}
values
}
}
/// A normalized matrix used for scoring with the TOPSIS algorithm.
pub struct Matrix<const N_CRITERIA: usize>(Vec<[f64; N_CRITERIA]>);
impl<const N: usize> Matrix<N> {
/// Values of the matrix for the fixed critierion with index `index`.
fn fixed_criterion(&self, index: usize) -> impl Iterator<Item = f64> + Clone + '_ {
self.0.iter().map(move |alternative| alternative[index])
}
/// Mutable values of the matrix for the fixed critierion with index `index`.
fn fixed_criterion_mut(&mut self, index: usize) -> impl Iterator<Item = &mut f64> {
self.0
.iter_mut()
.map(move |alternative| &mut alternative[index])
}
/// Create a normalized `Matrix` based on the given values.
///
/// Assumes that the sum of squares for each fixed criterion in `matrix` can be calculated to a
/// finite value.
pub fn new(matrix: Vec<[f64; N]>) -> Result<Self, Error> {
let mut matrix = Matrix(matrix);
for n in 0..N {
let divisor = l2_norm(matrix.fixed_criterion(n));
// If every alternative has zero value for the given criterion, keep it like that.
if divisor != 0.0 {
for value in matrix.fixed_criterion_mut(n) {
*value /= divisor;
if !value.is_finite() {
bail!("criterion {} got invalid value {}", n, value);
}
}
}
}
Ok(matrix)
}
}
/// Idealized alternatives from a `Matrix`. That is, the alternative consisting of the best
/// (respectively worst) value among the alternatives in the matrix for each single criterion.
struct IdealAlternatives<const N_CRITERIA: usize> {
best: [f64; N_CRITERIA],
worst: [f64; N_CRITERIA],
}
impl<const N: usize> IdealAlternatives<N> {
/// Compute the idealized alternatives from the given `matrix`. The `criteria` are required to know
/// if a critierion should be maximized or minimized.
fn compute(matrix: &Matrix<N>, criteria: &Criteria<N>) -> Self {
let criteria = &criteria.0;
let mut best = [0.0; N];
let mut worst = [0.0; N];
for n in 0..N {
let fixed_criterion = matrix.fixed_criterion(n);
let min = fixed_criterion
.clone()
.min_by(|a, b| a.total_cmp(b))
.unwrap();
let max = fixed_criterion.max_by(|a, b| a.total_cmp(b)).unwrap();
(best[n], worst[n]) = match criteria[n].maximize {
true => (max, min),
false => (min, max),
}
}
Self { best, worst }
}
}
/// Scores the alternatives in `matrix` according to their similarity to the ideal worst
/// alternative. Scores range from 0.0 to 1.0 and a low score indicates closness to the ideal worst
/// and/or distance to the ideal best alternatives.
pub fn score_alternatives<const N: usize>(
matrix: &Matrix<N>,
criteria: &Criteria<N>,
) -> Result<Vec<f64>, Error> {
let ideal = IdealAlternatives::compute(matrix, criteria);
let mut scores = vec![];
for alternative in matrix.0.iter() {
let distance_to_best = l2_norm(criteria.weigh(differences(alternative, &ideal.best)));
let distance_to_worst = l2_norm(criteria.weigh(differences(alternative, &ideal.worst)));
let divisor = distance_to_worst + distance_to_best;
if divisor == 0.0 {
// Can happen if all alternatives are the same.
scores.push(0.0);
} else {
scores.push(distance_to_worst / divisor);
}
}
if let Some(score) = scores.iter().find(|score| !score.is_finite()) {
bail!("invalid score {}", score);
}
Ok(scores)
}
/// Similar to `score_alternatives`, but returns the list of indices decreasing by score.
pub fn rank_alternatives<const N: usize>(
matrix: &Matrix<N>,
criteria: &Criteria<N>,
) -> Result<Vec<usize>, Error> {
let scores = score_alternatives(matrix, criteria)?;
let mut indices: Vec<usize> = (0..scores.len()).collect();
indices.sort_by(|&a, &b| scores[b].total_cmp(&scores[a]));
Ok(indices)
}
#[macro_export]
macro_rules! criteria_struct {
(@count: $field:ident $($more:ident)*) => {
1 + $crate::criteria_struct!(@count: $($more)*)
};
(@count: ) => { 0 };
(
$(#[$attr:meta])*
struct $name:ident {
$(
#[criterion($crit_name:literal, $crit_weight:literal)]
$(#[$field_attr:meta])*
$field:ident : $type:ty,
)*
}
const $count_name:ident;
static $criteria_name:ident;
) => {
const $count_name: usize = $crate::criteria_struct!(@count: $($field)*);
$(#[$attr])*
struct $name {
$(
$(#[$field_attr])*
$field: $type,
)*
}
::lazy_static::lazy_static! {
static ref $criteria_name: $crate::topsis::Criteria<$count_name> =
$crate::topsis::Criteria::new([
$(
$crate::topsis::Criterion::new($crit_name.to_string(), $crit_weight),
)*
])
.unwrap();
}
impl From<$name> for [f64; $count_name] {
fn from(alternative: $name) -> Self {
[ $( alternative.$field, )* ]
}
}
};
}

View File

@ -0,0 +1,289 @@
use anyhow::Error;
use proxmox_resource_scheduling::topsis::{rank_alternatives, Criteria, Criterion, Matrix};
#[test]
fn test_topsis_single_criterion() -> Result<(), Error> {
let criteria_pos = Criteria::new([Criterion::new("the one and only".to_string(), 1.0)])?;
let criteria_neg = Criteria::new([Criterion::new("the one and only".to_string(), -1.0)])?;
let matrix = vec![[0.0]];
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_pos)?,
vec![0],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix)?, &criteria_neg)?,
vec![0],
);
let matrix = vec![[0.0], [2.0]];
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_pos)?,
vec![1, 0],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix)?, &criteria_neg)?,
vec![0, 1],
);
let matrix = vec![[1.0], [2.0]];
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_pos)?,
vec![1, 0],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix)?, &criteria_neg)?,
vec![0, 1],
);
let matrix = vec![[1.0], [2.0], [5.0], [3.0], [4.0]];
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_pos)?,
vec![2, 4, 3, 1, 0],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix)?, &criteria_neg)?,
vec![0, 1, 3, 4, 2],
);
let matrix = vec![[-2.0], [-5.0], [-4.0], [1.0], [-3.0]];
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_pos)?,
vec![3, 0, 4, 2, 1],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix)?, &criteria_neg)?,
vec![1, 2, 4, 0, 3],
);
Ok(())
}
#[test]
fn test_topsis_two_criteria() -> Result<(), Error> {
let criteria_max_min = Criteria::new([
Criterion::new("max".to_string(), 1.0),
Criterion::new("min".to_string(), -1.0),
])?;
let criteria_min_max = Criteria::new([
Criterion::new("min".to_string(), -1.0),
Criterion::new("max".to_string(), 1.0),
])?;
let criteria_min_min = Criteria::new([
Criterion::new("min1".to_string(), -1.0),
Criterion::new("min2".to_string(), -1.0),
])?;
let criteria_max_max = Criteria::new([
Criterion::new("max1".to_string(), 1.0),
Criterion::new("max2".to_string(), 1.0),
])?;
let matrix = vec![[0.0, 0.0]];
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_max_min)?,
vec![0],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_min_max)?,
vec![0],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_min_min)?,
vec![0],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix)?, &criteria_max_max)?,
vec![0],
);
#[rustfmt::skip]
let matrix = vec![
[0.0, 1.0],
[1.0, 0.0],
[1.0, -1.0],
[1.0, 1.0],
[0.0, 0.0],
];
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_max_min)?,
vec![2, 1, 4, 3, 0],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_min_max)?,
vec![0, 3, 4, 1, 2],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_min_min)?,
vec![2, 4, 1, 0, 3],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix)?, &criteria_max_max)?,
vec![3, 0, 1, 4, 2],
);
// This one was cross-checked with https://decision-radar.com/topsis rather than manually.
#[rustfmt::skip]
let matrix = vec![
[7.0, 4.0],
[1.0, 0.5],
[-1.0, -1.0],
[-8.5, 11.5],
[4.0, 7.0],
];
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_max_min)?,
vec![0, 1, 4, 2, 3],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_min_max)?,
vec![3, 2, 4, 1, 0],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_min_min)?,
vec![2, 3, 1, 0, 4],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix)?, &criteria_max_max)?,
vec![4, 0, 1, 3, 2],
);
Ok(())
}
#[test]
fn test_topsis_three_criteria() -> Result<(), Error> {
let criteria_first = Criteria::new([
Criterion::new("more".to_string(), 10.0),
Criterion::new("less".to_string(), 0.2),
Criterion::new("least".to_string(), 0.1),
])?;
let criteria_second = Criteria::new([
Criterion::new("less".to_string(), 0.2),
Criterion::new("more".to_string(), 10.0),
Criterion::new("least".to_string(), 0.1),
])?;
let criteria_third = Criteria::new([
Criterion::new("less".to_string(), 0.2),
Criterion::new("least".to_string(), 0.1),
Criterion::new("more".to_string(), 10.0),
])?;
let criteria_min = Criteria::new([
Criterion::new("most".to_string(), -10.0),
Criterion::new("more".to_string(), -5.0),
Criterion::new("less".to_string(), 0.1),
])?;
#[rustfmt::skip]
let matrix = vec![
[1.0, 0.0, 0.0],
[0.0, 1.0, 0.0],
[0.0, 0.0, 1.0],
];
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_first)?,
vec![0, 1, 2],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_second)?,
vec![1, 0, 2],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_third)?,
vec![2, 0, 1],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix)?, &criteria_min)?,
vec![2, 1, 0],
);
#[rustfmt::skip]
let matrix = vec![
[1.0, 0.0, 0.0],
[0.0, 1.0, 0.0],
[0.0, 0.0, 1000.0],
];
// normalization ensures that it's still the same as above
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_first)?,
vec![0, 1, 2],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_second)?,
vec![1, 0, 2],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_third)?,
vec![2, 0, 1],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix)?, &criteria_min)?,
vec![2, 1, 0],
);
#[rustfmt::skip]
let matrix = vec![
[-1.0, 0.0, 0.0],
[0.0, -1.0, 0.0],
[0.0, 0.0, 1.0],
];
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_first)?,
vec![2, 1, 0],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_second)?,
vec![2, 0, 1],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix.clone())?, &criteria_third)?,
vec![2, 1, 0],
);
assert_eq!(
rank_alternatives(&Matrix::new(matrix)?, &criteria_min)?,
vec![0, 1, 2],
);
Ok(())
}
#[test]
fn test_nan() {
#[rustfmt::skip]
let matrix = vec![
[-1.0, 0.0, 0.0],
[0.0, -1.0, 0.0],
[0.0, f64::NAN, 1.0],
];
assert!(Matrix::new(matrix).is_err());
}
#[test]
fn test_zero() -> Result<(), Error> {
let criteria_zero = Criteria::new([
Criterion::new("z".to_string(), 0.0),
Criterion::new("e".to_string(), 0.0),
Criterion::new("ro".to_string(), 0.0),
]);
assert!(criteria_zero.is_err());
let criteria_first = Criteria::new([
Criterion::new("more".to_string(), 10.0),
Criterion::new("less".to_string(), 0.2),
Criterion::new("least".to_string(), 0.1),
])?;
#[rustfmt::skip]
let matrix = vec![
[0.0, 0.0, 0.0],
[0.0, 1.0, 0.0],
[0.0, 0.0, 1.0],
];
assert_eq!(
rank_alternatives(&Matrix::new(matrix)?, &criteria_first)?,
vec![1, 2, 0],
);
Ok(())
}

View File

@ -1 +1 @@
{"files":{"Cargo.toml":"179955122f0cf8ab7036d7967dac8eec4f5497e909917b82ce4fe5005584d561","src/api_type_macros.rs":"8f3e8a4dea0570c840f1ace43f9ab840ca1df4b4786be96c0e27eba146ba0875","src/const_regex.rs":"3c3f822d09136ccd52fbd66042b2ad37fc12945bef320d7a29b38b72cbd6465b","src/de.rs":"2dfacc67ef99f8f9271d7cb5576a53df7a31ff94c4cc41571fae2a8dda23b5a0","src/format.rs":"86b67c48b8f0813ac842e3b5d02fde19a0bc4f256ce3622e2eb26e88314a8980","src/lib.rs":"5c9bf978fef770014b682f45978c65a56d95c076b82065dd8a0470bae44c9b0d","src/property_string.rs":"43866f6c9ff7daab4236ff651868e297ee65aa1549f234e2585062d28300ee70","src/schema.rs":"def455b4c5ac61302e18f6504736919193d62e1b5c3bea16d4442219d3c347ac","src/upid.rs":"bd7fd82f3f8593803a4105f9a40f8e436229c9be965ca130cbed43aa36455083","tests/schema.rs":"a4703c7344fe2b02da63c3a542d09c8a89d78369aa87ebf17990581b2c92810d","tests/schema_verification.rs":"13c8d92ac94b1c45d07a037e203fae9f0c8acbb27f1c23d15bff3e233556ae4e"},"package":null} {"files":{"Cargo.toml":"2089357441498c9ff3c6acfa18eb56001172ff6282c6479d139c8f7d1b991fde","src/api_type_macros.rs":"8f3e8a4dea0570c840f1ace43f9ab840ca1df4b4786be96c0e27eba146ba0875","src/const_regex.rs":"3c3f822d09136ccd52fbd66042b2ad37fc12945bef320d7a29b38b72cbd6465b","src/de.rs":"2dfacc67ef99f8f9271d7cb5576a53df7a31ff94c4cc41571fae2a8dda23b5a0","src/format.rs":"86b67c48b8f0813ac842e3b5d02fde19a0bc4f256ce3622e2eb26e88314a8980","src/lib.rs":"5c9bf978fef770014b682f45978c65a56d95c076b82065dd8a0470bae44c9b0d","src/property_string.rs":"43866f6c9ff7daab4236ff651868e297ee65aa1549f234e2585062d28300ee70","src/schema.rs":"def455b4c5ac61302e18f6504736919193d62e1b5c3bea16d4442219d3c347ac","src/upid.rs":"bd7fd82f3f8593803a4105f9a40f8e436229c9be965ca130cbed43aa36455083","tests/schema.rs":"a4703c7344fe2b02da63c3a542d09c8a89d78369aa87ebf17990581b2c92810d","tests/schema_verification.rs":"13c8d92ac94b1c45d07a037e203fae9f0c8acbb27f1c23d15bff3e233556ae4e"},"package":null}

View File

@ -1,12 +1,22 @@
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package] [package]
edition = "2021"
name = "proxmox-schema" name = "proxmox-schema"
version = "1.3.4" version = "1.3.4"
authors = ["Proxmox Support Team <support@proxmox.com>"] authors = ["Proxmox Support Team <support@proxmox.com>"]
edition = "2021" exclude = ["debian"]
license = "AGPL-3"
description = "proxmox api schema and validation" description = "proxmox api schema and validation"
license = "AGPL-3"
exclude = [ "debian" ]
[dependencies] [dependencies]
anyhow = "1.0" anyhow = "1.0"
@ -16,22 +26,35 @@ serde = "1.0"
serde_json = "1.0" serde_json = "1.0"
textwrap = "0.15" textwrap = "0.15"
# the upid type needs this for 'getpid' [dependencies.libc]
libc = { version = "0.2", optional = true } version = "0.2"
nix = { version = "0.24.1", optional = true } optional = true
proxmox-api-macro = { path = "../proxmox-api-macro", optional = true, version = "1.0.3" } [dependencies.nix]
version = "0.24.1"
optional = true
[dependencies.proxmox-api-macro]
version = "1.0.3"
path = "../proxmox-api-macro"
optional = true
[dev-dependencies] [dev-dependencies]
url = "2.1" url = "2.1"
serde = { version = "1.0", features = [ "derive" ] }
proxmox-api-macro = { path = "../proxmox-api-macro", version = "1.0.3" } [dev-dependencies.proxmox-api-macro]
version = "1.0.3"
path = "../proxmox-api-macro"
[dev-dependencies.serde]
version = "1.0"
features = ["derive"]
[features] [features]
default = []
api-macro = ["dep:proxmox-api-macro"] api-macro = ["dep:proxmox-api-macro"]
upid-api-impl = [ "dep:libc", "dep:nix" ] default = []
# Testing only
test-harness = [] test-harness = []
upid-api-impl = [
"dep:libc",
"dep:nix",
]

View File

@ -1 +1 @@
{"files":{"Cargo.toml":"4a99cfb73e900585cf340e1b5432695b2d8e18190d89e2ab70452d05a90c3e6d","src/json.rs":"e84b666663ac1f25c92cd0e3fcd75d9980384faf6b901417bcb09489691da05a","src/lib.rs":"6ec38911098dcc0fb47641896f5266dd9d7481d9e02042b14761680bec1b0f37","src/serde_macros.rs":"7c04ee501a3908be40c9b0f3c8ea964d65e112aee34e784a8e21da08ce881167"},"package":null} {"files":{"Cargo.toml":"2bc6826a63f2a191c21549e3550e61932b8e7a615e99293ca76ac5bab6a61bc9","src/json.rs":"e84b666663ac1f25c92cd0e3fcd75d9980384faf6b901417bcb09489691da05a","src/lib.rs":"6ec38911098dcc0fb47641896f5266dd9d7481d9e02042b14761680bec1b0f37","src/serde_macros.rs":"7c04ee501a3908be40c9b0f3c8ea964d65e112aee34e784a8e21da08ce881167"},"package":null}

View File

@ -1,20 +1,38 @@
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package] [package]
edition = "2018"
name = "proxmox-serde" name = "proxmox-serde"
version = "0.1.1" version = "0.1.1"
authors = ["Proxmox Support Team <support@proxmox.com>"] authors = ["Proxmox Support Team <support@proxmox.com>"]
edition = "2018" exclude = ["debian"]
license = "AGPL-3"
description = "Serde formatting tools" description = "Serde formatting tools"
license = "AGPL-3"
exclude = [ "debian" ]
[dependencies] [dependencies]
anyhow = "1.0" anyhow = "1.0"
base64 = "0.13" base64 = "0.13"
serde = { version = "1.0", features = ["derive"] }
serde_json = { version = "1.0", optional = true }
proxmox-time = { path = "../proxmox-time", version = "1.0.0" } [dependencies.proxmox-time]
version = "1.0.0"
path = "../proxmox-time"
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
optional = true
[dev-dependencies] [dev-dependencies]
serde_json = "1.0" serde_json = "1.0"

View File

@ -1 +1 @@
{"files":{"Cargo.toml":"72debd8dbfabf7b1c72e1372d005da16bee34029021a0691ea77fee3bc69da29","src/check.rs":"53d04658665281f740300dc3e07db156849a85ee917fbc9be714a119df7e52d9","src/files.rs":"d788094f709db9bb8bd00bbd429c8da3fd95d313b2ebb3aef7595c9c66a0a64d","src/lib.rs":"0249c193e9f9c9bf0eede9e6652c4a26dd236f245f44963e14f85039c9cc3926","src/sign.rs":"338f9f57ba4200ad73a3de441523b37298243474d4a6c19899a2bac4b9c788b1","src/subscription_info.rs":"6dd0a3a8cfab61d089ba06055e6122206612da9132522d4e3d46d197c32cd336"},"package":null} {"files":{"Cargo.toml":"9018e8447e2e2fa436cfd51e2e4a42e2eea20c8712663a5478607ea205efd1af","src/check.rs":"53d04658665281f740300dc3e07db156849a85ee917fbc9be714a119df7e52d9","src/files.rs":"d788094f709db9bb8bd00bbd429c8da3fd95d313b2ebb3aef7595c9c66a0a64d","src/lib.rs":"0249c193e9f9c9bf0eede9e6652c4a26dd236f245f44963e14f85039c9cc3926","src/sign.rs":"338f9f57ba4200ad73a3de441523b37298243474d4a6c19899a2bac4b9c788b1","src/subscription_info.rs":"6dd0a3a8cfab61d089ba06055e6122206612da9132522d4e3d46d197c32cd336"},"package":null}

View File

@ -1,12 +1,22 @@
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package] [package]
edition = "2018"
name = "proxmox-subscription" name = "proxmox-subscription"
version = "0.3.0" version = "0.3.0"
authors = ["Proxmox Support Team <support@proxmox.com>"] authors = ["Proxmox Support Team <support@proxmox.com>"]
edition = "2018" exclude = ["debian"]
license = "AGPL-3"
description = "Proxmox subscription utilitites" description = "Proxmox subscription utilitites"
license = "AGPL-3"
exclude = [ "debian" ]
[dependencies] [dependencies]
anyhow = "1.0" anyhow = "1.0"
@ -18,13 +28,34 @@ regex = "1.5"
serde = "1.0" serde = "1.0"
serde_json = "1.0" serde_json = "1.0"
proxmox-http = { path = "../proxmox-http", version = "0.7", default_features = false, features = ["client-trait", "http-helpers"] } [dependencies.proxmox-http]
proxmox-serde = { path = "../proxmox-serde", version = "0.1.1", features = ["serde_json"]} version = "0.7"
proxmox-sys = { path = "../proxmox-sys", version = "0.4" } path = "../proxmox-http"
proxmox-time = { path = "../proxmox-time", version = "1.1" } features = [
"client-trait",
"http-helpers",
]
default_features = false
proxmox-schema = { path = "../proxmox-schema", version = "1.3.3", features = ["api-macro"], optional = true } [dependencies.proxmox-schema]
version = "1.3.3"
path = "../proxmox-schema"
features = ["api-macro"]
optional = true
[dependencies.proxmox-serde]
version = "0.1.1"
path = "../proxmox-serde"
features = ["serde_json"]
[dependencies.proxmox-sys]
version = "0.4"
path = "../proxmox-sys"
[dependencies.proxmox-time]
version = "1.1"
path = "../proxmox-time"
[features] [features]
default = []
api-types = ["dep:proxmox-schema"] api-types = ["dep:proxmox-schema"]
default = []

View File

@ -1 +1 @@
{"files":{"Cargo.toml":"346794ef4160194bfe846aae28fee9b334893f866cdefdb4e04a077d83b71c80","src/command.rs":"c6582d05cf9f15693036c980f76ab2fa76d9faba35ca362219c79de16e8eb681","src/crypt.rs":"b6cb2d63609358b86bde9ba6052b10ca77817da07a44797a9fbdd499088e6acb","src/email.rs":"cfa71e8ed4d7554f8667941515e1d46be1a3f4a84f56daf0dccaee0eef9a12a1","src/error.rs":"bd620b3113ebcde0fb86335ab009bfa574635b0a2ce72d25661f12d427e748ae","src/fd/borrowed_fd.rs":"528850cd74a1e60d109e744d80c74471e4516837262fa9cedb71b88189e8920b","src/fd/fd_impl.rs":"85153103e797e7fdea0e138034423333c69fc4e26f44d36192d14f3b1334b603","src/fd/mod.rs":"48c7e0c43aadaafb46a889f917d7dece6bd08e280710cd66fad96175ff6874a6","src/fd/raw_fd_num.rs":"700b1460ed12595963c1380b5dff9ac762953db470d9eaf5b1645e3e2cdd5185","src/fs/acl.rs":"c190976ecd881f7929df2a1c27b7b789120c27592f27dfcbe2b062cb2c841277","src/fs/dir.rs":"7d38b8df67954108e17e17f51843eb166ce9064255ab691d7472dc3b1c11f67a","src/fs/file.rs":"77e9431a6fef38cbeef66df9a461543af895f31f16cf01f3839de4af02bb3727","src/fs/fsx_attr.rs":"a21d30282aec66c075c4eaa8038ed845b2cbaae5ce52c14531207e03cfb0d13b","src/fs/mod.rs":"5626dc324f836939621285e38988cc2d42379de6444c3d68e851ed6f4c4986db","src/fs/read_dir.rs":"91e6499893b19539945c6d5a62a9fb152f72a34b14f244f8e0b4909dd7618269","src/fs/xattr.rs":"17d798312eccb1fa68968da9aa4872a01bb0b82fbe407b0aa1140a4643422b29","src/lib.rs":"658eb2e3304c6ba61444759e0d6b5a70db1d908eddfc5d32798645059d8cbe59","src/linux/magic.rs":"1316000dc334c2eb29419548517bee455ff3f736c139bc6eaa5c48bbd5e22124","src/linux/mod.rs":"756a5d8987c329b7daf1cb981c8fe9062baec15cbf2260b630ab74f4a321ff24","src/linux/pid.rs":"2ce0db0e39853e35448bcca86cf0f1a0ee53d7c424aba54edfaae3d5f6fa2041","src/linux/procfs/mod.rs":"65850728193e7f9bddd444ec8c7be9e2589c977667fedd71aac6573ffadb8c08","src/linux/procfs/mountinfo.rs":"6b00d34338aa659e07fecb8bb682951c1918d16976d9bbd4d06494a8407b0427","src/linux/pty.rs":"13b3c1eee4d1d78c6653a3983ad83a47c8905ffee5d63c6bed6d88ed7049be12","src/linux/socket.rs":"ab704b7f3d3177ef963cb57939cc436af0ddd42ab91ed2365a4fc84182118f2b","src/linux/timer.rs":"7cbff1509bd13edbae53ed2aa20d869a7400dab8df3d2287e9b57391b45442ae","src/linux/tty.rs":"770308be7e8b3ed59e6fc5b163c1bf865cdde67544a81b0c49cb4e5cc87324c8","src/logrotate.rs":"611866c2ab4f6a2c40f565be7e606b5fa407255c53ab54123a256fbefc278cd3","src/macros.rs":"4462ff84a473bfea445a71f22484038e27a8733969d6cb0d8a232538f12dce43","src/mmap.rs":"59b1e085e8e7354df9dc4f68a6aaddb272f43fc87c6112fdc1909065b54508f1","src/process_locker.rs":"151e388a788e84306c97b0e645a9b95cf0477b812b36c9ced70071e397e15c26","src/systemd.rs":"0a86bd9ccdbc27a355bfc3f301165c2fccdad554d1a4facacddcadcd7b036d05","src/worker_task_context.rs":"dad2d86f18aed18de2040b80dfcedc7e9eccb08efe5c700b83360fac3060a0c2","tests/xattr.rs":"ee1c1a75a97c69f5971132ffe71dbff304ebc93ab3027b30f268a4f1ba41f610"},"package":null} {"files":{"Cargo.toml":"f03e0a7c7d5f51a2e353604c0f67c2e46fa4671f55d7a2e9d564e4bf3f65442e","src/command.rs":"c6582d05cf9f15693036c980f76ab2fa76d9faba35ca362219c79de16e8eb681","src/crypt.rs":"b6cb2d63609358b86bde9ba6052b10ca77817da07a44797a9fbdd499088e6acb","src/email.rs":"cfa71e8ed4d7554f8667941515e1d46be1a3f4a84f56daf0dccaee0eef9a12a1","src/error.rs":"bd620b3113ebcde0fb86335ab009bfa574635b0a2ce72d25661f12d427e748ae","src/fd/borrowed_fd.rs":"528850cd74a1e60d109e744d80c74471e4516837262fa9cedb71b88189e8920b","src/fd/fd_impl.rs":"85153103e797e7fdea0e138034423333c69fc4e26f44d36192d14f3b1334b603","src/fd/mod.rs":"48c7e0c43aadaafb46a889f917d7dece6bd08e280710cd66fad96175ff6874a6","src/fd/raw_fd_num.rs":"700b1460ed12595963c1380b5dff9ac762953db470d9eaf5b1645e3e2cdd5185","src/fs/acl.rs":"c190976ecd881f7929df2a1c27b7b789120c27592f27dfcbe2b062cb2c841277","src/fs/dir.rs":"7d38b8df67954108e17e17f51843eb166ce9064255ab691d7472dc3b1c11f67a","src/fs/file.rs":"77e9431a6fef38cbeef66df9a461543af895f31f16cf01f3839de4af02bb3727","src/fs/fsx_attr.rs":"a21d30282aec66c075c4eaa8038ed845b2cbaae5ce52c14531207e03cfb0d13b","src/fs/mod.rs":"5626dc324f836939621285e38988cc2d42379de6444c3d68e851ed6f4c4986db","src/fs/read_dir.rs":"91e6499893b19539945c6d5a62a9fb152f72a34b14f244f8e0b4909dd7618269","src/fs/xattr.rs":"17d798312eccb1fa68968da9aa4872a01bb0b82fbe407b0aa1140a4643422b29","src/lib.rs":"658eb2e3304c6ba61444759e0d6b5a70db1d908eddfc5d32798645059d8cbe59","src/linux/magic.rs":"1316000dc334c2eb29419548517bee455ff3f736c139bc6eaa5c48bbd5e22124","src/linux/mod.rs":"756a5d8987c329b7daf1cb981c8fe9062baec15cbf2260b630ab74f4a321ff24","src/linux/pid.rs":"2ce0db0e39853e35448bcca86cf0f1a0ee53d7c424aba54edfaae3d5f6fa2041","src/linux/procfs/mod.rs":"65850728193e7f9bddd444ec8c7be9e2589c977667fedd71aac6573ffadb8c08","src/linux/procfs/mountinfo.rs":"6b00d34338aa659e07fecb8bb682951c1918d16976d9bbd4d06494a8407b0427","src/linux/pty.rs":"13b3c1eee4d1d78c6653a3983ad83a47c8905ffee5d63c6bed6d88ed7049be12","src/linux/socket.rs":"ab704b7f3d3177ef963cb57939cc436af0ddd42ab91ed2365a4fc84182118f2b","src/linux/timer.rs":"7cbff1509bd13edbae53ed2aa20d869a7400dab8df3d2287e9b57391b45442ae","src/linux/tty.rs":"770308be7e8b3ed59e6fc5b163c1bf865cdde67544a81b0c49cb4e5cc87324c8","src/logrotate.rs":"611866c2ab4f6a2c40f565be7e606b5fa407255c53ab54123a256fbefc278cd3","src/macros.rs":"4462ff84a473bfea445a71f22484038e27a8733969d6cb0d8a232538f12dce43","src/mmap.rs":"59b1e085e8e7354df9dc4f68a6aaddb272f43fc87c6112fdc1909065b54508f1","src/process_locker.rs":"151e388a788e84306c97b0e645a9b95cf0477b812b36c9ced70071e397e15c26","src/systemd.rs":"0a86bd9ccdbc27a355bfc3f301165c2fccdad554d1a4facacddcadcd7b036d05","src/worker_task_context.rs":"dad2d86f18aed18de2040b80dfcedc7e9eccb08efe5c700b83360fac3060a0c2","tests/xattr.rs":"ee1c1a75a97c69f5971132ffe71dbff304ebc93ab3027b30f268a4f1ba41f610"},"package":null}

View File

@ -1,12 +1,22 @@
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package] [package]
edition = "2021"
name = "proxmox-sys" name = "proxmox-sys"
version = "0.4.0" version = "0.4.0"
authors = ["Proxmox Support Team <support@proxmox.com>"] authors = ["Proxmox Support Team <support@proxmox.com>"]
edition = "2021" exclude = ["debian"]
license = "AGPL-3"
description = "System tools (using nix)." description = "System tools (using nix)."
license = "AGPL-3"
exclude = [ "debian" ]
[dependencies] [dependencies]
anyhow = "1.0" anyhow = "1.0"
@ -17,20 +27,37 @@ log = "0.4.17"
nix = "0.24.1" nix = "0.24.1"
regex = "1.2" regex = "1.2"
serde_json = "1.0" serde_json = "1.0"
serde = { version = "1.0", features = [ "derive" ] }
zstd = { version = "0.6", features = [ "bindgen" ], optional = true}
# Macro crates: [dependencies.proxmox-io]
proxmox-sortable-macro = { path = "../proxmox-sortable-macro", optional = true, version = "0.1.2" } version = "1.0.0"
path = "../proxmox-io"
proxmox-io = { path = "../proxmox-io", version = "1.0.0" } [dependencies.proxmox-lang]
proxmox-lang = { path = "../proxmox-lang", version = "1.1" } version = "1.1"
proxmox-time = { path = "../proxmox-time", version = "1.0.0" } path = "../proxmox-lang"
[dependencies.proxmox-sortable-macro]
version = "0.1.2"
path = "../proxmox-sortable-macro"
optional = true
[dependencies.proxmox-time]
version = "1.0.0"
path = "../proxmox-time"
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.zstd]
version = "0.6"
features = ["bindgen"]
optional = true
[features] [features]
default = []
sortable-macro = ["dep:proxmox-sortable-macro"]
logrotate = ["dep:zstd"]
acl = [] acl = []
crypt = [] crypt = []
default = []
logrotate = ["dep:zstd"]
sortable-macro = ["dep:proxmox-sortable-macro"]
timer = [] timer = []

View File

@ -1 +1 @@
{"files":{"Cargo.toml":"328f533671eb992a828fccfa255f19e780af0f14a4bd3f35aeccac838037d29a","src/api/methods.rs":"4042cdd502aa48e46db933211108e7e59c0517839aa15cd9e408c28dbb5d53fb","src/api/mod.rs":"641ed66a49e1813c61aa2fdb80dc629d9c7ca9b0354a643bb68d301d9aac8437","src/api/recovery.rs":"44ca1f3d5a5dbfa1b52a079903e824b6fdc1f0c5ec0e497d9026a806c4a4dc22","src/api/serde_tools.rs":"e7f7f10899a023997e368ab816c9f109412d86bebe0de75415e94db3660f3b57","src/api/u2f.rs":"a15d506ab39ee5b301977f40f624c2eccb497b07de40f7d306024dd6e5af9409","src/api/webauthn.rs":"2d4719e58e4b5c52191378eff625069a350d16300073a6e16f1e57387549e70a","src/lib.rs":"d73e2536a9854894c370a04388e0c367109d8163712386a5caea945c14a2a068","src/totp.rs":"33c6b115dd3619ebb5a7be39e0b1f78a12eaff70555c96355b27395aa3263fda","src/u2f.rs":"6ef0fbf10dc0ff0733b5226c0c38a5742d25742591be56d2d9010ec201148c2e"},"package":null} {"files":{"Cargo.toml":"77d6cbcf62ae793e54aa8928d838025c39b983883c669e0a71f50d406c1de853","src/api/methods.rs":"4042cdd502aa48e46db933211108e7e59c0517839aa15cd9e408c28dbb5d53fb","src/api/mod.rs":"641ed66a49e1813c61aa2fdb80dc629d9c7ca9b0354a643bb68d301d9aac8437","src/api/recovery.rs":"44ca1f3d5a5dbfa1b52a079903e824b6fdc1f0c5ec0e497d9026a806c4a4dc22","src/api/serde_tools.rs":"e7f7f10899a023997e368ab816c9f109412d86bebe0de75415e94db3660f3b57","src/api/u2f.rs":"a15d506ab39ee5b301977f40f624c2eccb497b07de40f7d306024dd6e5af9409","src/api/webauthn.rs":"2d4719e58e4b5c52191378eff625069a350d16300073a6e16f1e57387549e70a","src/lib.rs":"d73e2536a9854894c370a04388e0c367109d8163712386a5caea945c14a2a068","src/totp.rs":"33c6b115dd3619ebb5a7be39e0b1f78a12eaff70555c96355b27395aa3263fda","src/u2f.rs":"6ef0fbf10dc0ff0733b5226c0c38a5742d25742591be56d2d9010ec201148c2e"},"package":null}

View File

@ -1,12 +1,22 @@
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package] [package]
edition = "2021"
name = "proxmox-tfa" name = "proxmox-tfa"
version = "2.1.0" version = "2.1.0"
authors = ["Proxmox Support Team <support@proxmox.com>"] authors = ["Proxmox Support Team <support@proxmox.com>"]
edition = "2021" exclude = ["debian"]
license = "AGPL-3"
description = "tfa implementation for totp and u2f" description = "tfa implementation for totp and u2f"
license = "AGPL-3"
exclude = [ "debian" ]
[dependencies] [dependencies]
anyhow = "1.0" anyhow = "1.0"
@ -17,17 +27,47 @@ openssl = "0.10"
percent-encoding = "2.1" percent-encoding = "2.1"
serde = "1.0" serde = "1.0"
serde_plain = "1.0" serde_plain = "1.0"
serde_json = { version = "1.0", optional = true }
libc = { version = "0.2", optional = true }
url = "2.2" url = "2.2"
proxmox-schema = { version = "1", path = "../proxmox-schema", features = [ "api-macro" ], optional = true } [dependencies.libc]
proxmox-time = { version = "1", path = "../proxmox-time", optional = true } version = "0.2"
proxmox-uuid = { version = "1", path = "../proxmox-uuid", optional = true } optional = true
webauthn-rs = { version = "0.3", optional = true }
[dependencies.proxmox-schema]
version = "1"
path = "../proxmox-schema"
features = ["api-macro"]
optional = true
[dependencies.proxmox-time]
version = "1"
path = "../proxmox-time"
optional = true
[dependencies.proxmox-uuid]
version = "1"
path = "../proxmox-uuid"
optional = true
[dependencies.serde_json]
version = "1.0"
optional = true
[dependencies.webauthn-rs]
version = "0.3"
optional = true
[features] [features]
api = [
"u2f",
"dep:webauthn-rs",
"dep:proxmox-uuid",
"dep:proxmox-time",
]
api-types = ["dep:proxmox-schema"]
default = [] default = []
u2f = [ "dep:libc", "dep:serde_json", "serde/derive" ] u2f = [
api = [ "u2f", "dep:webauthn-rs", "dep:proxmox-uuid", "dep:proxmox-time" ] "dep:libc",
api-types = [ "dep:proxmox-schema" ] "dep:serde_json",
"serde/derive",
]

View File

@ -1 +1 @@
{"files":{"Cargo.toml":"4f14c1d522a5a123061ed4938e27023de669c33aa3b072e7523b2159f5d07708","src/calendar_event.rs":"36ae345956cdb28f6335f1a99a8e387dc699281d8b89b517f0fdf288019c7ce0","src/daily_duration.rs":"7ba642ec1063b4e17058e5bfbfb3be604aa37bccea3dd87b3abe4ce0e62a784f","src/date_time_value.rs":"5491874bb8202fa1a176a02595eca16c194cacd4cc65cc527788f10cf8ec7cb0","src/lib.rs":"7655443d4a5240b28b4d2cc8b08d5e9449618f0fcb8310602992cb982709c174","src/parse_helpers.rs":"4102daf2b87e4c2f62d558a7859bbc76f510dad328fd46f3a4ad916c3f7dd8b6","src/posix.rs":"5b27f061b32c2d479396935733f762cfc6ecbf841a29eb0389c4738fc5799f9f","src/test.rs":"7a5233a52ad760a74a43854d3ccc78bd3cef9b5d40573854a58e962a255b6bf4","src/time_span.rs":"aa9564c643098a5bbea9bddd01fedb20ef320389743f2738b82a5455a21318b0","src/tm_editor.rs":"aae0dcfcf42d9042133543d0d18f11a5d8b91ad16aae77dbb1d4cb4b7e7ac870","src/wasm.rs":"14036c2012b6c7e483635c0cdcc75d81e24fa539543ebdac0200e0747f1df39d","src/week_days.rs":"93ecddd78efa57bad16e1514ee51d72856b939abfd8dddc0dba5cbc466a8e5e8"},"package":null} {"files":{"Cargo.toml":"533783d76df373c9e6baac58cd27eba3cc973d663770b51c42a06ac24a78c16b","src/calendar_event.rs":"36ae345956cdb28f6335f1a99a8e387dc699281d8b89b517f0fdf288019c7ce0","src/daily_duration.rs":"7ba642ec1063b4e17058e5bfbfb3be604aa37bccea3dd87b3abe4ce0e62a784f","src/date_time_value.rs":"5491874bb8202fa1a176a02595eca16c194cacd4cc65cc527788f10cf8ec7cb0","src/lib.rs":"7655443d4a5240b28b4d2cc8b08d5e9449618f0fcb8310602992cb982709c174","src/parse_helpers.rs":"4102daf2b87e4c2f62d558a7859bbc76f510dad328fd46f3a4ad916c3f7dd8b6","src/posix.rs":"5b27f061b32c2d479396935733f762cfc6ecbf841a29eb0389c4738fc5799f9f","src/test.rs":"7a5233a52ad760a74a43854d3ccc78bd3cef9b5d40573854a58e962a255b6bf4","src/time_span.rs":"aa9564c643098a5bbea9bddd01fedb20ef320389743f2738b82a5455a21318b0","src/tm_editor.rs":"aae0dcfcf42d9042133543d0d18f11a5d8b91ad16aae77dbb1d4cb4b7e7ac870","src/wasm.rs":"14036c2012b6c7e483635c0cdcc75d81e24fa539543ebdac0200e0747f1df39d","src/week_days.rs":"93ecddd78efa57bad16e1514ee51d72856b939abfd8dddc0dba5cbc466a8e5e8"},"package":null}

View File

@ -1,12 +1,22 @@
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package] [package]
edition = "2018"
name = "proxmox-time" name = "proxmox-time"
version = "1.1.4" version = "1.1.4"
authors = ["Proxmox Support Team <support@proxmox.com>"] authors = ["Proxmox Support Team <support@proxmox.com>"]
edition = "2018" exclude = ["debian"]
license = "AGPL-3"
description = "time utilities and TmEditor" description = "time utilities and TmEditor"
license = "AGPL-3"
exclude = [ "debian" ]
[dependencies] [dependencies]
anyhow = "1.0" anyhow = "1.0"
@ -14,8 +24,9 @@ bitflags = "1.2.1"
lazy_static = "1.4" lazy_static = "1.4"
nom = "7" nom = "7"
[target.'cfg(not(target_arch="wasm32"))'.dependencies] [target."cfg(not(target_arch=\"wasm32\"))".dependencies.libc]
libc = { version = "0.2", features = [ "extra_traits" ] } version = "0.2"
features = ["extra_traits"]
[target.'cfg(target_arch="wasm32")'.dependencies] [target."cfg(target_arch=\"wasm32\")".dependencies]
js-sys = "0.3.55" js-sys = "0.3.55"

View File

@ -1 +1 @@
{"files":{"Cargo.toml":"69f617ccbe5d7ed72ae2a91cfadf34654687bb7d0d8fd2096fb94fa7d1d148c4","src/lib.rs":"42940d2d514af2c553b996f624123ea3ca1e9cbe21ba0db5e2a76791766f0b5f","src/lib_uuid_bindings.rs":"a6ebb1c60b1aa517a277e1e997bb47966becd49710c0067ab72f6f17663e6986","src/wasm.rs":"46fc2262427d4025b2e6f0e4117d2b894fea29d95fc7c15eb6e15896d9d3c14c"},"package":null} {"files":{"Cargo.toml":"fc8ecbb880271437b2a8eca67edd4968aab147ed8232e628aecd7e3a4e5c64a1","src/lib.rs":"42940d2d514af2c553b996f624123ea3ca1e9cbe21ba0db5e2a76791766f0b5f","src/lib_uuid_bindings.rs":"a6ebb1c60b1aa517a277e1e997bb47966becd49710c0067ab72f6f17663e6986","src/wasm.rs":"46fc2262427d4025b2e6f0e4117d2b894fea29d95fc7c15eb6e15896d9d3c14c"},"package":null}

View File

@ -1,23 +1,36 @@
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package] [package]
edition = "2018"
name = "proxmox-uuid" name = "proxmox-uuid"
version = "1.0.1" version = "1.0.1"
authors = ["Proxmox Support Team <support@proxmox.com>"] authors = ["Proxmox Support Team <support@proxmox.com>"]
edition = "2018" exclude = ["debian"]
license = "AGPL-3"
description = "bindings for libuuid with optional serde support" description = "bindings for libuuid with optional serde support"
license = "AGPL-3"
exclude = [ "debian" ]
[dependencies] [dependencies]
libc = "0.2" libc = "0.2"
serde = { version = "1.0", optional = true }
[features] [dependencies.serde]
default = [] version = "1.0"
optional = true
[dev-dependencies] [dev-dependencies]
serde = "1.0" serde = "1.0"
serde_json = "1.0" serde_json = "1.0"
[target.'cfg(target_arch="wasm32")'.dependencies] [features]
default = []
[target."cfg(target_arch=\"wasm32\")".dependencies]
js-sys = "0.3.55" js-sys = "0.3.55"