This document analyzes how UDisks2 D-Bus API looks and what approach to follow for exposing devicegraph details in the Agama API.
/dev/sda (Micron1)
/dev/sda1 /
/dev/sda2 swap
/org/freedesktop/UDisks2/drives/Micron1
org.freedesktop.UDisks2.Drive
/org/freedesktop/UDisks2/block_devices/sda
org.freedesktop.UDisks2.Block
org.freedesktop.UDisks2.PartitionTable
/org/freedesktop/UDisks2/block_devices/sda1
org.freedesktop.UDisks2.Block
org.freedesktop.UDisks2.Partition
org.freedesktop.UDisks2.Filesystem
/org/freedesktop/UDisks2/block_devices/sda2
org.freedesktop.UDisks2.Block
org.freedesktop.UDisks2.Partition
org.freedesktop.UDisks2.Swapspace
/dev/sda (Micron1)
/dev/sda1
/dev/sda2 PV
/dev/mapper/system_root
/dev/mapper/system_swap
/org/freedesktop/UDisks2/drives/Micron1
org.freedesktop.UDisks2.Drive
/org/freedesktop/UDisks2/block_devices/sda
org.freedesktop.UDisks2.Block
org.freedesktop.UDisks2.PartitionTable
/org/freedesktop/UDisks2/block_devices/sda1
org.freedesktop.UDisks2.Block
org.freedesktop.UDisks2.Partition
/org/freedesktop/UDisks2/block_devices/sda2
org.freedesktop.UDisks2.Block
org.freedesktop.UDisks2.Partition
org.freedesktop.UDisks2.PhysicalVolume
/org/freedesktop/UDisks2/block_devices/dm_2d0
org.freedesktop.UDisks2.Block
org.freedesktop.UDisks2.Block.LVM2
org.freedesktop.UDisks2.Filesystem
/org/freedesktop/UDisks2/block_devices/dm_2d1
org.freedesktop.UDisks2.Block
org.freedesktop.UDisks2.Block.LVM2
org.freedesktop.UDisks2.Swapspace
/org/freedesktop/UDisks2/lvm/system
org.freedesktop.UDisks2.VolumeGroup
/org/freedesktop/UDisks2/lvm/system/root
org.freedesktop.UDisks2.LogicalVolume
/org/freedesktop/UDisks2/lvm/system/swap
org.freedesktop.UDisks2.LogicalVolume
/dev/sda (Micron1)
/dev/sda1 (RAID member)
/dev/sda2 (RAID member)
/dev/md0
/dev/md0p1 /
/dev/md0p2 swap
/org/freedesktop/UDisks2/drives/Micron1
org.freedesktop.UDisks2.Drive
/org/freedesktop/UDisks2/block_devices/sda
org.freedesktop.UDisks2.Block
org.freedesktop.UDisks2.PartitionTable
/org/freedesktop/UDisks2/block_devices/sda1
org.freedesktop.UDisks2.Block
org.freedesktop.UDisks2.Partition
/org/freedesktop/UDisks2/block_devices/sda2
org.freedesktop.UDisks2.Block
org.freedesktop.UDisks2.Partition
/org/freedesktop/UDisks2/block_devices/md0
org.freedesktop.UDisks2.Block
org.freedesktop.UDisks2.PartitionTable
/org/freedesktop/UDisks2/block_devices/md0p1
org.freedesktop.UDisks2.Block
org.freedesktop.UDisks2.Block.Partition
org.freedesktop.UDisks2.Filesystem
/org/freedesktop/UDisks2/block_devices/md0p2
org.freedesktop.UDisks2.Block
org.freedesktop.UDisks2.Block.Partition
org.freedesktop.UDisks2.Swapspace
/org/freedesktop/UDisks2/mdraid/644aee1_4w555
org.freedesktop.UDisks2.MDRaid
API for exporting the available disk devices for calculating a proposal.
https://trello.com/c/zpweLQMI/3347-3-agama-selection-of-boot-disk
Note: some properties are temporary. They will be moved to its proper object after exposing block devices, lvm, etc.
/org/opensuse/Agama/Storage1/system/*
org.opensuse.Agama.Storage1.Drive
org.opensuse.Agama.Storage1.RAID
org.opensuse.Agama.Storage1.Block
org.opensuse.Agama.Storage1.PartitionTable
org.opensuse.Agama.Storage1.MD
org.opensuse.Agama.Storage1.Drive
UdevIds as
UdevPaths as
Vendor s
Model s
Bus s
Size u
Type s (values: disk, multipath, raid, dasd)
Driver s
Transport s (values: usb, iscsi, etc)
Systems as (e.g., Windows, Ubuntu Linux)
Info a{sv} ("Media" s , "DellBOSS" b)
org.opensuse.Agama.Storage1.RAID
Type s (values: raid0, raid1, raid5, etc)
org.opensuse.Agama.Storage1.Block
Device s
org.opensuse.Agama.Storage1.PartitionTable
Type s
org.opensuse.Agama.Storage1.MD
Active b
UUID s
Name s
Level s (values: raid0, raid1, raid5, etc)
Size u
Members as