diff --git a/Cargo.lock b/Cargo.lock index 986a284d..f4e5e5e7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,6 +17,25 @@ dependencies = [ "powerfmt", ] +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + [[package]] name = "itoa" version = "1.0.11" @@ -63,6 +82,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + [[package]] name = "powerfmt" version = "0.2.0" @@ -134,6 +159,10 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "store" version = "0.1.0" +dependencies = [ + "url", + "uuid", +] [[package]] name = "syn" @@ -187,6 +216,21 @@ dependencies = [ "time-core", ] +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + [[package]] name = "tracing-core" version = "0.1.32" @@ -222,12 +266,44 @@ dependencies = [ "tracing-log", ] +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + [[package]] name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "url" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "uuid" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" + [[package]] name = "valuable" version = "0.1.0" diff --git a/store/Cargo.toml b/store/Cargo.toml index a87d3f35..9256dcdb 100644 --- a/store/Cargo.toml +++ b/store/Cargo.toml @@ -9,3 +9,5 @@ rust-version.workspace = true # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +url = "2.5.2" +uuid = "1.8.0" diff --git a/store/src/endpoint.rs b/store/src/endpoint.rs new file mode 100644 index 00000000..bf2d1524 --- /dev/null +++ b/store/src/endpoint.rs @@ -0,0 +1,22 @@ +pub struct EndpointServerPools(Vec); + +pub struct PoolEndpoints { + // indicates if endpoints are provided in non-ellipses style + pub legacy: bool, + pub set_count: usize, + pub drives_per_set: usize, + pub endpoints: Endpoints, + pub cmd_line: String, + pub platform: String, +} + +pub struct Endpoints(Vec); + +pub struct Endpoint { + pub url: url::Url, + + pub is_local: bool, + pub pool_idx: i32, + pub set_idx: i32, + pub disk_idx: i32, +} diff --git a/store/src/lib.rs b/store/src/lib.rs index 7d12d9af..91264e30 100644 --- a/store/src/lib.rs +++ b/store/src/lib.rs @@ -1,14 +1,2 @@ -pub fn add(left: usize, right: usize) -> usize { - left + right -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn it_works() { - let result = add(2, 2); - assert_eq!(result, 4); - } -} +mod endpoint; +mod store; diff --git a/store/src/store.rs b/store/src/store.rs new file mode 100644 index 00000000..708a3a0f --- /dev/null +++ b/store/src/store.rs @@ -0,0 +1,27 @@ +use super::endpoint::Endpoint; + +pub struct Store { + pub id: uuid::Uuid, + pub disks: Vec>, + pub pools: Vec, + pub peer: Vec, +} + +impl Store {} + +pub struct Sets { + pub sets: Vec, +} + +pub struct Objects { + pub endpoints: Vec, + pub disks: Vec, + pub set_index: usize, + pub pool_index: usize, + pub set_drive_count: usize, + pub default_parity_count: usize, +} + +trait DiskAPI {} + +pub trait StorageAPI {}