On Fri, 24 Oct 2014 14:53:06 +0200
Arvin Schnell
Hi,
Hi Arvin, thanks for sharing, I post below some comments.
my hackweek project was to evaluate using the boost graph library (BGL) in libstorage. For me the project was interesting and successful. I have documented it at https://github.com/aschnell/libstorage-bgl-eval/wiki. The code is also available there.
So now I would like to redesign the storage part of YaST. Here are the main steps required:
- Extend libstorage-bgl-eval to fully support disks, partitions and simply filesystems (probing, committing, testmodes, testsuite).
- Try to make a compatibility layer.
yes, compatibility layer is needed to smooth migration.
- Make the new API robust against API and ABI changes.
Sounds good, question is how?
- Export new API to Ruby (help would be good) for use by all YaST modules.
I think it would be very cool if we have in ruby nice object oriented API. I can help you with ruby bindings. I think it is usually better to have combination of C bindings and ruby code that make usage in ruby smoother.
- Get a simply installation working (two partitions, ext4 and swap).
- Extend libstorage-bgl-eval to current libstorage functionality. Maybe drop a few features, e.g. loop-back devices (once used for encryption).
- Make the new API suit the needs of all YaST modules (input from other developers required). If required add utility functions.
I think that if only one module need specific functionality, then it should do it itself. ( like bootloader do setting pmbr flag for disks ). If more modules need it, then it make sense to have it in libstorage.
- Make all code in YaST use new API (task for several developers).
For this step we really need some storage setup factory, so e.g. in bootloader I can replace old mocks of target maps with new stuff and change code.
- Make expert partitioner use new features, e.g. use disks without partition table for filesystems.
- Rewrite storage proposal (specification required!).
- Finally drop target-map (as decided during workshop).
That will be great step especially together with object oriented API. Then we can have something like Disk.find( bios_id: "0x80").find_partition(mount_to: "/boot").sw_raid? in bootloader.
- Drop compatibility layer.
In the end yast2-storage would ideally only contain dialogs and no logic for other YaST modules (since all of that moved to libstorage). But if some utility functions are easier to implement in Ruby they can stay there.
I think utility can be in ruby bindings of libstorage if it is easier to do it there.
I assume that altogether the redesigning will take more than half a year. Anyway I think it is required to keep the code maintainable and be prepared for new feature requests. Some existing features request might already be implemented along the way (e.g. https://fate.suse.com/316251).
ciao Arvin
Josef -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org To contact the owner, e-mail: yast-devel+owner@opensuse.org