Skip to content

preseed storage filtering not clear / failing to discover #781

Description

@wideawakening

i'm not able to filter the two available disks on each node.
ex.: on pc7b-ra8-n2: nvme1n1, nvme3n1

microcloud version: 2/stable, 2.1.0-3e8b183, rev 1144

ubuntu@pc7b-ra8-n2:~$ lsblk -d -o NAME,ROTA,TYPE,MODEL
NAME    ROTA TYPE MODEL
... loops
nvme2n1    0 disk INTEL SSDPF2KE064T1O
nvme1n1    0 disk INTEL SSDPF2KE064T1O
nvme0n1    0 disk INTEL SSDPF2KE064T1O
nvme3n1    0 disk INTEL SSDPF2KE064T1O

ubuntu@pc7b-ra8-n2:~$ lsblk
NAME                  MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
...
nvme2n1               259:0    0   5.8T  0 disk  
├─nvme2n1p1           259:1    0   488M  0 part  /boot/efi
└─nvme2n1p2           259:2    0   5.8T  0 part  
  └─md1                 9:1    0   5.8T  0 raid1 
    ├─vg0-lvephemeral 252:0    0   5.3T  0 lvm   
    ├─vg0-lvlog       252:1    0  93.1G  0 lvm   /var/log
    └─vg0-lvroot      252:2    0 465.7G  0 lvm   /
nvme1n1               259:3    0   5.8T  0 disk  
nvme0n1               259:4    0   5.8T  0 disk  
├─nvme0n1p1           259:6    0   488M  0 part  
└─nvme0n1p2           259:7    0   5.8T  0 part  
  └─md1                 9:1    0   5.8T  0 raid1 
    ├─vg0-lvephemeral 252:0    0   5.3T  0 lvm   
    ├─vg0-lvlog       252:1    0  93.1G  0 lvm   /var/log
    └─vg0-lvroot      252:2    0 465.7G  0 lvm   /
nvme3n1               259:5    0   5.8T  0 disk  

i tried several approaches

1 - partitioned/partitions attribute not usable
✅ (removed from documentation; filter not available)

seems partitioned attribute is not there anymore
partitions does exist though https://github.com/canonical/lxd/blob/c86603236167a43836c2766647e2fac97d79f899/shared/api/resource.go#L591
seems this attributed should not be used eitherway, since the partitioned disks are ignored https://github.com/canonical/microcloud/blob/main/service/system_information.go#L105

i also tried partritions == nil or len(partitions) == 0

##  Error: Remote storage filter cannot be defined with find_min less than 1                                                           
storage:
  ceph:
    - find:  partitioned == false 
      find_min: 1
      find_max: 2
      wipe: true

2 - should find filter be mandatory? i just want two available disks

## Error: Received empty remote disk filter
storage:
          ceph:
            - find_min: 1
              find_max: 2
              wipe: true
              encrypt: true

3 - does not detect SSD disks

## Failed to find at least 1 disks for filter "type == ssd"
        storage:
          ceph:
            - find: type == ssd
              find_min: 1
              find_max: 2
              wipe: true
              encrypt: true

4 - more than two available disks, when only 2 are unpartitioned

## Error: Found more than 2 disks for filter "size > 10GiB"
        storage:
          ceph:
            - find: size > 10GiB
              find_min: 1
              find_max: 2
              wipe: true
              encrypt: true

maybe i'm misunderstanding how this filtering is used, but i would request

  1. make the preseed disk filtering easier to understand, by having a microcloud generated log of the available disks, with the ResourcesStorageDisk attribute values. i'm using cloud-init right now, in case that gives more context

  2. the current format of pre-seed explanation in the docs https://documentation.ubuntu.com/microcloud/latest/microcloud/how-to/initialize/#minimal-preseed-using-multicast-discovery
    is not very easy to read due to the horizontal scroll.
    maybe having a non-code, per-attribute explanation would be better

Metadata

Metadata

Assignees

No one assigned

    Labels

    DocumentationDocumentation needs updatingIncompleteWaiting on more information from reporterJiraAllows the synchronization of a GitHub issue in Jira

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions