`default-provider` for other interfaces

Hey all,

With Multipass planning to move to LXD as its default VM provider on Linux, we’ll need LXD to be installed on the host where Multipass is to work.

The default-provider plug attribute is only currently available on the content interface. Would it be possible to add this functionality to all plugs, or is it a conscious decision to avoid dependency chains on other interfaces?

Alternatively, could similar treatment be applied to just the lxd interface, since there’s nothing other than LXD out there providing the slot for it?

1 Like

in general we want to minimize snaps mentioning other snaps. Even ignoring that, it wouldn’t make sense to support this for all slots, it could make sense only for:

  • slots that can be provided by application snaps
  • default-provider is designed to depend on auto-connection rules to do the actual connection, so there should be a reasonable story around auto-connection for the interface
  • relating to auto-connection, it must also be the case that the consumer can consume the interface in a way that doesn’t interfere with other consumers, otherwise we probably wound’t grant auto-connection but then default-provider doesn’t make sense

I think lxd maybe would fit this but if we go there we would probably look to enable at least a similar group in one go.

Having resurrected this, let me state what we discussed:

  • it would likely require a store assertion
  • would be enabled on a case-by-case basis

A plugs declaration could look like so, still:

plugs:
  lxd:
    default-provider: lxd