name: microstack
version: rocky
base: core18
summary: OpenStack on your laptop.
description: |
  Microstack gives you an easy way to develop and test OpenStack
  workloads on your laptop.
grade: stable
confinement: classic
environment:
  LD_LIBRARY_PATH: $SNAP/lib:$SNAP/lib/$SNAPCRAFT_ARCH_TRIPLET:$SNAP/usr/lib:$SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET
  PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:/snap/core18/current/bin:$PATH
  LC_ALL: C
  OS_PLACEMENT_CONFIG_DIR: $SNAP/etc/nova/

apps:
  # Openstack
  openstack:
    command: openstack-wrapper openstack
#    plugs:
#      - network

  # OpenStack Service Configuration
  configure:
    command: configure-openstack
#    plugs:
#      - network

  # Keystone
  keystone-uwsgi:
    command: snap-openstack launch keystone-uwsgi
    daemon: simple
#    plugs:
#      - network-bind
  keystone-manage:
    command: snap-openstack launch keystone-manage
#    plugs:
#      - network

  # Nova
  nova-uwsgi:
    command: snap-openstack launch nova-uwsgi
    daemon: simple
#    plugs:
#      - network-bind
  nova-api:
    command: snap-openstack launch nova-api-os-compute
    daemon: simple
#    plugs:
#      - network-bind
  nova-conductor:
    command: snap-openstack launch nova-conductor
    daemon: simple
#    plugs:
#      - network
  nova-scheduler:
    command: snap-openstack launch nova-scheduler
    daemon: simple
#    plugs:
#      - network
  nova-compute:
    command: snap-openstack launch nova-compute
    daemon: simple
#    plugs:
#      - network-bind
#      - network-control
#      - firewall-control
#      - hardware-observe
#      - libvirt
#      - openvswitch
  nova-api-metadata:
    command: snap-openstack launch nova-api-metadata
    daemon: simple
#    plugs:
#      - network-bind
#      - firewall-control
  nova-manage:
    command: snap-openstack launch nova-manage
#    plugs:
#      - network

  # Neutron
  neutron-api:
    command: snap-openstack launch neutron-server
    daemon: simple
#    plugs:
#      - network-bind
  neutron-openvswitch-agent:
    command: snap-openstack launch neutron-openvswitch-agent
    daemon: simple
#    plugs:
#      - network-bind
#      - network-control
#      - network-observe
#      - firewall-control
#      - process-control
#      - system-observe
#      - openvswitch
  neutron-l3-agent:
    command: snap-openstack launch neutron-l3-agent
    daemon: simple
#    plugs:
#      - network-bind
#      - network-control
#      - network-observe
#      - firewall-control
#      - process-control
#      - system-observe
#      - openvswitch
  neutron-dhcp-agent:
    command: snap-openstack launch neutron-dhcp-agent
    daemon: simple
#    plugs:
#      - network
#      - network-bind
#      - network-control
#      - network-observe
#      - process-control
#      - system-observe
#      - openvswitch
  neutron-metadata-agent:
    command: snap-openstack launch neutron-metadata-agent
    daemon: simple
#    plugs:
#      - network
#      - network-bind
#      - network-control
  neutron-ovs-cleanup:
    command: snap-openstack launch neutron-ovs-cleanup
#    plugs:
#      - network
#      - network-control
#      - openvswitch
  neutron-netns-cleanup:
    command: snap-openstack launch neutron-netns-cleanup
#    plugs:
#      - network
#      - network-control
  neutron-db-manage:
    command: snap-openstack launch neutron-db-manage
#    plugs:
#      - network

  # Glance
  glance-api:
    command: snap-openstack launch glance-api
    daemon: simple
#    plugs:
#      - network-bind
  registry:
    command: snap-openstack launch glance-registry
    daemon: simple
#    plugs:
#      - network
#      - network-bind
  glance-manage:
    command: snap-openstack launch glance-manage
#    plugs:
#      - network

  # Openstack Shared Services
  nginx:
    command: snap-openstack launch nginx
    daemon: forking
