diff --git a/docs/explanation/how-snaps-work/parallel-installs.md b/docs/explanation/how-snaps-work/parallel-installs.md index 791e942..6f0f0eb 100644 --- a/docs/explanation/how-snaps-work/parallel-installs.md +++ b/docs/explanation/how-snaps-work/parallel-installs.md @@ -9,13 +9,19 @@ myst: Parallel installs enable you to run multiple instances of the same snap on the same system. Each instance is completely isolated from all other instances, including its name, configuration, interface connections, data locations, services, applications and aliases. -This feature is currently considered experimental. In particular, *snap install* will fail if the same snap is already installed. As a result, to experiment with parallel installs, an *experimental feature-flag* must first be enabled: +Parallel installs are enabled by default from snapd 2.79. Earlier versions of snapd treated them as an experimental feature that had to be enabled explicitly. + +Not every snap can be installed as a parallel instance. Snaps that use unsupported interfaces or app properties are rejected when installed with an instance key. See {ref}`Snaps that are unsupported as parallel instances ` for details. + +To disable parallel installs, set the `experimental.parallel-instances` system option to `false`: ``` -sudo snap set system experimental.parallel-instances=true +sudo snap set system experimental.parallel-instances=false ``` -We recommend rebooting the system after toggling the _experimental.parallel-instances_ flag state to avoid potential namespace problems with snap applications that have already been run. +With parallel installs disabled, `snap install` fails when given an instance key. + +The native package of snapd 2.79 ships a new mount unit, crucial for the correct behavior of parallel instances of classic snaps. For systems that previously did not have the feature enabled and wish to use parallel instances of classic snaps, we recommend rebooting the system after updating the native package to a version >=2.79. ## Installing multiple instances @@ -90,6 +96,14 @@ network xkcd-webserver_foo:network :network manual network-bind xkcd-webserver_foo:network-bind :network-bind - ``` +Slots provided by a parallel instance are never used for automatic connections. If an instance provides a slot that another snap needs, connect it manually: + +``` +sudo snap connect : _: +``` + +Some interfaces are not supported on parallel instances. See {ref}`Snaps that are unsupported as parallel instances ` for details. + ### Services As with Interfaces, {ref}`Services ` function the same with multiple instances of a snap as they do from any one snap to another. @@ -125,6 +139,7 @@ xkcd-webserver.xkcd-webserver enabled inactive xkcd-webserver_foo.xkcd-webserver enabled active ``` +(interfaces-parallel-installs-aliases)= ## Application names and aliases Snap application names for multiple instances are adjusted according to the following pattern: @@ -175,6 +190,7 @@ When aliases trigger a conflict during snap installation, try passing `--unalias $ sudo snap install snap-with-conflicting-alias_foo --unaliased ``` +(interfaces-parallel-installs-environment)= ## Snap environment, data and namespace When a snap application is run, its environment is populated with a number of `SNAP*` environment variables. @@ -226,6 +242,131 @@ However, due to security concerns, user data locations are *not* similarly adjus | HOME | /home//snap/hello-world/27 | /home//snap/hello-world_foo/27 | | XDG_RUNTIME_DIR | /run/user//snap.hello-world | /run/user//snap.hello-world_foo | +(interfaces-parallel-installs-unsupported)= +## Snaps that are unsupported as parallel instances + +Certain snaps, due to their nature, can never be parallel installed: +- snapd +- core base +- kernel +- gadget + +All other snaps are subject to feature checking. Snapd checks every snap installed with an instance key and rejects it if it uses a feature that cannot work with more than one instance. + +### Unsupported interfaces + +Some interfaces give the snap exclusive ownership of a system-wide resource, such as a well-known D-Bus name. Others allow operations on shared hardware or kernel state that would conflict if performed by more than one instance. A snap cannot be installed as a parallel instance (unless specified with an explicit bypass flag; see {ref}`Installing an unsupported snap anyway `) if it declares a plug or slot for one of these interfaces on an unsupported side: + +| Interface | Plug supported | Slot supported | +|-----------|----------------|----------------| +| {ref}`acrn-support ` | No | Yes | +| {ref}`adb-support ` | No | Yes | +| {ref}`audio-playback ` | Yes | No | +| {ref}`auditd-support ` | No | Yes | +| {ref}`avahi-control ` | Yes | No | +| {ref}`avahi-observe ` | Yes | No | +| {ref}`bluez ` | Yes | No | +| {ref}`checkbox-support ` | No | Yes | +| {ref}`classic-support ` | No | Yes | +| {ref}`core-support ` | No | No | +| {ref}`cuda-driver-libs ` | Yes | No | +| {ref}`dbus ` | Yes | No | +| {ref}`desktop ` | Only without `desktop-file-ids` | No | +| {ref}`dm-crypt ` | No | Yes | +| {ref}`docker ` | Yes | No | +| {ref}`docker-support ` | No | Yes | +| {ref}`dsp ` | No | Yes | +| {ref}`egl-driver-libs ` | Yes | No | +| {ref}`firmware-updater-support ` | No | Yes | +| {ref}`fpga ` | No | Yes | +| {ref}`fwupd ` | Yes | No | +| {ref}`gbm-driver-libs ` | Yes | No | +| {ref}`greengrass-support ` | No | Yes | +| {ref}`kubernetes-support ` | No | Yes | +| {ref}`location-control ` | Yes | No | +| {ref}`location-observe ` | Yes | No | +| {ref}`lxd-support ` | No | Yes | +| {ref}`maliit ` | Yes | No | +| {ref}`media-hub ` | Yes | No | +| {ref}`microceph-support ` | No | Yes | +| {ref}`microstack-support ` | No | Yes | +| {ref}`mir ` | Yes | No | +| {ref}`modem-manager ` | Yes | No | +| {ref}`multipass-support ` | No | Yes | +| {ref}`network-manager ` | Yes | No | +| {ref}`nomad-support ` | No | Yes | +| {ref}`nvidia-drivers-support ` | No | Yes | +| `nvidia-video-driver-libs` | Yes | No | +| {ref}`ofono ` | Yes | No | +| {ref}`online-accounts-service ` | Yes | No | +| {ref}`opengl-driver-libs ` | Yes | No | +| {ref}`opengles-driver-libs ` | Yes | No | +| {ref}`openvswitch-support ` | No | Yes | +| {ref}`physical-memory-control ` | No | Yes | +| {ref}`pipewire ` | Yes | No | +| {ref}`pkcs11 ` | Yes | No | +| {ref}`posix-mq ` | No | No | +| {ref}`pulseaudio ` | Yes | No | +| {ref}`ros-snapd-support ` | No | Yes | +| {ref}`shared-memory ` | Only with `private: true` | No | +| {ref}`steam-support ` | No | Yes | +| {ref}`storage-framework-service ` | Yes | No | +| {ref}`thumbnailer-service ` | Yes | No | +| {ref}`ubuntu-download-manager ` | Yes | No | +| {ref}`udisks2 ` | Yes | No | +| {ref}`unity8 ` | Yes | No | +| {ref}`unity8-calendar ` | Yes | No | +| {ref}`unity8-contacts ` | Yes | No | +| {ref}`upower-observe ` | Yes | No | +| `vulkan-driver-libs` | Yes | No | +| {ref}`wayland ` | Yes | No | +| {ref}`x11 ` | Yes | No | +| {ref}`xilinx-dma ` | No | Yes | + +When an instance cannot be installed, the error names the plug or slot responsible and the reason, for example: + +``` +cannot install snap "network-manager_foo" as parallel instance: slot "service" with interface "network-manager" is not supported for parallel instances: owning a unique global resource cannot have parallel instances +``` + +### Unsupported app properties + +A snap is unsupported as a parallel instance if any of its apps set one of the following properties in `snap.yaml`: + +* `common-id`: the desktop file ID referenced by AppStream metadata is unique on the system. +* `bus-name`: the well-known D-Bus name the app claims is unique on the system. +* `activates-on`: D-Bus activation requires a `dbus` slot, which is not supported on parallel instances. + +(interfaces-parallel-installs-bypass)= +### Installing an unsupported snap anyway + +Users who understand and accept the risks of conflicts between instances may bypass these checks with `--allow-unsupported-instances`: + +``` +sudo snap install --allow-unsupported-instances _ +``` + +Snapd remembers this choice for the instance, so later refreshes are not blocked. + +If a refresh introduces an unsupported plug, slot or app property to an instance that is already installed and was fully supported, snapd blocks the refresh and adds a warning visible with `snap warnings`. To refresh the instance anyway, run: + +``` +sudo snap refresh --allow-unsupported-instances _ +``` + +`--allow-unsupported-instances` can only be used with snaps installed with an instance key. + +(interfaces-parallel-installs-shared-resources)= +### Interfaces that control shared system resources + +Some supported interfaces grant control over a resource that is shared by the whole system, such as block devices or network ports. Each instance of a snap that uses one of these interfaces acts on the same system resource, and snapd does not coordinate between them. Before running more than one instance of a snap that uses such an interface, make sure that the instances are configured to manage different resources, or that only one instance is active at a time. + +## Classic confinement + +Snaps with {ref}`classic confinement ` can be installed as parallel instances, but may require some setup on the part of the user, depending on the snap. Check the relevant snap's documentation for more details. + +As mentioned in {ref}`the beginning description of parallel instances `, for correct behavior of parallel instances of classic snaps, systems that previously did not have parallel instances enabled yet had at least one snap installed should reboot their system after updating the native package to snapd >=2.79. + ## Current limitations There are a few limitations with parallel installs that will be addressed in subsequent `snapd` releases. @@ -242,6 +383,7 @@ Applications built using most popular frameworks, such as Gtk/glib or Qt, and th Snaps may provide APIs consumed by other snaps or the host system at some well known locations or addresses, such as DBus service names, /dev/shm objects or semaphores, abstract socket addresses. While the default AppArmor template has been updated to allow only instance specific access, connecting interfaces may allow a wider access capabilities that can lead to conflicts between instances of the same snap. +(interfaces-parallel-installs-ports)= #### Ports When snapd installs a snap with services, the services are automatically started. Services trying to bind to the same port may fail or function incorrectly. Such snaps should deliver means for configuration of the service via configure hooks. @@ -270,11 +412,15 @@ Repeated failed starts of a service due to a port already in use can trigger sys #### DBus names -Services exporting the API on DBus under a well known name may conflict with other instances of the same snap. Those may require fixes from application or snap developers. +Snaps that own a well-known D-Bus name, through a `dbus` slot or the `bus-name` app property, are not supported as parallel instances. See {ref}`interfaces-parallel-installs-unsupported`. + +Snaps with plug-side `dbus` interface declarations are supported. #### `/dev/shm` -The default AppArmor profile allows instance specific access only. Applications hardcoding paths can break. Note that some interfaces such as `mir` allow a wider access to `/dev/shm`. Such snap would need to be updated to made instance aware. +The default AppArmor profile allows instance specific access only. Applications hardcoding paths can break. + +The `shared-memory` interface is only supported on parallel instances for plugs with the `private` attribute set to `true`, which gives each instance its own private `/dev/shm`. Slot-side parallel installations with `shared-memory` are not supported. Note that some interfaces such as `mir` allow a wider access to `/dev/shm`. Such a snap would need to be updated to made instance aware. #### Socket activation @@ -285,4 +431,3 @@ Snaps can use `listen-stream` socket definitions of three kinds: a network addre * **`AF_UNIX` abstract sockets** must be declared with a `@snap..` prefix. When generating the systemd socket unit for a snap instance, snapd automatically remaps this prefix to `@snap..`, so each instance listens on its own abstract address without colliding with other instances. Clients must connect using the instance-qualified address, for example `@snap.hello-world_foo.socket` rather than `@snap.hello-world.socket`. If, after any variable expansion or instance remapping, the resulting socket address exceeds the maximum length of 108 bytes allowed for a [Unix domain socket](https://man7.org/linux/man-pages/man7/unix.7.html) address, snapd fails to generate the socket unit and reports an error. - diff --git a/docs/reference/development/experimental-features.md b/docs/reference/development/experimental-features.md index f2cac5b..13a599e 100644 --- a/docs/reference/development/experimental-features.md +++ b/docs/reference/development/experimental-features.md @@ -55,7 +55,7 @@ The following table lists all the features considered experimental. | Name | Feature Flag | Date Introduced | Enabled by Default | Notes | | :--- | :----------- | :-------------- | :----------------- | :---- | | {ref}`Hotplug ` | hotplug | Jul 2018 (snapd 2.34) | NO | It controls the availability of dynamically creating slots based on system hardware. Currently only serial ports are supported (serial-port interface). | -| {ref}`ParallelInstances ` | parallel-instances | Jun 2018 (snapd 2.34) | NO | It controls the availability installing a snap multiple times. Layouts are not working properly with parallel installs due to problems with persistent mounts. | +| {ref}`Parallel installs ` | parallel-instances | Jun 2018 (snapd 2.34) | YES (snapd 2.79) | Some interfaces and app properties are not supported on parallel instances. See {ref}`interfaces-parallel-installs-unsupported`. | | HiddenSnapDataHomeDir | hidden-snap-folder | Aug 2020 (snapd 2.46) | NO | It controls whether snap data is stored in ~/.snap/data instead of ~/snap. | | UserDaemons | user-daemons | Aug 2020 (snapd 2.46) | NO | It controls the availability of user mode service support. Snapcraft needs to enable the `daemon-scope` setting. | | MoveSnapHomeDir | move-snap-home-dir | Jul 2022 (snapd 2.57) | NO | It controls whether snap user data under ~/snap (or ~/.snap/data) can be moved to ~/Snap.| diff --git a/docs/reference/interfaces/acrn-support-interface.md b/docs/reference/interfaces/acrn-support-interface.md index 8ad1d94..3fd6152 100644 --- a/docs/reference/interfaces/acrn-support-interface.md +++ b/docs/reference/interfaces/acrn-support-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: acrn-support interface +--- + (interfaces-acrn-support-interface)= # acrn-support interface @@ -11,6 +17,10 @@ The `acrn` interface allows access to, and control of, user virtual machines us **{ref}`Auto-connect `**: no
**{ref}`Super-privileged `**: no
+```{note} +The `acrn-support` plug is {ref}`unsupported for parallel instances `. +``` + ### Code examples The following (third-party) repository contains recipes to create snap packages for ACRN: https://github.com/gvancuts/acrn-snap diff --git a/docs/reference/interfaces/adb-support-interface.md b/docs/reference/interfaces/adb-support-interface.md index 82420cb..4b76db0 100644 --- a/docs/reference/interfaces/adb-support-interface.md +++ b/docs/reference/interfaces/adb-support-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: adb-support interface +--- + (interfaces-adb-support-interface)= # adb-support interface @@ -12,6 +18,10 @@ **Auto-connect**: no +```{note} +The `adb-support` plug is {ref}`unsupported for parallel instances `. +``` + Requires snapd version _2.36+_. @@ -21,4 +31,3 @@ The adb-support interface is used in the _guiscrcpy_ snap: - diff --git a/docs/reference/interfaces/audio-playback-interface.md b/docs/reference/interfaces/audio-playback-interface.md index fa39a26..562bddb 100644 --- a/docs/reference/interfaces/audio-playback-interface.md +++ b/docs/reference/interfaces/audio-playback-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: audio-playback interface +--- + (interfaces-audio-playback-interface)= # audio-playback interface @@ -34,6 +40,10 @@ snap connect vlc:audio-playback **Auto-connect**: yes +```{note} +The `audio-playback` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` +

