Skip to content

Instantly share code, notes, and snippets.

@joseivanlopez
Last active May 11, 2023 10:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joseivanlopez/b9d2cda46bc16f2226b677532527c644 to your computer and use it in GitHub Desktop.
Save joseivanlopez/b9d2cda46bc16f2226b677532527c644 to your computer and use it in GitHub Desktop.

Agama Storage D-Bus API

This document analyzes how UDisks2 D-Bus API looks and what approach to follow for exposing devicegraph details in the Agama API.

UDisks2

Partitions

/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

Volume Groups

/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

MDRaids

/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

Agama

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment