Wash returns wrong type ID for external plugin that uses core plugin entries
Closed this issue · 2 comments
Wash lets external plugin authors take advantage of core plugin entries. Currently, only the volume::fs
entry is used. These core entries have special type IDs meant to minimize conflicts. For volume::fs
, this is __volume::fs__
. However, external plugin#List returns the core plugin entry version of volume::fs
(i.e. volume.FS); this entry's type ID is the struct class name. Hence, there's a type ID mismatch. This affects commands like find
because find
cannot recurse into those entries (since its recursion stops at a nil schema).
Fix is to probably wrap core plugin entries into something that implements the external plugin entry interface.
Alternative fix is to just munge schema graph to use the raw type ID. E.g. instead of storing as __volume::fs__
, we store as plugin.RawTypeID(&volume.FS{})
. That's what I'll do.
Can revert puppetlabs-toy-chest/boltwash#9 once a fix for this is released.