#    plugs:
#      - network-bind

  # Openvswitch
  ovs-vswitchd:
    command: ovs-wrapper $SNAP/share/openvswitch/scripts/ovs-ctl --no-ovsdb-server --no-monitor --system-id=random start
    stop-command: ovs-wrapper $SNAP/share/openvswitch/scripts/ovs-ctl --no-ovsdb-server stop
    passthrough:
      after: [ovsdb-server]
    daemon: forking
#    plugs:
#      - network
#      - network-bind
#      - network-control
#      - openvswitch-support
#      - process-control
#      - system-trace
  ovsdb-server:
    command: ovs-wrapper $SNAP/share/openvswitch/scripts/ovs-ctl --no-ovs-vswitchd --no-monitor --system-id=random start
    stop-command: ovs-wrapper $SNAP/share/openvswitch/scripts/ovs-ctl --no-ovs-vswitchd stop
    daemon: forking
#    plugs:
#      - network
#      - network-bind
#      - network-control
#      - openvswitch-support
#      - process-control
#      - system-trace
  ovs-vsctl:
    command: ovs-wrapper $SNAP/bin/ovs-vsctl
#    plugs:
#      - network
  ovs-appctl:
    command: ovs-wrapper $SNAP/bin/ovs-appctl
#    plugs:
#      - network
  ovs-ofctl:
    command: ovs-wrapper $SNAP/bin/ovs-ofctl
#    plugs:
#      - network
  ovs-dpctl:
    command: ovs-wrapper $SNAP/bin/ovs-dpctl
#    plugs:
#      - network

  external-bridge:
    command: bin/setup-br-ex
    daemon: oneshot
    passthrough:
      after: [ovs-vswitchd]
#    plugs:
#      - network

  # Libvirt/Qemu
  libvirtd:
    command: libvirtd
    daemon: simple
    environment:
      LD_LIBRARY_PATH: $SNAP/lib:$SNAP/lib/$SNAPCRAFT_ARCH_TRIPLET:$SNAP/usr/lib:$SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET:$SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/pulseaudio
  virtlogd:
    command: virtlogd
    daemon: simple
  virsh:
    command: virsh

  # MySQL
  mysqld:
    command: mysql-start-server
    daemon: simple
#    plugs:
#      - process-control
#      - network
#      - network-bind
  mysql:
    command: mysql-start-client
#    plugs:
#      - process-control
#      - network

  # RabbitMQ
  rabbitmq-server:
    command: rabbitmq-server
    daemon: simple
#    plugs:
#      - network-bind
    environment:
      HOME: $SNAP_COMMON/lib/rabbitmq
  rabbitmqctl:
    command: rabbitmqctl
#    plugs:
#      - network
    environment:
      HOME: $SNAP_COMMON/lib/rabbitmq
  rabbitmq-plugins:
    command: rabbitmq-plugins
    environment:
      HOME: $SNAP_COMMON/lib/rabbitmq

  # Memcached
  memcached:
    command: memcached -u root -v
    daemon: simple
#    plugs:
#      - network-bind

  # Cinder
  cinder-uwsgi:
    command: snap-openstack launch cinder-uwsgi
#    daemon: simple
#    plugs:
#      - network-bind
  cinder-backup:
    command: snap-openstack launch cinder-backup
#    daemon: simple
#    plugs:
#      - network
  cinder-manage:
    command: snap-openstack launch cinder-manage
#    plugs:
#      - network
  cinder-scheduler:
    command: snap-openstack launch cinder-scheduler
#    daemon: simple
#    plugs:
#      - network
  cinder-volume:
    command: snap-openstack launch cinder-volume
#    daemon: simple
#    plugs:
#      - network

  # Horizon
  horizon-uwsgi:
    command: snap-openstack launch horizon-uwsgi
    daemon: simple
#    plugs:
#      - network-bind

  # Utility to launch a vm. Creates security groups, floating ips,
  # and other necessities as well.
  launch:
    command: bin/launch.sh
#    plugs:
#      - network

parts:
  # OpenStack Python Projects, keyed off Keystone
  openstack-projects:
    plugin: python
    python-version: python2
    constraints:
      - https://raw.githubusercontent.com/openstack/requirements/stable/rocky/upper-constraints.txt
    source: http://tarballs.openstack.org/keystone/keystone-stable-rocky.tar.gz
    python-packages:
      - libvirt-python
      - oslo.cache[dogpile]
      - pymysql
      - uwsgi
      - git+https://opendev.org/x/snap.openstack#egg=snap.openstack
      - http://tarballs.openstack.org/nova/nova-stable-rocky.tar.gz
      - http://tarballs.openstack.org/neutron/neutron-stable-rocky.tar.gz
      - http://tarballs.openstack.org/glance/glance-stable-rocky.tar.gz
      - http://tarballs.openstack.org/cinder/cinder-stable-rocky.tar.gz
      - http://tarballs.openstack.org/horizon/horizon-stable-rocky.tar.gz
      - python-cinderclient
      - python-openstackclient
      - python-swiftclient
    build-packages:
      - gcc
      - git
      - libffi-dev
      - libssl-dev
      - libvirt-dev
      - libxml2-dev
      - libxslt1-dev
    stage-packages:
      - conntrack
      - coreutils
      - haproxy
      - libpython2.7
    override-prime: |
      snapcraftctl prime
      # Uncomment the below line for better python-libvirt debugging output.
      # patch --batch --forward --strip 1 --input ../project/patches/nova/nova_log_error.patch
      # Now that everything is built, let's disable user site-packages
      # as stated in PEP-0370
      sed -i usr/lib/python2.7/site.py -e 's/^ENABLE_USER_SITE = None$/ENABLE_USER_SITE = False/'
      # This is the last step, let's now compile all our pyc files.
      # Ignore errors due to syntax issues in foobar python 2.
      ./usr/bin/python2.7 -m compileall . || true
  keystone-config:
    after: [openstack-projects]
    plugin: dump
    source: http://tarballs.openstack.org/keystone/keystone-stable-rocky.tar.gz
    organize:
      etc/*.conf: etc/keystone/
      etc/*.ini: etc/keystone/
      etc/*.json: etc/keystone/
      etc/*.templates: etc/keystone/

    filesets:
      etc:
        - etc/keystone/*
    stage: [$etc]
    prime: [$etc]

  openstack-wrapper:
    source: ./snap-wrappers/openstack
    plugin: dump
    after:
      - openstack-projects
    organize:
      openstack-wrapper: bin/openstack-wrapper

  nova-config:
    after: [openstack-projects]
    plugin: dump
    source: http://tarballs.openstack.org/nova/nova-stable-rocky.tar.gz
    filesets:
      etc:
        - etc/nova/*
    stage: [$etc]
    prime: [$etc]

  neutron-config:
    after: [openstack-projects]
    plugin: dump
    source: http://tarballs.openstack.org/neutron/neutron-stable-rocky.tar.gz
    organize:
      etc/*.conf: etc/neutron/
      etc/*.ini: etc/neutron/
      etc/*.json: etc/neutron/
      etc/rootwrap.d/*: etc/neutron/rootwrap.d/
    filesets:
      etc:
        - etc/neutron/*
    stage: [$etc]
    prime: [$etc]

  glance-config:
    after: [openstack-projects]
    plugin: dump
    source: http://tarballs.openstack.org/glance/glance-stable-rocky.tar.gz
    organize:
      etc/*.conf: etc/glance/
      etc/*.ini: etc/glance/
      etc/*.json: etc/glance/
    filesets:
      etc:
        - etc/glance/*
    stage: [$etc]
    prime: [$etc]

  cinder-config:
    after: [openstack-projects]
    plugin: dump
    source: http://tarballs.openstack.org/cinder/cinder-stable-rocky.tar.gz
    organize:
      etc/*.conf: etc/cinder/
      etc/*.ini: etc/cinder/
      etc/*.json: etc/cinder/
      etc/*.templates: etc/cinder/
    filesets:
      etc:
        - etc/cinder/*
    stage: [$etc]
    prime: [$etc]

  horizon-config:
    after: [openstack-projects]
    plugin: dump
    source: http://tarballs.openstack.org/horizon/horizon-stable-rocky.tar.gz
    organize:
      etc/*.conf: etc/horizon/
    filesets:
      etc:
        - etc/horizon/*
    stage: [$etc]
    prime: [$etc]

  # Snap patches
  patches:
    source: patches/
    plugin: dump
    organize:
      '*' : patches/
    prime:
      - -*

  openvswitch:
    # TODO: figure out a better way to fetch the version
    source: http://openvswitch.org/releases/openvswitch-2.10.2.tar.gz
    plugin: autotools
    build-packages:
      - libssl-dev
      - try: [libnuma-dev]
      - libcap-ng-dev
      - libpcap-dev
      - libunbound-dev
      - python-all
      - python-six
      - python-setuptools
    stage-packages:
      - uuid-runtime
      - libunbound2
    configflags:
      - "--localstatedir=/var/snap/$SNAPCRAFT_PROJECT_NAME/common"
      - "--sysconfdir=/var/snap/$SNAPCRAFT_PROJECT_NAME/etc"
    after:
      - patches
    override-build: |
      # Apply patches
      for patch in ${SNAPCRAFT_STAGE}/patches/openvswitch/*.patch; do
        echo "Applying $(basename "$patch") ..."
        patch \
          --batch \
          --forward \
          --strip 1 \
          --input "$patch"
        echo
      done
      snapcraftctl build

  ovs-wrapper:
    source: ./snap-wrappers/ovs
    plugin: dump
    after:
      - openvswitch
    organize:
      ovs-wrapper: bin/ovs-wrapper

  nginx:
    source: http://www.nginx.org/download/nginx-1.13.0.tar.gz
    plugin: autotools
    after:
      - patches
    configflags:
      - --prefix=/usr
      - "--http-log-path=/var/snap/$SNAPCRAFT_PROJECT_NAME/common/log/nginx-access.log"
      - "--error-log-path=/var/snap/$SNAPCRAFT_PROJECT_NAME/common/log/nginx-error.log"
      - "--lock-path=/var/snap/$SNAPCRAFT_PROJECT_NAME/common/lock/nginx.lock"
      - "--pid-path=/var/snap/$SNAPCRAFT_PROJECT_NAME/common/run/nginx.pid"
      - "--http-client-body-temp-path=/var/snap/$SNAPCRAFT_PROJECT_NAME/common/lib/nginx_client_body"
      - "--http-proxy-temp-path=/var/snap/$SNAPCRAFT_PROJECT_NAME/common/lib/nginx_proxy"
      - "--http-fastcgi-temp-path=/var/snap/$SNAPCRAFT_PROJECT_NAME/common/lib/nginx_fastcgi"
      - "--http-uwsgi-temp-path=/var/snap/$SNAPCRAFT_PROJECT_NAME/common/lib/nginx_uwsgi"
      - "--http-scgi-temp-path=/var/snap/$SNAPCRAFT_PROJECT_NAME/common/lib/nginx_scgi"
      - --with-http_ssl_module
    build-packages:
      - libpcre3-dev
      - libssl-dev
      - python-six
    override-build: |
      # Apply patches
      for patch in ${SNAPCRAFT_STAGE}/patches/nginx/*.patch; do
        echo "Applying $(basename "$patch") ..."
        patch \
          --batch \
          --forward \
          --strip 1 \
          --input "$patch"
        echo
      done
      snapcraftctl build

  # libvirt/qemu
  qemu:
    source: .
    source-subdir: qemu-2.11+dfsg
    plugin: autotools
    after:
      - openstack-projects
    stage-packages:
      - seabios
      - ipxe-qemu
      - try:
        - libnuma1
        - libspice-server1
      - libasound2
      - libasyncns0
      - libbluetooth3
      - libboost-iostreams1.62.0
      - libboost-random1.62.0
      - libboost-system1.62.0
      - libboost-thread1.62.0
      - libcaca0
      - libfdt1
      - libflac8
      - libglu1-mesa
      - libiscsi7
      - libjpeg-turbo8
      - libnspr4
      - libnss3
      - libogg0
      - libopus0
      - libpixman-1-0
      - libpulse0
      - librados2
      - librbd1
      - libsdl1.2debian
      - libslang2
      - libsndfile1
      - libusb-1.0-0
      - libusbredirparser1
      - libvorbis0a
      - libvorbisenc2
      - libx11-6
      - libxau6
      - libxcb1
      - libxdmcp6
      - libxen-dev
      - libxext6
      - libpng16-16
    build-packages:
      - acpica-tools
      - libaio-dev
      - libasound2-dev
      - libattr1-dev
      - libbluetooth-dev
      - libcap-dev
      - libcap-ng-dev
      - libcurl4-gnutls-dev
      - libfdt-dev
      - gnutls-dev
      - libiscsi-dev
      - libncurses5-dev
      - try: [libnuma-dev]
      - libpixman-1-dev
      - libpulse-dev
      - librados-dev
      - librbd-dev
      - libsasl2-dev
      - libsdl1.2-dev
      - try: [libspice-server-dev, libspice-protocol-dev]
      - libusb-1.0-0-dev
      - libusbredirparser-dev
      - linux-libc-dev
      - uuid-dev
      - xfslibs-dev
      - libjpeg-dev
      - zlib1g-dev
      - libpng-dev
      - wget
      - dpkg-dev
      - gcc
    configflags:
      - --disable-blobs
      - --prefix=/snap/$SNAPCRAFT_PROJECT_NAME/current
      - --localstatedir=/var/snap/$SNAPCRAFT_PROJECT_NAME/common
      - --sysconfdir=/var/snap/$SNAPCRAFT_PROJECT_NAME/common
      - --extra-cflags=-DCONFIG_QEMU_DATAPATH='"/snap/$SNAPCRAFT_PROJECT_NAME/current/share/qemu:/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/share/seabios:/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/lib/ipxe/qemu"'
      - --disable-user
      - --disable-linux-user
      - --enable-system
      - --target-list=x86_64-softmmu
    override-build: |
      # Clean up old install
      rm -R qemu-2.* || true
      # Download sources and patch
      wget http://archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu_2.11+dfsg.orig.tar.xz
      wget http://archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu_2.11+dfsg-1ubuntu7.14.debian.tar.xz
      wget http://archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu_2.11+dfsg-1ubuntu7.14.dsc
      dpkg-source -x qemu_*.dsc
      snapcraftctl build
    organize:
      # Hack to shift installed qemu back to root of snap
      # required to ensure that pathing to files etc works at
      # runtime
      # * is not used to avoid directory merge conflicts
      snap/microstack/current/: ./

  kvm-support:
    plugin: nil
    stage-packages:
    - try: [msr-tools]

  libvirt:
    source: .
    source-subdir: libvirt-4.0.0
    after: [openstack-projects, qemu]
    plugin: autotools
    build-packages:
    - libxml2-dev
    - libxml-libxml-perl
    - libcurl4-gnutls-dev
    - libncurses5-dev
    - libreadline-dev
    - zlib1g-dev
    - libgcrypt20-dev
    - libgnutls28-dev
    - libyajl-dev
    - libpcap0.8-dev
    - libaudit-dev
    - libdevmapper-dev
    - libpciaccess-dev
    - libnl-3-dev
    - libnl-route-3-dev
    - libxml2-utils
    - uuid-dev
    - try: [libnuma-dev]
    - python-all
    - python-six
    - wget
    - dpkg-dev
    - xsltproc
    stage-packages:
    - dmidecode
    - dnsmasq
    - libxml2
    - libyajl2
    - try: [libnuma1]
    - libcurl3-gnutls
    - libpcap0.8
    - libpciaccess0
    configflags:
    - --with-qemu
    - --without-bhyve
    - --without-xen
    - --without-openvz
    - --without-vmware
    - --without-xenapi
    - --without-esx
    - --without-hyperv
    - --without-lxc
    - --without-vz
    - --without-vbox
    - --without-uml
    - --without-sasl
    - --without-storage-iscsi
    - --without-storage-sheepdog
    - --without-storage-rbd
    - --without-storage-lvm
    - --without-selinux
    - --prefix=/snap/$SNAPCRAFT_PROJECT_NAME/current
    - --localstatedir=/var/snap/$SNAPCRAFT_PROJECT_NAME/common
    - --sysconfdir=/var/snap/$SNAPCRAFT_PROJECT_NAME/common
    - DNSMASQ=/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/sbin/dnsmasq
    - DMIDECODE=/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/sbin/dmidecode
    - OVSVSCTL=/snap/$SNAPCRAFT_PROJECT_NAME/current/bin/ovs-vsctl
    - IPTABLES_PATH=/snap/$SNAPCRAFT_PROJECT_NAME/current/sbin/iptables
    - IP6TABLES_PATH=/snap/$SNAPCRAFT_PROJECT_NAME/current/sbin/ip6tables
    override-build: |
      # Clean up old install
      rm -R libvirt-4.0.* || true
      # Download sources and patch
      wget http://archive.ubuntu.com/ubuntu/pool/main/libv/libvirt/libvirt_4.0.0.orig.tar.xz
      wget http://archive.ubuntu.com/ubuntu/pool/main/libv/libvirt/libvirt_4.0.0-1ubuntu8.12.debian.tar.xz
      wget http://archive.ubuntu.com/ubuntu/pool/main/libv/libvirt/libvirt_4.0.0-1ubuntu8.12.dsc
      dpkg-source -x libvirt*.dsc
      snapcraftctl build
    organize:
      # Hack to shift installed libvirt back to root of snap
      # required to ensure that pathing to files etc works at
      # runtime
      # * is not used to avoid directory merge conflicts
      snap/microstack/current/: ./

  # MySQL
  mysql-server:
    plugin: dump
    source: ./snap-wrappers/mysql
    stage-packages:
      - mysql-server
      - mysql-client
    organize:
      mysql-start-server: bin/mysql-start-server
      mysql-start-client: bin/mysql-start-client

  # RabbitMQ
  rabbitmq-server:
    source: ./snap-wrappers/rabbitmq
    plugin: dump
    stage-packages:
      - rabbitmq-server
    override-build: |
      rm -f $SNAPCRAFT_PART_INSTALL/usr/bin/erl
      rm -f $SNAPCRAFT_PART_INSTALL/usr/lib/rabbitmq/bin/rabbitmq-script-wrapper
      # NOTE(jamespage): The versioned path below is brittle.
      rm -f $SNAPCRAFT_PART_INSTALL/usr/lib/rabbitmq/lib/rabbitmq_server-3.5.7/sbin/rabbitmq-defaults
      snapcraftctl build
    organize:
      rabbitmq-script-wrapper: usr/lib/rabbitmq/bin/rabbitmq-script-wrapper
      rabbitmq-defaults: usr/lib/rabbitmq/lib/rabbitmq_server-3.5.7/sbin/rabbitmq-defaults
      erl: usr/bin/erl

  # Memcached Token Caching
  memcached:
    plugin: nil
    stage-packages:
      - memcached

  # Cinder LVM backend
  lvm2:
    source: http://www.sourceware.org/pub/lvm2/releases/LVM2.2.02.172.tgz
    plugin: autotools
    configflags:
      - --with-confdir=/var/snap/$SNAPCRAFT_PROJECT_NAME/common/etc/
      - --with-default-system-dir=/var/snap/$SNAPCRAFT_PROJECT_NAME/common/etc/
    build-attributes: [no-patchelf]

  # Networking tools
  iptables:
    source: http://iptables.netfilter.org/projects/iptables/files/iptables-1.6.0.tar.bz2
    plugin: autotools
    build-packages:
      - libnftnl-dev
    stage-packages:
      - libatm1
      # Additional utilties for hypervisor networking
      - iproute2
      - bridge-utils
      - ipset
    configflags:
      - --disable-nftables
      - --prefix=/snap/$SNAPCRAFT_PROJECT_NAME/current
    override-build: |
      snapcraftctl build
      cp --remove-destination $SNAPCRAFT_PART_INSTALL/snap/$SNAPCRAFT_PROJECT_NAME/current/sbin/xtables-multi \
        $SNAPCRAFT_PART_INSTALL/snap/$SNAPCRAFT_PROJECT_NAME/current/bin/iptables-xml
    organize:
      # Hack to shift installed iptables back to root of snap
      # required to ensure that pathing to files etc works at
      # runtime
      # * is not used to avoid directory merge conflicts
      snap/microstack/current/: ./

  # Templates and other files to be overlaid over the snap.
  overlay:
    plugin: dump
    source: snap-overlay