Skip to content

Commit

Permalink
Allow array at toplevel
Browse files Browse the repository at this point in the history
  • Loading branch information
shundhammer committed Feb 22, 2016
1 parent cecb3ab commit e04978b
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 59 deletions.
25 changes: 23 additions & 2 deletions src/lib/storage/abstract_device_factory.rb
Original file line number Diff line number Diff line change
Expand Up @@ -85,13 +85,34 @@ def load_yaml_file(filename)
# @param obj [Hash or Array<Hash>]
#
def build_tree(obj)
case obj
when Hash
build_tree_toplevel(obj)
when Array
obj.each do |element|
if element.is_a?(Hash)
build_tree_toplevel(element)
else
raise TypeError, "Expected Hash, not #{element}"
end
end
else
raise HierarchyError, "Expected Hash or Array at toplevel"
end
end

private

# Build the toplevel for a device tree starting with 'obj'.
#
# @param obj [Hash]
#
def build_tree_toplevel(obj)
name, content = break_up_hash(obj)
raise HierarchyError, "Unexpected toplevel object #{name}" unless valid_toplevel.include?(name)
build_tree_recursive(nil, name, content)
end

private

# Internal recursive version of build_tree: Build a device tree as child
# of 'parent' for a new hierarchy level for a factory product 'name' with
# content (parameters and sub-products) 'content'. 'parent' might be
Expand Down
118 changes: 61 additions & 57 deletions src/lib/storage/fake-devicegraphs.yml
Original file line number Diff line number Diff line change
@@ -1,58 +1,62 @@
---
disk:
name: /dev/sda
size: 1 TiB
partition_table: ms-dos
partitions:

- partition:
size: 2 GiB
name: /dev/sda1
type: primary
id: 0x82
file_system: swap
mount_point: swap
label: swap

- partition:
size: 100 GiB
name: /dev/sda2
type: primary
id: 0x7
file_system: ntfs
label: windows

- partition:
size: 60 GiB
name: /dev/sda3
type: primary
id: 0x83
file_system: ext4
mount_point: /
label: root

- partition:
size: unlimited
name: /dev/sda4
type: extended

- partition:
size: 200 GiB
name: /dev/sda5
type: logical
id: 0x83
file_system: xfs
mount_point: /home
label: home

- free:
size: 300 GiB

- partition:
size: 362 GiB
name: /dev/sda6
type: logical
id: 0x83
file_system: xfs
mount_point: /data
label: data
- disk:
name: /dev/sda
size: 1 TiB
partition_table: ms-dos
partitions:

- partition:
size: 2 GiB
name: /dev/sda1
type: primary
id: 0x82
file_system: swap
mount_point: swap
label: swap

- partition:
size: 100 GiB
name: /dev/sda2
type: primary
id: 0x7
file_system: ntfs
label: windows

- partition:
size: 60 GiB
name: /dev/sda3
type: primary
id: 0x83
file_system: ext4
mount_point: /
label: root

- partition:
size: unlimited
name: /dev/sda4
type: extended

- partition:
size: 200 GiB
name: /dev/sda5
type: logical
id: 0x83
file_system: xfs
mount_point: /home
label: home

- free:
size: 300 GiB

- partition:
size: 362 GiB
name: /dev/sda6
type: logical
id: 0x83
file_system: xfs
mount_point: /data
label: data

- disk:
name: /dev/sdb
size: 160 GiB

0 comments on commit e04978b

Please sign in to comment.