* [pbs-devel] [PATCH proxmox-backup 0/5] fix zfs/disk listings with special pool names
@ 2020-07-08 12:59 Dominik Csapak
2020-07-08 12:59 ` [pbs-devel] [PATCH proxmox-backup 1/5] api: add ZPOOL_NAME_SCHEMA and regex Dominik Csapak
` (5 more replies)
0 siblings, 6 replies; 8+ messages in thread
From: Dominik Csapak @ 2020-07-08 12:59 UTC (permalink / raw)
To: pbs-devel
this series adds functionality to allow zpools that have
special characters in the name, such as ':','.','_', etc.
(spaces are still disallowed)
also fixed disk list when zfsutils-linux is not installed
(the user still gets an error on the ZFS panel)
also add some tests
Dominik Csapak (5):
api: add ZPOOL_NAME_SCHEMA and regex
zpool_list: add tests for special pool names
disks/zpool_list: allow some more characters for pool list
disks/zpool_status: add test for pool with special character
get_disks: don't fail on zfs_devices
src/api2/node/disks/zfs.rs | 5 ++++-
src/api2/types.rs | 2 ++
src/tools/disks.rs | 5 ++++-
src/tools/disks/zpool_list.rs | 32 +++++++++++++++++++++++++++---
src/tools/disks/zpool_status.rs | 35 +++++++++++++++++++++++++++++++++
5 files changed, 74 insertions(+), 5 deletions(-)
--
2.20.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [pbs-devel] [PATCH proxmox-backup 1/5] api: add ZPOOL_NAME_SCHEMA and regex
2020-07-08 12:59 [pbs-devel] [PATCH proxmox-backup 0/5] fix zfs/disk listings with special pool names Dominik Csapak
@ 2020-07-08 12:59 ` Dominik Csapak
2020-07-08 12:59 ` [pbs-devel] [PATCH proxmox-backup 2/5] zpool_list: add tests for special pool names Dominik Csapak
` (4 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Dominik Csapak @ 2020-07-08 12:59 UTC (permalink / raw)
To: pbs-devel
poolnames can containe spaces and some other special characters
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
src/api2/node/disks/zfs.rs | 5 ++++-
src/api2/types.rs | 2 ++
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/api2/node/disks/zfs.rs b/src/api2/node/disks/zfs.rs
index 3184a76..be2a163 100644
--- a/src/api2/node/disks/zfs.rs
+++ b/src/api2/node/disks/zfs.rs
@@ -41,6 +41,9 @@ pub const ZFS_ASHIFT_SCHEMA: Schema = IntegerSchema::new(
.default(12)
.schema();
+pub const ZPOOL_NAME_SCHEMA: Schema =StringSchema::new("ZFS Pool Name")
+ .format(&ApiStringFormat::Pattern(&ZPOOL_NAME_REGEX))
+ .schema();
#[api(
default: "On",
@@ -157,7 +160,7 @@ pub fn list_zpools() -> Result<Vec<ZpoolListItem>, Error> {
schema: NODE_SCHEMA,
},
name: {
- schema: DATASTORE_SCHEMA,
+ schema: ZPOOL_NAME_SCHEMA,
},
},
},
diff --git a/src/api2/types.rs b/src/api2/types.rs
index 7b90270..0d0fab3 100644
--- a/src/api2/types.rs
+++ b/src/api2/types.rs
@@ -78,6 +78,8 @@ const_regex!{
pub ACL_PATH_REGEX = concat!(r"^(?:/|", r"(?:/", PROXMOX_SAFE_ID_REGEX_STR!(), ")+", r")$");
pub BLOCKDEVICE_NAME_REGEX = r"^(:?(:?h|s|x?v)d[a-z]+)|(:?nvme\d+n\d+)$";
+
+ pub ZPOOL_NAME_REGEX = r"^[a-zA-Z][a-z0-9A-Z\-_.:]+$";
}
pub const SYSTEMD_DATETIME_FORMAT: ApiStringFormat =
--
2.20.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [pbs-devel] [PATCH proxmox-backup 2/5] zpool_list: add tests for special pool names
2020-07-08 12:59 [pbs-devel] [PATCH proxmox-backup 0/5] fix zfs/disk listings with special pool names Dominik Csapak
2020-07-08 12:59 ` [pbs-devel] [PATCH proxmox-backup 1/5] api: add ZPOOL_NAME_SCHEMA and regex Dominik Csapak
@ 2020-07-08 12:59 ` Dominik Csapak
2020-07-08 12:59 ` [pbs-devel] [PATCH proxmox-backup 3/5] disks/zpool_list: allow some more characters for pool list Dominik Csapak
` (3 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Dominik Csapak @ 2020-07-08 12:59 UTC (permalink / raw)
To: pbs-devel
those names are allowed for zpools
these will fail for now, but it will be fixed in the next commit
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
src/tools/disks/zpool_list.rs | 30 ++++++++++++++++++++++++++++--
1 file changed, 28 insertions(+), 2 deletions(-)
diff --git a/src/tools/disks/zpool_list.rs b/src/tools/disks/zpool_list.rs
index 3c65280..343ac0d 100644
--- a/src/tools/disks/zpool_list.rs
+++ b/src/tools/disks/zpool_list.rs
@@ -221,7 +221,7 @@ logs
assert_eq!(data, expect);
let output = "\
-btest 427349245952 761856 427348484096 - - 0 0 1.00 ONLINE -
+b-test 427349245952 761856 427348484096 - - 0 0 1.00 ONLINE -
mirror 213674622976 438272 213674184704 - - 0 0 - ONLINE
/dev/sda1 - - - - - - - - ONLINE
/dev/sda2 - - - - - - - - ONLINE
@@ -235,7 +235,7 @@ logs - - - - - - - - -
let data = parse_zpool_list(&output)?;
let expect = vec![
ZFSPoolInfo {
- name: String::from("btest"),
+ name: String::from("b-test"),
health: String::from("ONLINE"),
usage: Some(ZFSPoolUsage {
size: 427349245952,
@@ -261,5 +261,31 @@ logs - - - - - - - - -
assert_eq!(data, expect);
+ let output = "\
+b.test 427349245952 761856 427348484096 - - 0 0 1.00 ONLINE -
+ mirror 213674622976 438272 213674184704 - - 0 0 - ONLINE
+ /dev/sda1 - - - - - - - - ONLINE
+";
+
+ let data = parse_zpool_list(&output)?;
+ let expect = vec![
+ ZFSPoolInfo {
+ name: String::from("b.test"),
+ health: String::from("ONLINE"),
+ usage: Some(ZFSPoolUsage {
+ size: 427349245952,
+ alloc: 761856,
+ free: 427348484096,
+ dedup: 1.0,
+ frag: 0,
+ }),
+ devices: vec![
+ String::from("/dev/sda1"),
+ ]
+ },
+ ];
+
+ assert_eq!(data, expect);
+
Ok(())
}
--
2.20.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [pbs-devel] [PATCH proxmox-backup 3/5] disks/zpool_list: allow some more characters for pool list
2020-07-08 12:59 [pbs-devel] [PATCH proxmox-backup 0/5] fix zfs/disk listings with special pool names Dominik Csapak
2020-07-08 12:59 ` [pbs-devel] [PATCH proxmox-backup 1/5] api: add ZPOOL_NAME_SCHEMA and regex Dominik Csapak
2020-07-08 12:59 ` [pbs-devel] [PATCH proxmox-backup 2/5] zpool_list: add tests for special pool names Dominik Csapak
@ 2020-07-08 12:59 ` Dominik Csapak
2020-07-08 12:59 ` [pbs-devel] [PATCH proxmox-backup 4/5] disks/zpool_status: add test for pool with special character Dominik Csapak
` (2 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Dominik Csapak @ 2020-07-08 12:59 UTC (permalink / raw)
To: pbs-devel
not exhaustive of what zfs allows (space is missing), but this
can be done easily without problems
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
src/tools/disks/zpool_list.rs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/tools/disks/zpool_list.rs b/src/tools/disks/zpool_list.rs
index 343ac0d..a071037 100644
--- a/src/tools/disks/zpool_list.rs
+++ b/src/tools/disks/zpool_list.rs
@@ -64,7 +64,7 @@ fn parse_zpool_list_header(i: &str) -> IResult<&str, ZFSPoolInfo> {
let (i, (text, size, alloc, free, _, _,
frag, _, dedup, health,
_altroot, _eol)) = tuple((
- take_while1(|c| char::is_alphanumeric(c)), // name
+ take_while1(|c| char::is_alphanumeric(c) || c == '-' || c == ':' || c == '_' || c == '.'), // name
preceded(multispace1, parse_optional_u64), // size
preceded(multispace1, parse_optional_u64), // allocated
preceded(multispace1, parse_optional_u64), // free
--
2.20.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [pbs-devel] [PATCH proxmox-backup 4/5] disks/zpool_status: add test for pool with special character
2020-07-08 12:59 [pbs-devel] [PATCH proxmox-backup 0/5] fix zfs/disk listings with special pool names Dominik Csapak
` (2 preceding siblings ...)
2020-07-08 12:59 ` [pbs-devel] [PATCH proxmox-backup 3/5] disks/zpool_list: allow some more characters for pool list Dominik Csapak
@ 2020-07-08 12:59 ` Dominik Csapak
2020-07-08 12:59 ` [pbs-devel] [PATCH proxmox-backup 5/5] get_disks: don't fail on zfs_devices Dominik Csapak
2020-07-09 11:40 ` [pbs-devel] [PATCH proxmox-backup 0/5] fix zfs/disk listings with special pool names Dietmar Maurer
5 siblings, 0 replies; 8+ messages in thread
From: Dominik Csapak @ 2020-07-08 12:59 UTC (permalink / raw)
To: pbs-devel
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
src/tools/disks/zpool_status.rs | 35 +++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/src/tools/disks/zpool_status.rs b/src/tools/disks/zpool_status.rs
index f333d53..3b0edc8 100644
--- a/src/tools/disks/zpool_status.rs
+++ b/src/tools/disks/zpool_status.rs
@@ -430,3 +430,38 @@ errors: No known data errors
Ok(())
}
+
+#[test]
+fn test_zpool_status_parser3() -> Result<(), Error> {
+
+ let output = r###" pool: bt-est
+ state: ONLINE
+ scan: none requested
+config:
+
+ NAME STATE READ WRITE CKSUM
+ bt-est ONLINE 0 0 0
+ mirror-0 ONLINE 0 0 0
+ /dev/sda1 ONLINE 0 0 0
+ /dev/sda2 ONLINE 0 0 0
+ mirror-1 ONLINE 0 0 0
+ /dev/sda3 ONLINE 0 0 0
+ /dev/sda4 ONLINE 0 0 0
+ logs
+ /dev/sda5 ONLINE 0 0 0
+
+errors: No known data errors
+"###;
+
+ let key_value_list = parse_zpool_status(&output)?;
+ for (k, v) in key_value_list {
+ println!("{} => {}", k,v);
+ if k == "config" {
+ let vdev_list = parse_zpool_status_config_tree(&v)?;
+ let _tree = vdev_list_to_tree(&vdev_list);
+ //println!("TREE1 {}", serde_json::to_string_pretty(&tree)?);
+ }
+ }
+
+ Ok(())
+}
--
2.20.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [pbs-devel] [PATCH proxmox-backup 5/5] get_disks: don't fail on zfs_devices
2020-07-08 12:59 [pbs-devel] [PATCH proxmox-backup 0/5] fix zfs/disk listings with special pool names Dominik Csapak
` (3 preceding siblings ...)
2020-07-08 12:59 ` [pbs-devel] [PATCH proxmox-backup 4/5] disks/zpool_status: add test for pool with special character Dominik Csapak
@ 2020-07-08 12:59 ` Dominik Csapak
2020-07-09 11:59 ` [pbs-devel] applied: " Dietmar Maurer
2020-07-09 11:40 ` [pbs-devel] [PATCH proxmox-backup 0/5] fix zfs/disk listings with special pool names Dietmar Maurer
5 siblings, 1 reply; 8+ messages in thread
From: Dominik Csapak @ 2020-07-08 12:59 UTC (permalink / raw)
To: pbs-devel
zfs does not have to be installed, so simply log an error and
continue, users still get an error when clicking directly on
ZFS
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
src/tools/disks.rs | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/tools/disks.rs b/src/tools/disks.rs
index a4c3e29..73f8370 100644
--- a/src/tools/disks.rs
+++ b/src/tools/disks.rs
@@ -743,7 +743,10 @@ pub fn get_disks(
let partition_type_map = get_partition_type_info()?;
- let zfs_devices = zfs_devices(&partition_type_map, None)?;
+ let zfs_devices = zfs_devices(&partition_type_map, None).or_else(|err| -> Result<HashSet<u64>, Error> {
+ eprintln!("error getting zfs devices: {}", err);
+ Ok(HashSet::new())
+ })?;
let lvm_devices = get_lvm_devices(&partition_type_map)?;
--
2.20.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [pbs-devel] [PATCH proxmox-backup 0/5] fix zfs/disk listings with special pool names
2020-07-08 12:59 [pbs-devel] [PATCH proxmox-backup 0/5] fix zfs/disk listings with special pool names Dominik Csapak
` (4 preceding siblings ...)
2020-07-08 12:59 ` [pbs-devel] [PATCH proxmox-backup 5/5] get_disks: don't fail on zfs_devices Dominik Csapak
@ 2020-07-09 11:40 ` Dietmar Maurer
5 siblings, 0 replies; 8+ messages in thread
From: Dietmar Maurer @ 2020-07-09 11:40 UTC (permalink / raw)
To: Proxmox Backup Server development discussion, Dominik Csapak
applied 1 to 4
> On 07/08/2020 2:59 PM Dominik Csapak <d.csapak@proxmox.com> wrote:
>
>
> this series adds functionality to allow zpools that have
> special characters in the name, such as ':','.','_', etc.
> (spaces are still disallowed)
>
> also fixed disk list when zfsutils-linux is not installed
> (the user still gets an error on the ZFS panel)
>
> also add some tests
>
> Dominik Csapak (5):
> api: add ZPOOL_NAME_SCHEMA and regex
> zpool_list: add tests for special pool names
> disks/zpool_list: allow some more characters for pool list
> disks/zpool_status: add test for pool with special character
> get_disks: don't fail on zfs_devices
>
> src/api2/node/disks/zfs.rs | 5 ++++-
> src/api2/types.rs | 2 ++
> src/tools/disks.rs | 5 ++++-
> src/tools/disks/zpool_list.rs | 32 +++++++++++++++++++++++++++---
> src/tools/disks/zpool_status.rs | 35 +++++++++++++++++++++++++++++++++
> 5 files changed, 74 insertions(+), 5 deletions(-)
>
> --
> 2.20.1
>
>
>
> _______________________________________________
> pbs-devel mailing list
> pbs-devel@lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
^ permalink raw reply [flat|nested] 8+ messages in thread
* [pbs-devel] applied: [PATCH proxmox-backup 5/5] get_disks: don't fail on zfs_devices
2020-07-08 12:59 ` [pbs-devel] [PATCH proxmox-backup 5/5] get_disks: don't fail on zfs_devices Dominik Csapak
@ 2020-07-09 11:59 ` Dietmar Maurer
0 siblings, 0 replies; 8+ messages in thread
From: Dietmar Maurer @ 2020-07-09 11:59 UTC (permalink / raw)
To: Proxmox Backup Server development discussion, Dominik Csapak
applied for now ...
> On 07/08/2020 2:59 PM Dominik Csapak <d.csapak@proxmox.com> wrote:
>
>
> zfs does not have to be installed, so simply log an error and
> continue, users still get an error when clicking directly on
> ZFS
>
> Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
> ---
> src/tools/disks.rs | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/src/tools/disks.rs b/src/tools/disks.rs
> index a4c3e29..73f8370 100644
> --- a/src/tools/disks.rs
> +++ b/src/tools/disks.rs
> @@ -743,7 +743,10 @@ pub fn get_disks(
>
> let partition_type_map = get_partition_type_info()?;
>
> - let zfs_devices = zfs_devices(&partition_type_map, None)?;
> + let zfs_devices = zfs_devices(&partition_type_map, None).or_else(|err| -> Result<HashSet<u64>, Error> {
> + eprintln!("error getting zfs devices: {}", err);
> + Ok(HashSet::new())
> + })?;
>
> let lvm_devices = get_lvm_devices(&partition_type_map)?;
>
> --
> 2.20.1
>
>
>
> _______________________________________________
> pbs-devel mailing list
> pbs-devel@lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-07-09 12:00 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-08 12:59 [pbs-devel] [PATCH proxmox-backup 0/5] fix zfs/disk listings with special pool names Dominik Csapak
2020-07-08 12:59 ` [pbs-devel] [PATCH proxmox-backup 1/5] api: add ZPOOL_NAME_SCHEMA and regex Dominik Csapak
2020-07-08 12:59 ` [pbs-devel] [PATCH proxmox-backup 2/5] zpool_list: add tests for special pool names Dominik Csapak
2020-07-08 12:59 ` [pbs-devel] [PATCH proxmox-backup 3/5] disks/zpool_list: allow some more characters for pool list Dominik Csapak
2020-07-08 12:59 ` [pbs-devel] [PATCH proxmox-backup 4/5] disks/zpool_status: add test for pool with special character Dominik Csapak
2020-07-08 12:59 ` [pbs-devel] [PATCH proxmox-backup 5/5] get_disks: don't fail on zfs_devices Dominik Csapak
2020-07-09 11:59 ` [pbs-devel] applied: " Dietmar Maurer
2020-07-09 11:40 ` [pbs-devel] [PATCH proxmox-backup 0/5] fix zfs/disk listings with special pool names Dietmar Maurer
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal