scottchiefbaker / dool

Python3 compatible fork of dstat
GNU General Public License v3.0
332 stars 64 forks source link

Syntax to set disksets from commandline #35

Closed exuvo closed 1 year ago

exuvo commented 1 year ago
SUMMARY

Short: I would like the option to group some disks to -D and show the totals for each group ex: -D (sda,sdb,sdc),(sdd,sde,sdf) which then should only shows 2st totals for each group instead of a read/write per disk.

Longer: I have various software raids and some of them don't create any virtual devices that automatically sum up disk usage across the raid which forces me to show each individual device to dstat/dool ex -D sde,sdg,sdh,sdk,sdl,sda,sdc,sdd,sdf,md1,sdb. Here sdg,sdh,sdk,sdl are part of a zfs array. sda,sdc,sdd,sdf are part of a btrfs raid. I would very much like to sum up those two arrays to only show one read/write per array instead of 8st per disk. Suggested syntax: -D sde,(sdg,sdh,sdk,sdl),(sda,sdc,sdd,sdf),md1,sdb

In the code this feature already exists but is hardcoded and called diskset. The hardcoded values are:

self.diskset = {
  'local': ('sda', 'hd[a-d]'),
  'lores': ('sd[b-k]', 'sd[v-z]', 'sda[a-e]'),
  'hires': ('sd[l-u]', 'sda[f-o]'),
}

and can be used like dstat/dool -dD local,lores,highres

While i can modify the hardcoded values that is not very portable across machines where i am not root.

ISSUE TYPE
scottchiefbaker commented 1 year ago

Since it looks like most of this code is already written, we just need to expose it to the user via a param. How should we expect this to look at the command line? I'm thinking something like this:

dool --diskset os_drives:sda,sdb --diskset vault:vda,vdb,vdc

I'm not sure if we have any existing options that could take more than one value though. This might be slightly complicated.

scottchiefbaker commented 1 year ago

This code has landed and will be in the next release (which will be soon)