forked from rook/rook
the only exception to a naive device list comparison had been to ignore drive UUID information which was unreliable when a device wasn't formatted / partitioned. however various users have reported different type of false positives that resulted in orchestration being run continuously due to the wrong observation that devices were changing. this patch fixes the cases we have observed and attempts to be slightly more conservative in the calculation. 1. the devlinks is ignored. when a device is setup for lvm, for example, the devlinks will be updated with different paths that point to the device in addition to its standard paths addressable by pci address. 2. in the lvm case, the "model" field and "filesystem" field may also change. 3. we ignore devices with devlinks that contain "usb" to avoid issues when using usb drives. 4. be smart about detecting device availability. if a device transitions from a non-empty (or has-partitions) state to an empty (or unpartitioned) state then orchestration is triggered. this like observing that a device is now available (e.g. in the allDevices case). however, when a device transistions from empty to non-empty, then this is ignored as while it is a change, it's generally a change associated with the new consumption of the device. fixes: #3059 fixes: #3185 fixes: #3131 Signed-off-by: Noah Watkins <noahwatkins@gmail.com>