Code examples

The snapcraft.yaml for [VLC](https://github.com/videolan/vlc) includes audio-playback configuration: @@ -41,4 +51,3 @@ The snapcraft.yaml for [VLC](https://github.com/videolan/vlc) includes audio-pla The source code for this interface is in the *snapd* repository: - diff --git a/docs/reference/interfaces/auditd-support-interface.md b/docs/reference/interfaces/auditd-support-interface.md index 8259257..5ab40a5 100644 --- a/docs/reference/interfaces/auditd-support-interface.md +++ b/docs/reference/interfaces/auditd-support-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: auditd-support interface +--- + (interfaces-auditd-support)= # auditd-support interface @@ -8,6 +14,10 @@ The `auditd-support` interface permits snaps to operate as the [`auditd`](https: **{ref}`Auto-connect `**: no
**{ref}`Super-privileged `**: yes
+```{note} +The `auditd-support` plug is {ref}`unsupported for parallel instances `. +``` + Unlike other `*-support` interfaces, there is no single official `auditd` snap for which this interface was intended to be used. Instead, snap packagers who wish to ship their own snap containing `auditd` or serving the role of `auditd` may request installation and connection of this interface. The `auditd-support` interface grants access to the [`CAP_AUDIT_CONTROL` capability](https://www.man7.org/linux/man-pages/man7/capabilities.7.html), along with access to files commonly required by `auditd`. @@ -18,4 +28,3 @@ The test code can be found in the snapd repository:
https://github.com/canon The source code for the interface is in the snapd repository:
https://github.com/canonical/snapd/blob/master/interfaces/builtin/auditd_support.go - diff --git a/docs/reference/interfaces/avahi-control-interface.md b/docs/reference/interfaces/avahi-control-interface.md index a2e9619..2e4756b 100644 --- a/docs/reference/interfaces/avahi-control-interface.md +++ b/docs/reference/interfaces/avahi-control-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: avahi-control interface +--- + (interfaces-avahi-control-interface)= # avahi-control interface @@ -5,6 +11,9 @@ **Auto-connect**: no -Requires snapd version _2.28+_. +```{note} +The `avahi-control` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` +Requires snapd version _2.28+_. diff --git a/docs/reference/interfaces/avahi-observe-interface.md b/docs/reference/interfaces/avahi-observe-interface.md index aef948c..63c8816 100644 --- a/docs/reference/interfaces/avahi-observe-interface.md +++ b/docs/reference/interfaces/avahi-observe-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: avahi-observe interface +--- + (interfaces-avahi-observe-interface)= # avahi-observe interface @@ -5,4 +11,7 @@ **Auto-connect**: no +```{note} +The `avahi-observe` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` diff --git a/docs/reference/interfaces/block-devices-interface.md b/docs/reference/interfaces/block-devices-interface.md index 7461583..dbcb650 100644 --- a/docs/reference/interfaces/block-devices-interface.md +++ b/docs/reference/interfaces/block-devices-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: block-devices interface +--- + (interfaces-block-devices-interface)= # block-devices interface @@ -6,6 +12,10 @@ **{ref}`Auto-connect `**: no
**{ref}`Super-privileged `**: yes
+```{caution} +This interface controls a resource shared by the whole system. Snaps that use it can be installed as parallel instances, but every instance acts on the same system resource and snapd does not coordinate between them. Make sure each instance manages different resources, or run only one instance at a time. See {ref}`Snaps that are unsupported as parallel instances ` for details.. +``` + Requires snapd version _2.37+_. When the plug sets `allow-partitions` boolean attribute to `true`, the interface will grant access to individual partition devices (e.g. `/dev/sda1`, `/dev/mmcblk0p1`). The plug needs to be declared in the following manner: diff --git a/docs/reference/interfaces/bluez-interface.md b/docs/reference/interfaces/bluez-interface.md index 5b3d70d..37c51a0 100644 --- a/docs/reference/interfaces/bluez-interface.md +++ b/docs/reference/interfaces/bluez-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: bluez interface +--- + (interfaces-bluez-interface)= # bluez interface @@ -10,4 +16,8 @@ For example, a game with a _bluez_ plug could connect to the system's _bluez_ sl **Auto-connect**: no +```{note} +The `bluez` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` + diff --git a/docs/reference/interfaces/checkbox-support-interface.md b/docs/reference/interfaces/checkbox-support-interface.md index 3753074..df50a5d 100644 --- a/docs/reference/interfaces/checkbox-support-interface.md +++ b/docs/reference/interfaces/checkbox-support-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: checkbox-support interface +--- + (ref-checkbox-support-interface_checkbox-support-interface)= # checkbox-support interface @@ -11,6 +17,10 @@ The interface is allowed to run on both core and classic systems, so that certif **Auto-connect**: no +```{note} +The `checkbox-support` plug is {ref}`unsupported for parallel instances `. +``` + ### Code examples The source code for this interface is in the *snapd* repository: diff --git a/docs/reference/interfaces/classic-support-interface.md b/docs/reference/interfaces/classic-support-interface.md index 2c73e53..de1c2cb 100644 --- a/docs/reference/interfaces/classic-support-interface.md +++ b/docs/reference/interfaces/classic-support-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: classic-support interface +--- + (interfaces-classic-support-interface)= # classic-support interface @@ -14,6 +20,10 @@ Requires snapd version _2.23+_. **{ref}`Auto-connect `**: no
**{ref}`Super-privileged `**: yes
+```{note} +The `classic-support` plug is {ref}`unsupported for parallel instances `. +``` + ### Code examples The test code can be found in the snapd repository: https://github.com/canonical/snapd/blob/master/interfaces/builtin/classic_support_test.go diff --git a/docs/reference/interfaces/core-support-interface.md b/docs/reference/interfaces/core-support-interface.md index 1a785bb..71e249d 100644 --- a/docs/reference/interfaces/core-support-interface.md +++ b/docs/reference/interfaces/core-support-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: core-support interface +--- + (interfaces-core-support-interface)= # core-support interface @@ -5,6 +11,10 @@ **Auto-connect**: no +```{note} +This interface is {ref}`unsupported for parallel instances `. +``` + Deprecated since snap version _2.24_. diff --git a/docs/reference/interfaces/cpu-control-interface.md b/docs/reference/interfaces/cpu-control-interface.md index 9bdf048..c7e0ec6 100644 --- a/docs/reference/interfaces/cpu-control-interface.md +++ b/docs/reference/interfaces/cpu-control-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: cpu-control interface +--- + (interfaces-cpu-control-interface)= # cpu-control interface @@ -5,6 +11,10 @@ **Auto-connect**: no +```{caution} +This interface controls a resource shared by the whole system. Snaps that use it can be installed as parallel instances, but every instance acts on the same system resource and snapd does not coordinate between them. Make sure each instance manages different resources, or run only one instance at a time. See {ref}`Snaps that are unsupported as parallel instances ` for details.. +``` + Requires snapd version _2.35+_. diff --git a/docs/reference/interfaces/cuda-driver-libs-interface.md b/docs/reference/interfaces/cuda-driver-libs-interface.md index ed21e92..498318b 100644 --- a/docs/reference/interfaces/cuda-driver-libs-interface.md +++ b/docs/reference/interfaces/cuda-driver-libs-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: cuda-driver-libs interface +--- + (interfaces-cuda-driver-libs)= # cuda-driver-libs interface @@ -10,6 +16,10 @@ The `cuda-driver-libs` interface permits access to CUDA acceleration on Nvidia G **Auto-connect**: no +```{note} +The `cuda-driver-libs` slot is {ref}`unsupported for parallel instances `. The library source files exported by the slot cannot distinguish between instances. +``` +

Code examples

The source code for this interface is in the *snapd* repository: diff --git a/docs/reference/interfaces/dbus-interface.md b/docs/reference/interfaces/dbus-interface.md index 7889c91..1fbca40 100644 --- a/docs/reference/interfaces/dbus-interface.md +++ b/docs/reference/interfaces/dbus-interface.md @@ -16,6 +16,10 @@ myst: * `name` (plug): well-known D-Bus connection name of the service from the providing snap * `bus` (plug): D-Bus bus to use for providing snap +```{note} +The `dbus` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` + Snaps that want to communicate via a well-known D-Bus connection name need to have matching `bus` and `name` attributes and then be connected via `snap connect`. Snaps specifying `bus: system` will have a default D-Bus bus policy that allows `root` to own the name and anyone to send to a destination that matches the well-known name (eg, `org.foo.bar`). Once connected, the consuming snap may communicate with the providing snap via: * the specified well-known D-Bus connection name (eg, `org.foo.bar`) diff --git a/docs/reference/interfaces/desktop-interface.md b/docs/reference/interfaces/desktop-interface.md index b4a8cf6..df4369c 100644 --- a/docs/reference/interfaces/desktop-interface.md +++ b/docs/reference/interfaces/desktop-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: desktop interface +--- + (interfaces-desktop-interface)= # desktop interface @@ -6,3 +12,7 @@ **Auto-connect**: yes
**Attributes**:
* `desktop-file-ids` (plug): optional, list of desktop file ids with valid D-Bus well-known names (e.g. `[org.example, org.example.Foo]`). This would indicate that the snap would like to install desktop file(s) named `org.example.desktop` and `org.example.Foo.desktop` (found under `meta/gui`) without name mangling (ie, without the snap name prefix) (requires *snapd 2.66*). + +```{note} +The `desktop` slot is {ref}`unsupported for parallel instances `. The `desktop` plug is supported for parallel instances only if it does not set `desktop-file-ids`. +``` diff --git a/docs/reference/interfaces/dm-crypt-interface.md b/docs/reference/interfaces/dm-crypt-interface.md index e91cfea..3f97528 100644 --- a/docs/reference/interfaces/dm-crypt-interface.md +++ b/docs/reference/interfaces/dm-crypt-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: dm-crypt interface +--- + (interfaces-dm-crypt-interface)= # dm-crypt interface @@ -15,6 +21,10 @@ The `dm-crypt` interface enables the following access functions to [dm-crypt]( **{ref}`Auto-connect `**: no
**{ref}`Super-privileged `**: yes
+```{note} +The `dm-crypt` plug is {ref}`unsupported for parallel instances `. Instances would perform conflicting operations on the same system resources. +``` + Often, _dm-crypt_ is statically linked into the kernel (`CONFIG_DM_CRYPT=y`). This is expected when working with custom kernels on projects where disk encryption is required. ### Code examples diff --git a/docs/reference/interfaces/dm-multipath-interface.md b/docs/reference/interfaces/dm-multipath-interface.md index 5628943..e3b67f0 100644 --- a/docs/reference/interfaces/dm-multipath-interface.md +++ b/docs/reference/interfaces/dm-multipath-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: dm-multipath interface +--- + (ref-dm-multipath-interface_dm-multipath-interface)= # dm-multipath interface @@ -10,6 +16,10 @@ For further details on interfaces, see {ref}`How to connect interfaces `**: no
**{ref}`Super-privileged `**: yes
+```{caution} +This interface controls a resource shared by the whole system. Snaps that use it can be installed as parallel instances, but every instance acts on the same system resource and snapd does not coordinate between them. Make sure each instance manages different resources, or run only one instance at a time. See {ref}`Snaps that are unsupported as parallel instances ` for details.. +``` + ### Code examples The test code can be found in the snapd repository:
https://github.com/canonical/snapd/blob/master/interfaces/builtin/dm_multipath_test.go diff --git a/docs/reference/interfaces/docker-interface.md b/docs/reference/interfaces/docker-interface.md index 9505540..c3f8386 100644 --- a/docs/reference/interfaces/docker-interface.md +++ b/docs/reference/interfaces/docker-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: docker interface +--- + (interfaces-docker-interface)= # docker interface @@ -19,6 +25,10 @@ See {ref}`Interface management `**: no
**{ref}`Super-privileged `**: yes
+```{note} +The `docker` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` + For distribution via the [Snap store ](https://snapcraft.io/store), consumers of this interface require an approved {ref}`snap declaration `. ### Example implementation diff --git a/docs/reference/interfaces/docker-support-interface.md b/docs/reference/interfaces/docker-support-interface.md index cb0ec7d..cd72732 100644 --- a/docs/reference/interfaces/docker-support-interface.md +++ b/docs/reference/interfaces/docker-support-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: docker-support interface +--- + (interfaces-docker-support-interface)= # docker-support interface @@ -6,6 +12,10 @@ **{ref}`Auto-connect `**: no **{ref}`Super-privileged `**: yes +```{note} +The `docker-support` plug is {ref}`unsupported for parallel instances `. +``` + **Attributes:** * `privileged-containers` (plug): true|false (defaults to ``false``) diff --git a/docs/reference/interfaces/dsp-interface.md b/docs/reference/interfaces/dsp-interface.md index 1e4e35d..0654c4a 100644 --- a/docs/reference/interfaces/dsp-interface.md +++ b/docs/reference/interfaces/dsp-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: dsp interface +--- + (interfaces-dsp-interface)= # dsp interface @@ -9,6 +15,10 @@ The `dsp` interface allows for the control of digital signal processors (DSPs) o **Auto-connect**: no +```{note} +The `dsp` plug is {ref}`unsupported for parallel instances `. Instances would perform conflicting operations on the same system resources. +``` + This interface allows privileged access to hardware and kernel drivers related to the digital signal processor and thus is only allowed on specific devices providing the slot via a gadget and is also not auto-connected. Requires snapd version _2.51+_. diff --git a/docs/reference/interfaces/egl-driver-libs-interface.md b/docs/reference/interfaces/egl-driver-libs-interface.md index cc55140..4f937e3 100644 --- a/docs/reference/interfaces/egl-driver-libs-interface.md +++ b/docs/reference/interfaces/egl-driver-libs-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: egl-driver-libs interface +--- + (interfaces-egl-driver-libs)= # egl-driver-libs interface @@ -9,6 +15,10 @@ The `egl-driver-libs` interface permits access to EGL the graphics sub-system. **Auto-connect**: no +```{note} +The `egl-driver-libs` slot is {ref}`unsupported for parallel instances `. The library source files exported by the slot cannot distinguish between instances. +``` + ### Code examples The source code for this interface is in the *snapd* repository: diff --git a/docs/reference/interfaces/firewall-control-interface.md b/docs/reference/interfaces/firewall-control-interface.md index 7570fba..5e1d542 100644 --- a/docs/reference/interfaces/firewall-control-interface.md +++ b/docs/reference/interfaces/firewall-control-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: firewall-control interface +--- + (interfaces-firewall-control-interface)= # firewall-control interface @@ -5,4 +11,8 @@ **Auto-connect**: no +```{caution} +This interface controls a resource shared by the whole system. Snaps that use it can be installed as parallel instances, but every instance acts on the same system resource and snapd does not coordinate between them. Make sure each instance manages different resources, or run only one instance at a time. See {ref}`Snaps that are unsupported as parallel instances ` for details.. +``` + diff --git a/docs/reference/interfaces/firmware-updater-support-interface.md b/docs/reference/interfaces/firmware-updater-support-interface.md index a6f3868..7374a86 100644 --- a/docs/reference/interfaces/firmware-updater-support-interface.md +++ b/docs/reference/interfaces/firmware-updater-support-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: firmware-updater-support interface +--- + (ref-firmware-updater-support-interface_firmware-updater-support-interface)= # firmware-updater-support interface @@ -8,6 +14,10 @@ The `firmware-updater-support` interface allows a snap to operate as the Firmwar **{ref}`Auto-connect `**: no
**{ref}`Super-privileged `**: yes
+```{note} +The `firmware-updater-support` plug is {ref}`unsupported for parallel instances `. +``` + ### Code examples The test code can be found in the snapd repository:
https://github.com/canonical/snapd/blob/master/interfaces/builtin/firmware_updater_support_test.go diff --git a/docs/reference/interfaces/fpga-interface.md b/docs/reference/interfaces/fpga-interface.md index 7e1a984..8bd6874 100644 --- a/docs/reference/interfaces/fpga-interface.md +++ b/docs/reference/interfaces/fpga-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: fpga interface +--- + (interfaces-fpga-interface)= # fpga interface @@ -9,6 +15,10 @@ The `fpga` interface allows access to the [FPGA subsystem](https://www.kernel.or **Auto-connect**: no **Allow-installation**: yes +```{note} +The `fpga` plug is {ref}`unsupported for parallel instances `. Instances would perform conflicting operations on the same system resources. +``` + Devices: `/dev/fpga[0-9]* rw,` @@ -18,4 +28,3 @@ Devices: The test code can be found in the snapd repository: https://github.com/canonical/snapd/blob/master/interfaces/builtin/fpga_test.go The source code for the interface is in the snapd repository:[https://github.com/canonical/snapd/blob/master/interfaces/builtin/fpga.go](https://github.com/canonical/snapd/blob/master/interfaces/builtin/fpga.go) - diff --git a/docs/reference/interfaces/fwupd-interface.md b/docs/reference/interfaces/fwupd-interface.md index 06db557..cb2748e 100644 --- a/docs/reference/interfaces/fwupd-interface.md +++ b/docs/reference/interfaces/fwupd-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: fwupd interface +--- + (interfaces-fwupd-interface)= # fwupd interface @@ -6,4 +12,7 @@ **{ref}`Auto-connect `**: no
+```{note} +The `fwupd` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` diff --git a/docs/reference/interfaces/gbm-driver-libs-interface.md b/docs/reference/interfaces/gbm-driver-libs-interface.md index 7704bef..9f4ffd9 100644 --- a/docs/reference/interfaces/gbm-driver-libs-interface.md +++ b/docs/reference/interfaces/gbm-driver-libs-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: gbm-driver-libs interface +--- + (ref-gbm-driver-libs-interface_gbm-driver-libs-interface)= # gbm-driver-libs interface @@ -10,6 +16,10 @@ For further details on interfaces, see {ref}`How to connect interfaces `**: no
**{ref}`Super-privileged `**: yes
+```{note} +The `gbm-driver-libs` slot is {ref}`unsupported for parallel instances `. The client driver symlink exported by the slot cannot distinguish between instances. +``` + ### Code examples The test code can be found in the snapd repository:
https://github.com/canonical/snapd/blob/master/interfaces/builtin/gbm_driver_libs_test.go diff --git a/docs/reference/interfaces/gpio-control-interface.md b/docs/reference/interfaces/gpio-control-interface.md index c7ca3ec..560dfce 100644 --- a/docs/reference/interfaces/gpio-control-interface.md +++ b/docs/reference/interfaces/gpio-control-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: gpio-control interface +--- + (interfaces-gpio-control-interface)= # gpio-control interface @@ -16,6 +22,10 @@ This interface is used for: **{ref}`Auto-connect `**: no
**{ref}`Super-privileged `**: yes
+```{caution} +This interface controls a resource shared by the whole system. Snaps that use it can be installed as parallel instances, but every instance acts on the same system resource and snapd does not coordinate between them. Make sure each instance manages different resources, or run only one instance at a time. See {ref}`Snaps that are unsupported as parallel instances ` for details.. +``` + ## **Path Access** The `gpio-control` interface grants read-write access to the following paths: diff --git a/docs/reference/interfaces/greengrass-support-interface.md b/docs/reference/interfaces/greengrass-support-interface.md index c636d4d..7d85db8 100644 --- a/docs/reference/interfaces/greengrass-support-interface.md +++ b/docs/reference/interfaces/greengrass-support-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: greengrass-support interface +--- + (interfaces-greengrass-support-interface)= # greengrass-support interface @@ -6,6 +12,10 @@ **{ref}`Auto-connect `**: no
**{ref}`Super-privileged `**: yes +```{note} +The `greengrass-support` plug is {ref}`unsupported for parallel instances `. +``` + Requires snapd version _2.26+_. diff --git a/docs/reference/interfaces/hugepages-control-interface.md b/docs/reference/interfaces/hugepages-control-interface.md index afbb7ca..0794429 100644 --- a/docs/reference/interfaces/hugepages-control-interface.md +++ b/docs/reference/interfaces/hugepages-control-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: hugepages-control interface +--- + (interfaces-hugepages-control-interface)= # hugepages-control interface @@ -8,6 +14,10 @@ The `hugepages-control` interface allows controlling [HugePages](https://www.ker **Auto-connect**: no +```{caution} +This interface controls a resource shared by the whole system. Snaps that use it can be installed as parallel instances, but every instance acts on the same system resource and snapd does not coordinate between them. Make sure each instance manages different resources, or run only one instance at a time. See {ref}`Snaps that are unsupported as parallel instances ` for details.. +``` + This interface assumes that _huge pages_ are mounted at either: - `/dev/hugepages` (Debian, Ubuntu) - `/run/hugepages` (various other distributions) diff --git a/docs/reference/interfaces/iscsi-initiator-interface.md b/docs/reference/interfaces/iscsi-initiator-interface.md index e298290..249c51d 100644 --- a/docs/reference/interfaces/iscsi-initiator-interface.md +++ b/docs/reference/interfaces/iscsi-initiator-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: iscsi-initiator interface +--- + (ref-iscsi-initiator-interface_iscsi-initiator-interface)= # iscsi-initiator interface @@ -12,6 +18,10 @@ See {ref}`Interface management `**: no
**{ref}`Super-privileged `**: yes
+```{caution} +This interface controls a resource shared by the whole system. Snaps that use it can be installed as parallel instances, but every instance acts on the same system resource and snapd does not coordinate between them. Make sure each instance manages different resources, or run only one instance at a time. See {ref}`Snaps that are unsupported as parallel instances ` for details.. +``` + ### Code examples The test code can be found in the snapd repository:
https://github.com/canonical/snapd/blob/master/interfaces/builtin/iscsi_initiator_test.go diff --git a/docs/reference/interfaces/kernel-firmware-control-interface.md b/docs/reference/interfaces/kernel-firmware-control-interface.md index 5a37466..e772bc1 100644 --- a/docs/reference/interfaces/kernel-firmware-control-interface.md +++ b/docs/reference/interfaces/kernel-firmware-control-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: kernel-firmware-control interface +--- + (interfaces-kernel-firmware-control-interface)= # kernel-firmware-control interface @@ -9,6 +15,10 @@ The ` kernel-firmware-control` interface permits the setting of a custom [kerne **{ref}`Auto-connect `**: no
**{ref}`Super-privileged `**: yes
+```{caution} +This interface controls a resource shared by the whole system. Snaps that use it can be installed as parallel instances, but every instance acts on the same system resource and snapd does not coordinate between them. Make sure each instance manages different resources, or run only one instance at a time. See {ref}`Snaps that are unsupported as parallel instances ` for details.. +``` + Requires snapd version _2.62+_.

Code examples

diff --git a/docs/reference/interfaces/kernel-module-control-interface.md b/docs/reference/interfaces/kernel-module-control-interface.md index 9cdd912..be90524 100644 --- a/docs/reference/interfaces/kernel-module-control-interface.md +++ b/docs/reference/interfaces/kernel-module-control-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: kernel-module-control interface +--- + (interfaces-kernel-module-control-interface)= # kernel-module-control interface @@ -6,6 +12,10 @@ **{ref}`Auto-connect `**: no
**{ref}`Super-privileged `**: yes +```{caution} +This interface controls a resource shared by the whole system. Snaps that use it can be installed as parallel instances, but every instance acts on the same system resource and snapd does not coordinate between them. Make sure each instance manages different resources, or run only one instance at a time. See {ref}`Snaps that are unsupported as parallel instances ` for details.. +``` + Consumers of this interface require a {ref}`snap declaration ` for distribution via the Snap Store. diff --git a/docs/reference/interfaces/kernel-module-load-interface.md b/docs/reference/interfaces/kernel-module-load-interface.md index 36c7c29..2f3519c 100644 --- a/docs/reference/interfaces/kernel-module-load-interface.md +++ b/docs/reference/interfaces/kernel-module-load-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: kernel-module-load interface +--- + (interfaces-kernel-module-load-interface)= # kernel-module-load interface @@ -11,6 +17,10 @@ See also the {ref}`kernel-module-control interface `**: no
**{ref}`Super-privileged `**: yes
+```{caution} +This interface controls a resource shared by the whole system. Snaps that use it can be installed as parallel instances, but every instance acts on the same system resource and snapd does not coordinate between them. Make sure each instance manages different resources, or run only one instance at a time. See {ref}`Snaps that are unsupported as parallel instances ` for details.. +``` + **Attributes**: * `name` (plug, required): provides the name of the kernel module to be loaded (eg, '`name: pcspkr`') * `load` (plug): string to declare when, or whether, to load this module. Values can be one of the following: diff --git a/docs/reference/interfaces/kubernetes-support-interface.md b/docs/reference/interfaces/kubernetes-support-interface.md index d701541..8c21d12 100644 --- a/docs/reference/interfaces/kubernetes-support-interface.md +++ b/docs/reference/interfaces/kubernetes-support-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: kubernetes-support interface +--- + (interfaces-kubernetes-support-interface)= # kubernetes-support interface @@ -6,6 +12,10 @@ **{ref}`Auto-connect `**: no
**{ref}`Super-privileged `**: yes +```{note} +The `kubernetes-support` plug is {ref}`unsupported for parallel instances `. +``` + Requires snapd version _2.25+_. diff --git a/docs/reference/interfaces/location-control-interface.md b/docs/reference/interfaces/location-control-interface.md index cc567bc..f5a5bec 100644 --- a/docs/reference/interfaces/location-control-interface.md +++ b/docs/reference/interfaces/location-control-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: location-control interface +--- + (interfaces-location-control-interface)= # location-control interface @@ -5,4 +11,8 @@ **Auto-connect**: no +```{note} +The `location-control` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` + diff --git a/docs/reference/interfaces/location-observe-interface.md b/docs/reference/interfaces/location-observe-interface.md index 4df9e3b..220d5e4 100644 --- a/docs/reference/interfaces/location-observe-interface.md +++ b/docs/reference/interfaces/location-observe-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: location-observe interface +--- + (interfaces-location-observe-interface)= # location-observe interface @@ -5,4 +11,8 @@ **Auto-connect**: no +```{note} +The `location-observe` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` + diff --git a/docs/reference/interfaces/lxd-support-interface.md b/docs/reference/interfaces/lxd-support-interface.md index 510d40a..df04c29 100644 --- a/docs/reference/interfaces/lxd-support-interface.md +++ b/docs/reference/interfaces/lxd-support-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: lxd-support interface +--- + (interfaces-lxd-support-interface)= # lxd-support interface @@ -9,9 +15,12 @@ **{ref}`Super-privileged `**: yes
**Transitional**: yes +```{note} +The `lxd-support` plug is {ref}`unsupported for parallel instances `. +``` + **Attributes**: * **enable-unconfined-mode** (plug, optional): indicates that snapd should make use of the AppArmor `unconfined` profile mode (if this is supported by the system) when generating the associated AppArmor profiles for the snap which plugs this interface. - diff --git a/docs/reference/interfaces/maliit-interface.md b/docs/reference/interfaces/maliit-interface.md index 6a3fa79..d750e61 100644 --- a/docs/reference/interfaces/maliit-interface.md +++ b/docs/reference/interfaces/maliit-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: maliit interface +--- + (interfaces-maliit-interface)= # maliit interface @@ -5,6 +11,10 @@ **Auto-connect**: no +```{note} +The `maliit` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` + Requires snapd version _2.24+_. diff --git a/docs/reference/interfaces/media-hub-interface.md b/docs/reference/interfaces/media-hub-interface.md index 63dd486..4141914 100644 --- a/docs/reference/interfaces/media-hub-interface.md +++ b/docs/reference/interfaces/media-hub-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: media-hub interface +--- + (interfaces-media-hub-interface)= # media-hub interface @@ -5,6 +11,10 @@ **Auto-connect**: no +```{note} +The `media-hub` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` + Requires snapd version _2.25+_. diff --git a/docs/reference/interfaces/microceph-support-interface.md b/docs/reference/interfaces/microceph-support-interface.md index ee5af98..fc9c046 100644 --- a/docs/reference/interfaces/microceph-support-interface.md +++ b/docs/reference/interfaces/microceph-support-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: microceph-support interface +--- + (interfaces-microceph-support)= # microceph-support interface @@ -8,6 +14,10 @@ The `microceph-support` interface permits the [microceph](https://snapcraft.io/m **{ref}`Auto-connect `**: no
**{ref}`Super-privileged `**: yes
+```{note} +The `microceph-support` plug is {ref}`unsupported for parallel instances `. +``` + ### Code examples The test code can be found in the snapd repository:
https://github.com/canonical/snapd/blob/master/interfaces/builtin/microceph_support_test.go diff --git a/docs/reference/interfaces/microstack-support-interface.md b/docs/reference/interfaces/microstack-support-interface.md index c1aef92..7326250 100644 --- a/docs/reference/interfaces/microstack-support-interface.md +++ b/docs/reference/interfaces/microstack-support-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: microstack-support interface +--- + (interfaces-microstack-support-interface)= # microstack-support interface @@ -15,6 +21,10 @@ Virtual machines rely on KVM for virtualisation acceleration and the vhost frame **{ref}`Auto-connect `**: no
**{ref}`Super-privileged `**: yes
+```{note} +The `microstack-support` plug is {ref}`unsupported for parallel instances `. +``` + This interface allows MicroStack to operate by allowing the necessary system calls to be used by the following services: - libvirt - qemu diff --git a/docs/reference/interfaces/mir-interface.md b/docs/reference/interfaces/mir-interface.md index 8e75e2a..7db5192 100644 --- a/docs/reference/interfaces/mir-interface.md +++ b/docs/reference/interfaces/mir-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: mir interface +--- + (interfaces-mir-interface)= # mir interface @@ -5,4 +11,8 @@ **Auto-connect**: no +```{note} +The `mir` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` + diff --git a/docs/reference/interfaces/modem-manager-interface.md b/docs/reference/interfaces/modem-manager-interface.md index 3d00938..b921833 100644 --- a/docs/reference/interfaces/modem-manager-interface.md +++ b/docs/reference/interfaces/modem-manager-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: modem-manager interface +--- + (interfaces-modem-manager-interface)= # modem-manager interface @@ -5,4 +11,8 @@ **Auto-connect**: no +```{note} +The `modem-manager` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` + diff --git a/docs/reference/interfaces/mount-control-interface.md b/docs/reference/interfaces/mount-control-interface.md index 4b240db..a1f4486 100644 --- a/docs/reference/interfaces/mount-control-interface.md +++ b/docs/reference/interfaces/mount-control-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: mount-control interface +--- + (interfaces-mount-control-interface)= # mount-control interface @@ -20,6 +26,10 @@ See {ref}`Interface management `**: no
**{ref}`Super-privileged `**: yes
+```{caution} +This interface controls a resource shared by the whole system. Snaps that use it can be installed as parallel instances, but every instance acts on the same system resource and snapd does not coordinate between them. Make sure each instance manages different resources, or run only one instance at a time. See {ref}`Snaps that are unsupported as parallel instances ` for details.. +``` + **Attributes**: * `persistent` (plug): defines whether the mount can be persistent or not.
Either `true` or `false`. Defaults to `false`. diff --git a/docs/reference/interfaces/multipass-support-interface.md b/docs/reference/interfaces/multipass-support-interface.md index 9339780..1d3cb69 100644 --- a/docs/reference/interfaces/multipass-support-interface.md +++ b/docs/reference/interfaces/multipass-support-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: multipass-support interface +--- + (interfaces-multipass-support-interface)= # multipass-support interface @@ -6,4 +12,8 @@ **{ref}`Auto-connect `**: no
**{ref}`Super-privileged `**: yes
+```{note} +The `multipass-support` plug is {ref}`unsupported for parallel instances `. +``` + diff --git a/docs/reference/interfaces/network-bind-interface.md b/docs/reference/interfaces/network-bind-interface.md index 68cdeb2..b1373a5 100644 --- a/docs/reference/interfaces/network-bind-interface.md +++ b/docs/reference/interfaces/network-bind-interface.md @@ -6,3 +6,7 @@ ## Developer details **{ref}`Auto-connect `**: yes
+ +```{caution} +This interface controls a resource shared by the whole system. Snaps that use it can be installed as parallel instances, but every instance acts on the same system resource and snapd does not coordinate between them. Make sure each instance manages different resources, or run only one instance at a time. For an example of configuring services to avoid port conflicts, see {ref}`Ports `. +``` diff --git a/docs/reference/interfaces/network-control-interface.md b/docs/reference/interfaces/network-control-interface.md index 65f9192..32c77dc 100644 --- a/docs/reference/interfaces/network-control-interface.md +++ b/docs/reference/interfaces/network-control-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: network-control interface +--- + (interfaces-network-control-interface)= # network-control interface @@ -5,6 +11,10 @@ **Auto-connect**: no +```{caution} +This interface controls a resource shared by the whole system. Snaps that use it can be installed as parallel instances, but every instance acts on the same system resource and snapd does not coordinate between them. Make sure each instance manages different resources, or run only one instance at a time. See {ref}`Snaps that are unsupported as parallel instances ` for details.. +``` + Requires snapd version _2.20+_. diff --git a/docs/reference/interfaces/network-manager-interface.md b/docs/reference/interfaces/network-manager-interface.md index 735914f..b835360 100644 --- a/docs/reference/interfaces/network-manager-interface.md +++ b/docs/reference/interfaces/network-manager-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: network-manager interface +--- + (interfaces-network-manager-interface)= # network-manager interface @@ -5,4 +11,8 @@ **Auto-connect**: no +```{note} +The `network-manager` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` + diff --git a/docs/reference/interfaces/network-setup-control-interface.md b/docs/reference/interfaces/network-setup-control-interface.md index f5a531d..c0a5081 100644 --- a/docs/reference/interfaces/network-setup-control-interface.md +++ b/docs/reference/interfaces/network-setup-control-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: network-setup-control interface +--- + (interfaces-network-setup-control-interface)= # network-setup-control interface @@ -5,6 +11,10 @@ **Auto-connect**: no +```{caution} +This interface controls a resource shared by the whole system. Snaps that use it can be installed as parallel instances, but every instance acts on the same system resource and snapd does not coordinate between them. Make sure each instance manages different resources, or run only one instance at a time. See {ref}`Snaps that are unsupported as parallel instances ` for details.. +``` + Requires snapd version _2.22+_. diff --git a/docs/reference/interfaces/nomad-support-interface.md b/docs/reference/interfaces/nomad-support-interface.md index 37c0e29..2c6d5f8 100644 --- a/docs/reference/interfaces/nomad-support-interface.md +++ b/docs/reference/interfaces/nomad-support-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: nomad-support interface +--- + (interfaces-nomad-support)= # nomad-support interface @@ -9,6 +15,10 @@ See {ref}`Interface management `. +``` + ### Code examples The test code can be found in the snapd repository:
https://github.com/canonical/snapd/blob/master/interfaces/builtin/nomad_support_test.go diff --git a/docs/reference/interfaces/nvidia-drivers-support-interface.md b/docs/reference/interfaces/nvidia-drivers-support-interface.md index 8354b7a..e54f0e0 100644 --- a/docs/reference/interfaces/nvidia-drivers-support-interface.md +++ b/docs/reference/interfaces/nvidia-drivers-support-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: nvidia-drivers-support interface +--- + (interfaces-nvidia-drivers-support-interface)= # nvidia-drivers-support interface @@ -13,9 +19,12 @@ This interface permits the [nvidia-assemble](https://snapcraft.io/nvidia-assembl **{ref}`Auto-connect `**: no
**{ref}`Super-privileged `**: yes
+```{note} +The `nvidia-drivers-support` plug is {ref}`unsupported for parallel instances `. +``` + ### Code examples The test code can be found in the snapd repository: https://github.com/canonical/snapd/blob/master/interfaces/builtin/nvidia_drivers_support_test.go The source code for the interface is in the snapd repository: https://github.com/canonical/snapd/blob/master/interfaces/builtin/nvidia_drivers_support.go - diff --git a/docs/reference/interfaces/nvme-control-interface.md b/docs/reference/interfaces/nvme-control-interface.md index 87ece39..6a7848a 100644 --- a/docs/reference/interfaces/nvme-control-interface.md +++ b/docs/reference/interfaces/nvme-control-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: nvme-control interface +--- + (ref-nvme-control-interface_nvme-control-interface)= # nvme-control interface @@ -14,6 +20,10 @@ For further details on interfaces, see {ref}`How to connect interfaces `**: no
**{ref}`Super-privileged `**: yes
+```{caution} +This interface controls a resource shared by the whole system. Snaps that use it can be installed as parallel instances, but every instance acts on the same system resource and snapd does not coordinate between them. Make sure each instance manages different resources, or run only one instance at a time. See {ref}`Snaps that are unsupported as parallel instances ` for details.. +``` + ### Code examples The test code can be found in the snapd repository:
https://github.com/canonical/snapd/blob/master/interfaces/builtin/nvme_control_test.go diff --git a/docs/reference/interfaces/ofono-interface.md b/docs/reference/interfaces/ofono-interface.md index db686ca..22217bb 100644 --- a/docs/reference/interfaces/ofono-interface.md +++ b/docs/reference/interfaces/ofono-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: ofono interface +--- + (interfaces-ofono-interface)= # ofono interface @@ -5,4 +11,7 @@ **Auto-connect**: no +```{note} +The `ofono` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` diff --git a/docs/reference/interfaces/online-accounts-service-interface.md b/docs/reference/interfaces/online-accounts-service-interface.md index 4044485..1573d83 100644 --- a/docs/reference/interfaces/online-accounts-service-interface.md +++ b/docs/reference/interfaces/online-accounts-service-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: online-accounts-service interface +--- + (interfaces-online-accounts-service-interface)= # online-accounts-service interface @@ -5,6 +11,9 @@ **Auto-connect**: yes -Requires snapd version _2.25+_. +```{note} +The `online-accounts-service` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` +Requires snapd version _2.25+_. diff --git a/docs/reference/interfaces/opengl-driver-libs-interface.md b/docs/reference/interfaces/opengl-driver-libs-interface.md index 1c19807..a0a425b 100644 --- a/docs/reference/interfaces/opengl-driver-libs-interface.md +++ b/docs/reference/interfaces/opengl-driver-libs-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: opengl-driver-libs interface +--- + (ref-opengl-driver-libs-interface_opengl-driver-libs-interface)= # opengl-driver-libs interface @@ -10,6 +16,10 @@ For further details on interfaces, see {ref}`How to connect interfaces `**: no
**{ref}`Super-privileged `**: yes
+```{note} +The `opengl-driver-libs` slot is {ref}`unsupported for parallel instances `. The library source files exported by the slot cannot distinguish between instances. +``` + ### Code examples The test code can be found in the snapd repository:
https://github.com/canonical/snapd/blob/master/interfaces/builtin/opengl_driver_libs_test.go diff --git a/docs/reference/interfaces/opengles-driver-libs-interface.md b/docs/reference/interfaces/opengles-driver-libs-interface.md index f3a26e6..2f45464 100644 --- a/docs/reference/interfaces/opengles-driver-libs-interface.md +++ b/docs/reference/interfaces/opengles-driver-libs-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: opengles-driver-libs interface +--- + (ref-opengles-driver-libs-interface_opengles-driver-libs-interface)= # opengles-driver-libs interface @@ -10,6 +16,10 @@ For further details on interfaces, see {ref}`How to connect interfaces `**: no
**{ref}`Super-privileged `**: yes
+```{note} +The `opengles-driver-libs` slot is {ref}`unsupported for parallel instances `. The library source files exported by the slot cannot distinguish between instances. +``` + ### Code examples The test code can be found in the snapd repository:
https://github.com/canonical/snapd/blob/master/interfaces/builtin/opengles_driver_libs_test.go diff --git a/docs/reference/interfaces/openvswitch-support-interface.md b/docs/reference/interfaces/openvswitch-support-interface.md index 71d2556..8f68e03 100644 --- a/docs/reference/interfaces/openvswitch-support-interface.md +++ b/docs/reference/interfaces/openvswitch-support-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: openvswitch-support interface +--- + (interfaces-openvswitch-support-interface)= # openvswitch-support interface @@ -5,6 +11,9 @@ **Auto-connect**: no -Requires snapd version _2.20+_. +```{note} +The `openvswitch-support` plug is {ref}`unsupported for parallel instances `. +``` +Requires snapd version _2.20+_. diff --git a/docs/reference/interfaces/physical-memory-control-interface.md b/docs/reference/interfaces/physical-memory-control-interface.md index aee1128..9958978 100644 --- a/docs/reference/interfaces/physical-memory-control-interface.md +++ b/docs/reference/interfaces/physical-memory-control-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: physical-memory-control interface +--- + (interfaces-physical-memory-control-interface)= # physical-memory-control interface @@ -9,6 +15,10 @@ This interface can write to all physical memory when the kernel is compiled with **Auto-connect**: no +```{note} +The `physical-memory-control` plug is {ref}`unsupported for parallel instances `. Instances would perform conflicting operations on the same system resources. +``` + Requires snapd version _2.21+_. diff --git a/docs/reference/interfaces/pipewire-interface.md b/docs/reference/interfaces/pipewire-interface.md index e976e12..6f5834b 100644 --- a/docs/reference/interfaces/pipewire-interface.md +++ b/docs/reference/interfaces/pipewire-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: pipewire interface +--- + (interfaces-pipewire-interface)= # pipewire interface @@ -7,6 +13,10 @@ The `pipewire` interface allows full access to the user's pipewire socket, for t **{ref}`Auto-connect `**: no
+```{note} +The `pipewire` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` + ## **Path Access** The `pipewire` interface grants read-write access to the following paths: diff --git a/docs/reference/interfaces/pkcs11-interface.md b/docs/reference/interfaces/pkcs11-interface.md index 5a70b14..fb6ad57 100644 --- a/docs/reference/interfaces/pkcs11-interface.md +++ b/docs/reference/interfaces/pkcs11-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: pkcs11 interface +--- + (interfaces-pkcs11)= # pkcs11 interface @@ -9,6 +15,10 @@ The `pkcs11` interface enables the [PKCS#11 Cryptographic Token Interface Standa **{ref}`Auto-connect `**: no
**{ref}`Super-privileged `**: yes
+```{note} +The `pkcs11` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` + ### Code examples The test code can be found in the snapd repository:
https://github.com/canonical/snapd/blob/master/interfaces/builtin/pkcs11_test.go diff --git a/docs/reference/interfaces/posix-mq-interface.md b/docs/reference/interfaces/posix-mq-interface.md index c8e287f..fccba09 100644 --- a/docs/reference/interfaces/posix-mq-interface.md +++ b/docs/reference/interfaces/posix-mq-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: posix-mq interface +--- + (interfaces-posix-mq-interface)= # posix-mq interface @@ -11,6 +17,10 @@ The `posix-mq` interface enables inter-process communication (IPC) messages to b | **{ref}`Auto-connect `** | **no** by default | **yes** with snaps from the same publisher | | **{ref}`Super-privileged `** | **no** for plugs | **yes** for slots | +```{note} +The `posix-mq` plug and slot are {ref}`unsupported for parallel instances `. Instances would perform conflicting operations on the same message queues. +``` + **Attributes**: * **`posix-mq`** (slot and plug)
@@ -61,4 +71,3 @@ The following definition will create a _posix-mq_ interface with read-only permi The test code can be found in the snapd repository: https://github.com/canonical/snapd/blob/master/interfaces/builtin/posix_mq_test.go The source code for the interface is in the snapd repository: https://github.com/canonical/snapd/blob/master/interfaces/builtin/posix_mq.go - diff --git a/docs/reference/interfaces/power-control-interface.md b/docs/reference/interfaces/power-control-interface.md index 4675c0a..69f3d5c 100644 --- a/docs/reference/interfaces/power-control-interface.md +++ b/docs/reference/interfaces/power-control-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: power-control interface +--- + (interfaces-power-control-interface)= # power-control interface @@ -10,6 +16,10 @@ This interface is primarily intended to be used with {ref}`Ubuntu Core ` for details.. +``` + This interface enables: - reading of all power settings: `/sys/devices/**/power/` diff --git a/docs/reference/interfaces/pulseaudio-interface.md b/docs/reference/interfaces/pulseaudio-interface.md index e2e30a9..8c24946 100644 --- a/docs/reference/interfaces/pulseaudio-interface.md +++ b/docs/reference/interfaces/pulseaudio-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: pulseaudio interface +--- + (interfaces-pulseaudio-interface)= # pulseaudio interface @@ -7,6 +13,10 @@ As of snapd 2.41, this interface is deprecated and the {ref}`audio-playback `. The slot owns a unique system-wide resource that instances would conflict over. +``` + *Note: The {ref}`audio-playback ` interface is auto-connected.* diff --git a/docs/reference/interfaces/raw-volume-interface.md b/docs/reference/interfaces/raw-volume-interface.md index b4d1fab..078e9af 100644 --- a/docs/reference/interfaces/raw-volume-interface.md +++ b/docs/reference/interfaces/raw-volume-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: raw-volume interface +--- + (interfaces-raw-volume-interface)= # raw-volume interface @@ -9,6 +15,10 @@ The slot is intended to be implemented by a gadget snap and is not provided by t **Attributes**: * `path` (slot): path to device partition e.g. `/dev/mmcblk0p1` +```{caution} +This interface controls a resource shared by the whole system. Snaps that use it can be installed as parallel instances, but every instance acts on the same system resource and snapd does not coordinate between them. Make sure each instance manages different resources, or run only one instance at a time. See {ref}`Snaps that are unsupported as parallel instances ` for details.. +``` + Requires snapd version *2.43+*. To use a disk partition, the snap developer must add `plugs: [ raw-volume ]` to a snap's [snapcraft.yaml](https://documentation.ubuntu.com/snapcraft/stable/reference/project-file/snapcraft-yaml). The snap user can then access a specific disk partition with an {ref}`interface connection `. diff --git a/docs/reference/interfaces/ros-snapd-support-interface.md b/docs/reference/interfaces/ros-snapd-support-interface.md index 2809034..e0eb793 100644 --- a/docs/reference/interfaces/ros-snapd-support-interface.md +++ b/docs/reference/interfaces/ros-snapd-support-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: ros-snapd-support interface +--- + (interfaces-ros-snapd-support)= # ros-snapd-support interface @@ -8,6 +14,10 @@ The `ros-snapd-support` interface allows the snaps [`ros-snapd`](https://snapcra {ref}`Auto-connect `: no\ {ref}`Super-privileged `: yes +```{note} +The `ros-snapd-support` plug is {ref}`unsupported for parallel instances `. +``` +

Endpoint access permissions

  • /v2/apps
  • diff --git a/docs/reference/interfaces/shared-memory-interface.md b/docs/reference/interfaces/shared-memory-interface.md index 17c25a7..3ea8385 100644 --- a/docs/reference/interfaces/shared-memory-interface.md +++ b/docs/reference/interfaces/shared-memory-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: shared-memory interface +--- + (interfaces-shared-memory-interface)= # shared-memory interface @@ -13,6 +19,10 @@ Requires snapd version *2.54+* . | **{ref}`Auto-connect `** | **no** by default | **yes** when `private` is enabled, or with snaps from the same publisher | | **{ref}`Super-privileged `** | **no** for plugs | **yes** for slots | +```{note} +The `shared-memory` slot is {ref}`unsupported for parallel instances `. The `shared-memory` plug is supported for parallel instances only if it sets `private: true`. +``` + **Attributes**: * `shared-memory` (slot and plug): diff --git a/docs/reference/interfaces/steam-support-interface.md b/docs/reference/interfaces/steam-support-interface.md index 80c134d..184735f 100644 --- a/docs/reference/interfaces/steam-support-interface.md +++ b/docs/reference/interfaces/steam-support-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: steam-support interface +--- + (interfaces-steam-support-interface)= # steam-support interface @@ -11,6 +17,10 @@ Only the Steam snap may establish this interface. **{ref}`Auto-connect `**: no
    **{ref}`Super-privileged `**: yes
    +```{note} +The `steam-support` plug is {ref}`unsupported for parallel instances `. +``` + ### Code examples diff --git a/docs/reference/interfaces/storage-framework-service-interface.md b/docs/reference/interfaces/storage-framework-service-interface.md index 3eec7d8..4b8db3d 100644 --- a/docs/reference/interfaces/storage-framework-service-interface.md +++ b/docs/reference/interfaces/storage-framework-service-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: storage-framework-service interface +--- + (interfaces-storage-framework-service-interface)= # storage-framework-service interface @@ -5,6 +11,10 @@ **Auto-connect**: no +```{note} +The `storage-framework-service` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` + Requires snapd version _2.25+_. diff --git a/docs/reference/interfaces/thumbnailer-service-interface.md b/docs/reference/interfaces/thumbnailer-service-interface.md index 1528a29..26171be 100644 --- a/docs/reference/interfaces/thumbnailer-service-interface.md +++ b/docs/reference/interfaces/thumbnailer-service-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: thumbnailer-service interface +--- + (interfaces-thumbnailer-service-interface)= # thumbnailer-service interface @@ -5,6 +11,10 @@ **Auto-connect**: no +```{note} +The `thumbnailer-service` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` + Requires snapd version _2.22+_. diff --git a/docs/reference/interfaces/time-control-interface.md b/docs/reference/interfaces/time-control-interface.md index fb570c4..f7ee9e0 100644 --- a/docs/reference/interfaces/time-control-interface.md +++ b/docs/reference/interfaces/time-control-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: time-control interface +--- + (interfaces-time-control-interface)= # time-control interface @@ -5,4 +11,8 @@ **Auto-connect**: no +```{caution} +This interface controls a resource shared by the whole system. Snaps that use it can be installed as parallel instances, but every instance acts on the same system resource and snapd does not coordinate between them. Make sure each instance manages different resources, or run only one instance at a time. See {ref}`Snaps that are unsupported as parallel instances ` for details.. +``` + diff --git a/docs/reference/interfaces/timeserver-control-interface.md b/docs/reference/interfaces/timeserver-control-interface.md index 8f30cb6..4fe380f 100644 --- a/docs/reference/interfaces/timeserver-control-interface.md +++ b/docs/reference/interfaces/timeserver-control-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: timeserver-control interface +--- + (interfaces-timeserver-control-interface)= # timeserver-control interface @@ -5,4 +11,8 @@ **Auto-connect**: no +```{caution} +This interface controls a resource shared by the whole system. Snaps that use it can be installed as parallel instances, but every instance acts on the same system resource and snapd does not coordinate between them. Make sure each instance manages different resources, or run only one instance at a time. See {ref}`Snaps that are unsupported as parallel instances ` for details.. +``` + diff --git a/docs/reference/interfaces/ubuntu-download-manager-interface.md b/docs/reference/interfaces/ubuntu-download-manager-interface.md index e2bd6c5..c01de3c 100644 --- a/docs/reference/interfaces/ubuntu-download-manager-interface.md +++ b/docs/reference/interfaces/ubuntu-download-manager-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: ubuntu-download-manager interface +--- + (interfaces-ubuntu-download-manager-interface)= # ubuntu-download-manager interface @@ -5,4 +11,8 @@ **Auto-connect**: yes +```{note} +The `ubuntu-download-manager` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` + diff --git a/docs/reference/interfaces/udisks2-interface.md b/docs/reference/interfaces/udisks2-interface.md index 86737ac..71a93be 100644 --- a/docs/reference/interfaces/udisks2-interface.md +++ b/docs/reference/interfaces/udisks2-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: udisks2 interface +--- + (interfaces-udisks2-interface)= # udisks2 interface @@ -7,4 +13,8 @@ When used on [Ubuntu Core](https://ubuntu.com/core/docs), the _udisks2_ interfac **Auto-connect**: no +```{note} +The `udisks2` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` + diff --git a/docs/reference/interfaces/unity8-calendar-interface.md b/docs/reference/interfaces/unity8-calendar-interface.md index 2ccd6c9..2533331 100644 --- a/docs/reference/interfaces/unity8-calendar-interface.md +++ b/docs/reference/interfaces/unity8-calendar-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: unity8-calendar interface +--- + (interfaces-unity8-calendar-interface)= # unity8-calendar interface @@ -5,4 +11,8 @@ **Auto-connect**: no +```{note} +The `unity8-calendar` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` + diff --git a/docs/reference/interfaces/unity8-contacts-interface.md b/docs/reference/interfaces/unity8-contacts-interface.md index 5681f26..2d4455c 100644 --- a/docs/reference/interfaces/unity8-contacts-interface.md +++ b/docs/reference/interfaces/unity8-contacts-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: unity8-contacts interface +--- + (interfaces-unity8-contacts-interface)= # unity8-contacts interface @@ -5,4 +11,8 @@ **Auto-connect**: no +```{note} +The `unity8-contacts` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` + diff --git a/docs/reference/interfaces/unity8-interface.md b/docs/reference/interfaces/unity8-interface.md index 38cdef4..3d93add 100644 --- a/docs/reference/interfaces/unity8-interface.md +++ b/docs/reference/interfaces/unity8-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: unity8 interface +--- + (interfaces-unity8-interface)= # unity8 interface @@ -6,6 +12,10 @@ **{ref}`Auto-connect `**: no
    **{ref}`Super-privileged `**: yes
    +```{note} +The `unity8` slot is {ref}`unsupported for parallel instances `. +``` + Requires snapd version _2.22+_. diff --git a/docs/reference/interfaces/upower-observe-interface.md b/docs/reference/interfaces/upower-observe-interface.md index 571607e..d102c72 100644 --- a/docs/reference/interfaces/upower-observe-interface.md +++ b/docs/reference/interfaces/upower-observe-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: upower-observe interface +--- + (interfaces-upower-observe-interface)= # upower-observe interface @@ -5,4 +11,7 @@ **Auto-connect**: yes +```{note} +The `upower-observe` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` diff --git a/docs/reference/interfaces/wayland-interface.md b/docs/reference/interfaces/wayland-interface.md index 2aaec4f..8a15141 100644 --- a/docs/reference/interfaces/wayland-interface.md +++ b/docs/reference/interfaces/wayland-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: wayland interface +--- + (interfaces-wayland-interface)= # wayland interface @@ -6,6 +12,10 @@ **Auto-connect**: yes, except on Ubuntu Core **Transitional**: yes +```{note} +The `wayland` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` + See The desktop interfaces for further details. Requires snapd version _2.28+_. diff --git a/docs/reference/interfaces/x11-interface.md b/docs/reference/interfaces/x11-interface.md index 3e26aff..c5a22cc 100644 --- a/docs/reference/interfaces/x11-interface.md +++ b/docs/reference/interfaces/x11-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: x11 interface +--- + (interfaces-x11-interface)= # x11 interface @@ -6,8 +12,11 @@ **Auto-connect**: yes **Transitional**: yes +```{note} +The `x11` slot is {ref}`unsupported for parallel instances `. The slot owns a unique system-wide resource that instances would conflict over. +``` + See The desktop interfaces for further details. **Condition to Connect**: If your snap has a graphical user interface, you *should* connect to this interface. - diff --git a/docs/reference/interfaces/xilinx-dma-interface.md b/docs/reference/interfaces/xilinx-dma-interface.md index fe6d14a..e76dd67 100644 --- a/docs/reference/interfaces/xilinx-dma-interface.md +++ b/docs/reference/interfaces/xilinx-dma-interface.md @@ -1,3 +1,9 @@ +--- +myst: + html_meta: + description: xilinx-dma interface +--- + (interfaces-xilinx-dma)= # xilinx-dma interface @@ -8,6 +14,10 @@ The `xilinx-dma` interface allows access to [Xilinx](https://en.wikipedia.org/wi **{ref}`Auto-connect `**: no
    **{ref}`Super-privileged `**: yes
    +```{note} +The `xilinx-dma` plug is {ref}`unsupported for parallel instances `. Instances would perform conflicting operations on the same system resources. +``` + ### Code examples The test code can be found in the snapd repository:
    https://github.com/canonical/snapd/blob/master/interfaces/builtin/xilinx_dma_test.go