From 0ac9b0079e58a32bf9b233e7db134276f0ad3e67 Mon Sep 17 00:00:00 2001 From: Pete Vander Giessen Date: Thu, 1 Nov 2018 02:57:16 +0000 Subject: [PATCH 01/49] Populated configure hook. Moved configure-the-things.sh code into configure hook. Updated references to executables that can be found inside of the snap context. Fixed up rabbitmq issues (possibly). --- snap/hooks/configure | 174 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 166 insertions(+), 8 deletions(-) diff --git a/snap/hooks/configure b/snap/hooks/configure index 0a5b4ec..5eaa33a 100755 --- a/snap/hooks/configure +++ b/snap/hooks/configure @@ -21,24 +21,47 @@ if [[ $driver != $driver_saved ]]; then snapctl restart $SNAP_NAME fi -# MySQL Setup -MYSQL_PASSWORD=fnord # TODO use snapctl +# Install conf.d configuration from snap for db etc +for project in neutron nova keystone glance; do + mkdir -p ${SNAP_COMMON}/etc/${project}/${project}.conf.d + cp -r ${SNAP}/etc/${project}/${project}.conf.d/* ${SNAP_COMMON}/etc/${project}/${project}.conf.d +done -echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'fnord';" | mysql-start-client -u root +# Create all of the databases +for db in neutron nova nova_api nova_cell0 cinder glance keystone; do + echo "CREATE DATABASE IF NOT EXISTS ${db}; GRANT ALL PRIVILEGES ON ${db}.* TO '${db}'@'localhost' IDENTIFIED BY '${db}';" \ + | mysql-start-client -u root +done -# Keystone Setup -echo "CREATE DATABASE IF NOT EXISTS keystone; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';" | mysql-start-client -u root -p"$MYSQL_PASSWORD" +# Grant nova user access to cell0 +echo "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';" | mysql-start-client -u root + +# RabbitMQ +echo "rabbit setup" +export HOME=$SNAP_COMMON/lib/rabbitmq # TODO: unset this? +# Rabbitmq isn't always started when we run this. Wait for it to start. +# TODO: develop this a bit more -- not 100% that this does what we want. +while :; +do + (grep "Starting broker... completed" /var/snap/microstack/common/log/rabbitmq/startup_log && break) || echo "waiting for rabbitmq to start" && sleep 1; +done + +rabbitmqctl add_user openstack rabbitmq || true +rabbitmqctl set_permissions openstack ".*" ".*" ".*" + +# Keystone +echo "keystone setup" snap-openstack keystone-manage fernet_setup --keystone-user root --keystone-group root snap-openstack keystone-manage db_sync -sudo systemctl restart snap.microstack.* +systemctl restart snap.microstack.keystone-* openstack user show admin || { snap-openstack keystone-manage bootstrap \ --bootstrap-password $OS_PASSWORD \ - --bootstrap-admin-url http://localhost:35357/v3/ \ - --bootstrap-internal-url http://localhost:35357/v3/ \ + --bootstrap-admin-url http://localhost:5000/v3/ \ + --bootstrap-internal-url http://localhost:5000/v3/ \ --bootstrap-public-url http://localhost:5000/v3/ \ --bootstrap-region-id RegionOne } @@ -47,3 +70,138 @@ openstack project show service || { openstack project create --domain default --description "Service Project" service } +# Nova +echo "nova setup" + +openstack user show nova || { + openstack user create --domain default --password nova nova + openstack role add --project service --user nova admin +} + +openstack user show placement || { + openstack user create --domain default --password placement placement + openstack role add --project service --user placement admin +} + +openstack service show compute || { + openstack service create --name nova \ + --description "OpenStack Compute" compute + + for endpoint in public internal admin; do + openstack endpoint create --region RegionOne \ + compute $endpoint http://localhost:8774/v2.1 || : + done +} + +openstack service show placement || { + openstack service create --name placement \ + --description "Placement API" placement + + for endpoint in public internal admin; do + openstack endpoint create --region RegionOne \ + placement $endpoint http://localhost:8778 || : + done +} + +snap-openstack nova-manage api_db sync +snap-openstack nova-manage cell_v2 list_cells | grep cell0 || { + snap-openstack nova-manage cell_v2 map_cell0 +} +snap-openstack nova-manage cell_v2 list_cells | grep cell1 || { + snap-openstack nova-manage cell_v2 create_cell --name=cell1 --verbose +} +snap-openstack nova-manage db sync + +systemctl restart snap.microstack.nova-* + +while ! nc -z localhost 8774; do sleep 0.1; done; + +sleep 5 + +openstack flavor show m1.tiny || { + openstack flavor create --id 1 --ram 512 --disk 1 --vcpus 1 m1.tiny +} +openstack flavor show m1.small || { + openstack flavor create --id 2 --ram 2048 --disk 20 --vcpus 1 m1.small +} +openstack flavor show m1.medium || { + openstack flavor create --id 3 --ram 4096 --disk 20 --vcpus 2 m1.medium +} +openstack flavor show m1.large || { + openstack flavor create --id 4 --ram 8192 --disk 20 --vcpus 4 m1.large +} +openstack flavor show m1.xlarge || { + openstack flavor create --id 5 --ram 16384 --disk 20 --vcpus 8 m1.xlarge +} + +# Neutron +echo "neutron setup" + +openstack user show neutron || { + openstack user create --domain default --password neutron neutron + openstack role add --project service --user neutron admin +} + +openstack service show network || { + openstack service create --name neutron \ + --description "OpenStack Network" network + + for endpoint in public internal admin; do + openstack endpoint create --region RegionOne \ + network $endpoint http://localhost:9696 || : + done +} + +# TODO correct naming of manage script +snap-openstack neutron-manage upgrade head + +systemctl restart snap.microstack.neutron-* + +while ! nc -z localhost 9696; do sleep 0.1; done; + +sleep 5 + +openstack network show test || { + openstack network create test +} + +openstack subnet show test-subnet || { + openstack subnet create --network test --subnet-range 192.168.222.0/24 test-subnet +} + +# Glance +echo "glance setup" + +openstack user show glance || { + openstack user create --domain default --password glance glance + openstack role add --project service --user glance admin +} + +openstack service show image || { + openstack service create --name glance --description "OpenStack Image" image + for endpoint in internal admin public; do + openstack endpoint create --region RegionOne \ + image $endpoint http://localhost:9292 || : + done +} + +snap-openstack glance-manage db_sync + +systemctl restart snap.microstack.glance* + +while ! nc -z localhost 9292; do sleep 0.1; done; + +sleep 5 + +openstack image show cirros || { + [ -f $HOME/images/cirros-0.3.5-x86_64-disk.img ] || { + export http_proxy=$SNAPSTACK_HTTP_PROXY + mkdir -p $HOME/images + wget \ + http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img \ + -O ${HOME}/images/cirros-0.3.5-x86_64-disk.img + unset http_proxy + } + openstack image create --file ${HOME}/images/cirros-0.3.5-x86_64-disk.img \ + --public --container-format=bare --disk-format=qcow2 cirros +} From 8cc08a08a4df0cf7ebeae95337dc47ffd370bd87 Mon Sep 17 00:00:00 2001 From: Pete Vander Giessen Date: Thu, 1 Nov 2018 03:31:05 +0000 Subject: [PATCH 02/49] Fixed error in bash in configure hook. --- snap/hooks/configure | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/snap/hooks/configure b/snap/hooks/configure index 5eaa33a..f939313 100755 --- a/snap/hooks/configure +++ b/snap/hooks/configure @@ -43,7 +43,8 @@ export HOME=$SNAP_COMMON/lib/rabbitmq # TODO: unset this? # TODO: develop this a bit more -- not 100% that this does what we want. while :; do - (grep "Starting broker... completed" /var/snap/microstack/common/log/rabbitmq/startup_log && break) || echo "waiting for rabbitmq to start" && sleep 1; + grep "Starting broker... completed" /var/snap/microstack/common/log/rabbitmq/startup_log && break + echo "waiting for rabbitmq to start" && sleep 1; done rabbitmqctl add_user openstack rabbitmq || true From 5b30a7f8aa0c4f4b2c692c5f00fdf92b7673cd5b Mon Sep 17 00:00:00 2001 From: Pete Vander Giessen Date: Thu, 1 Nov 2018 03:45:45 +0000 Subject: [PATCH 03/49] Disabled cinder daemons for now, as they were causing timeouts. --- snapcraft.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 84cf7f2..56469d3 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -267,12 +267,12 @@ apps: # Cinder cinder-uwsgi: command: snap-openstack cinder-uwsgi - daemon: simple +# daemon: simple plugs: - network-bind cinder-backup: command: snap-openstack cinder-backup - daemon: simple +# daemon: simple plugs: - network cinder-manage: @@ -281,12 +281,12 @@ apps: - network cinder-scheduler: command: snap-openstack cinder-scheduler - daemon: simple +# daemon: simple plugs: - network cinder-volume: command: snap-openstack cinder-volume - daemon: simple +# daemon: simple plugs: - network From 720aa8b1d6bd437f97629d7589865602be2c8844 Mon Sep 17 00:00:00 2001 From: James Page Date: Thu, 1 Nov 2018 11:09:20 +0000 Subject: [PATCH 04/49] Correct name of neutron-db-manager script in configure hook --- snap/hooks/configure | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/snap/hooks/configure b/snap/hooks/configure index f939313..322736f 100755 --- a/snap/hooks/configure +++ b/snap/hooks/configure @@ -153,8 +153,7 @@ openstack service show network || { done } -# TODO correct naming of manage script -snap-openstack neutron-manage upgrade head +snap-openstack neutron-db-manage upgrade head systemctl restart snap.microstack.neutron-* From 21f898b836a568823d25edb3fed909183630ee47 Mon Sep 17 00:00:00 2001 From: James Page Date: Thu, 1 Nov 2018 11:11:16 +0000 Subject: [PATCH 05/49] Set sane default for ovs agent --- snap/etc/neutron/plugins/ml2/openvswitch_agent.ini | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/snap/etc/neutron/plugins/ml2/openvswitch_agent.ini b/snap/etc/neutron/plugins/ml2/openvswitch_agent.ini index 45d070c..1740770 100644 --- a/snap/etc/neutron/plugins/ml2/openvswitch_agent.ini +++ b/snap/etc/neutron/plugins/ml2/openvswitch_agent.ini @@ -1,7 +1,11 @@ # Snap provided defaults for neutron-openvswitch-agent [securitygroup] enable_security_group = True -firewall_driver = iptables_hybrid +firewall_driver = openvswitch [AGENT] tunnel_types = geneve,vxlan,gre + +[ovs] +local_ip = 127.0.0.1 +bridge_mappings = physnet1:br-ex From 7133fe68dfc3faf78d121bbf0d200d54c70c9865 Mon Sep 17 00:00:00 2001 From: James Page Date: Thu, 1 Nov 2018 11:19:51 +0000 Subject: [PATCH 06/49] Drop mysql setup from install hook for now --- snap/hooks/install | 59 ---------------------------------------------- 1 file changed, 59 deletions(-) diff --git a/snap/hooks/install b/snap/hooks/install index bcb7173..4eca4cc 100755 --- a/snap/hooks/install +++ b/snap/hooks/install @@ -3,62 +3,3 @@ set -e install -D $SNAP/var/snap/microstack/common/libvirt/libvirtd.conf $SNAP_COMMON/libvirt/libvirtd.conf sed -i 's/unix_sock_group = "libvirtd"/unix_sock_group = "sudo"/' $SNAP_COMMON/libvirt/libvirtd.conf - -# Mysql setup script -set -e -init_config() { - mkdir "${CONFDIR}" - echo "Generating config file in ${CONFFILE}..." - touch "${CONFFILE}" - echo "[mysqld]" >> ${CONFFILE} - echo "pid-file=${RUNDIR}/mysqld.pid" >> ${CONFFILE} - echo "socket=${RUNDIR}/mysqld.sock" >> ${CONFFILE} - echo "datadir=${DATADIR}" >> ${CONFFILE} - echo "log-error=${LOGDIR}/error.log" >> ${CONFFILE} - echo "secure-file-priv=${FILESDIR}" >> ${CONFFILE} - echo "basedir=${BASEDIR}" >> ${CONFFILE} - echo "[mysql]" >> ${CONFFILE} - echo "socket=${RUNDIR}/mysqld.sock" >> ${CONFFILE} - echo "Done" -} - -init_database() { - echo "Initializing new database in ${DATADIR}..." - mkdir "${DATADIR}" - mysqld --defaults-file="${CONFFILE}" --initialize - echo "Done" - cat ${LOGDIR}/error.log | grep "temporary password" -} - -USERID=$(id -u) -if [ "${USERID}" = "0" ];then - MYSQL_SNAPDIR="${SNAP_COMMON}" -else - MYSQL_SNAPDIR="${SNAP_USER_COMMON}" -fi -DATADIR="${MYSQL_SNAPDIR}/data" -RUNDIR="${MYSQL_SNAPDIR}/run" -LOGDIR="${MYSQL_SNAPDIR}/log" -CONFDIR="${MYSQL_SNAPDIR}/conf" -CONFFILE="${CONFDIR}/my.cnf" -FILESDIR="${MYSQL_SNAPDIR}/files" -BASEDIR="${SNAP}/usr" - -[ -d "${LOGDIR}" ] || mkdir "${LOGDIR}" -[ -f "${LOGDIR}/error.log" ] || touch "${LOGDIR}/error.log" -[ -d "${FILESDIR}" ] || mkdir "${FILESDIR}" -[ -d "${RUNDIR}" ] || mkdir "${RUNDIR}" -[ -d "${CONFDIR}" ] || init_config -[ -d "${DATADIR}" ] || init_database - -if [ "${USERID}" = "0" ]; -then - # Ensure mysql user exists and that the correct permissions are set on various directories - getent group mysql || addgroup mysql - adduser --system --disabled-login --ingroup mysql --home /nonexistent --gecos "MySQL Server" --shell /bin/false mysql >/dev/null - chown -R mysql:mysql "${LOGDIR}" "${FILESDIR}" "${DATADIR}" "${RUNDIR}" - chmod 750 "${LOGDIR}" "${DATADIR}" - chmod 770 "${FILESDIR}" - chmod 755 "${RUNDIR}" - VARS="--user=mysql" -fi From e532ef3f6bbf882b03bc929e78912774404da4b1 Mon Sep 17 00:00:00 2001 From: James Page Date: Thu, 1 Nov 2018 11:47:29 +0000 Subject: [PATCH 07/49] Drop number of metadata workers --- snap/etc/neutron/neutron.conf.d/workers.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/snap/etc/neutron/neutron.conf.d/workers.conf b/snap/etc/neutron/neutron.conf.d/workers.conf index c804948..c2a6709 100644 --- a/snap/etc/neutron/neutron.conf.d/workers.conf +++ b/snap/etc/neutron/neutron.conf.d/workers.conf @@ -1,3 +1,4 @@ [DEFAULT] api_workers = 4 rpc_workers = 4 +metadata_workers = 4 From 07c9154faa8de7fdd727fc530e30c35194e78c60 Mon Sep 17 00:00:00 2001 From: James Page Date: Thu, 1 Nov 2018 12:10:37 +0000 Subject: [PATCH 08/49] Don't allow virt driver to be configured --- snap/bin/launch-libvirtd | 8 ++------ snap/hooks/configure | 21 --------------------- 2 files changed, 2 insertions(+), 27 deletions(-) diff --git a/snap/bin/launch-libvirtd b/snap/bin/launch-libvirtd index 1951064..4b69d66 100755 --- a/snap/bin/launch-libvirtd +++ b/snap/bin/launch-libvirtd @@ -10,9 +10,5 @@ else ARCH="$SNAP_ARCH-linux-gnu" fi -driver="$(snapctl get driver)" - -if [ "$driver" = "LIBVIRT" ]; then - export LD_LIBRARY_PATH=$SNAP/lib/$ARCH:$SNAP/usr/lib/$ARCH:$LD_LIBRARY_PATH - exec $SNAP/sbin/libvirtd -fi +export LD_LIBRARY_PATH=$SNAP/lib/$ARCH:$SNAP/usr/lib/$ARCH:$LD_LIBRARY_PATH +exec $SNAP/sbin/libvirtd diff --git a/snap/hooks/configure b/snap/hooks/configure index 322736f..ae3ec02 100755 --- a/snap/hooks/configure +++ b/snap/hooks/configure @@ -1,26 +1,5 @@ #!/bin/bash -e -# Openstack Prep -# which openstack || echo "This snap currently requires the python openstack client to be installed and in your path. The intent is to add the client in before development is complete."; exit 1 - -# QEMU Setup -echo "qemu setup" -driver="$(snapctl get driver)" - -if [[ -n $driver && ! $driver =~ (LIBVIRT|QEMU) ]]; then - echo "\"$driver\" is not a supported virtualization driver" - exit 1 -fi - -driver_saved="$(cat $SNAP_COMMON/driver)" || true -driver=${driver:-QEMU} -driver_saved=${driver_saved:-QEMU} - -if [[ $driver != $driver_saved ]]; then - echo "$driver" > $SNAP_COMMON/driver - snapctl restart $SNAP_NAME -fi - # Install conf.d configuration from snap for db etc for project in neutron nova keystone glance; do mkdir -p ${SNAP_COMMON}/etc/${project}/${project}.conf.d From 97d3f041807250a965e4239a5a9d451e4cca5979 Mon Sep 17 00:00:00 2001 From: James Page Date: Thu, 1 Nov 2018 12:18:46 +0000 Subject: [PATCH 09/49] Ensure instances directory exists --- snap/snap-openstack.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/snap/snap-openstack.yaml b/snap/snap-openstack.yaml index a6417c2..943b7c8 100644 --- a/snap/snap-openstack.yaml +++ b/snap/snap-openstack.yaml @@ -21,6 +21,7 @@ setup: - "{snap_common}/lock" - "{snap_common}/log" - "{snap_common}/run" + - "{snap_common}/instances" templates: keystone-nginx.conf.j2: "{snap_common}/etc/nginx/snap/sites-enabled/keystone.conf" keystone-snap.conf.j2: "{snap_common}/etc/keystone/keystone.conf.d/keystone-snap.conf" From 56afcd35502841800d8c998e8a3201586dcba85a Mon Sep 17 00:00:00 2001 From: James Page Date: Thu, 1 Nov 2018 12:21:19 +0000 Subject: [PATCH 10/49] Add misc built-from-source utils from nova-hypervisor snap --- snapcraft.yaml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/snapcraft.yaml b/snapcraft.yaml index 56469d3..6fd8464 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -756,3 +756,31 @@ parts: python-packages: - python-openstackclient==3.15.0 constraints: https://raw.githubusercontent.com/openstack/requirements/stable/rocky/upper-constraints.txt + + bridge-utils: + source: https://www.kernel.org/pub/linux/utils/net/bridge-utils/bridge-utils-1.6.tar.gz + plugin: autotools + iproute2: + source: https://www.kernel.org/pub/linux/utils/net/iproute2/iproute2-4.9.0.tar.gz + plugin: autotools + build-packages: + - bison + - flex + - libdb5.3-dev + iptables: + source: http://iptables.netfilter.org/projects/iptables/files/iptables-1.6.0.tar.bz2 + plugin: autotools + build-packages: + - libnftnl-dev + configflags: + - --disable-nftables + install: | + cp --remove-destination $SNAPCRAFT_PART_INSTALL/sbin/xtables-multi $SNAPCRAFT_PART_INSTALL/bin/iptables-xml + ipset: + source: http://ipset.netfilter.org/ipset-6.30.tar.bz2 + plugin: autotools + build-packages: + - libltdl-dev + - libmnl-dev + configflags: + - "--with-kmod=no" From cb85af46e602a26a25c847058447f4ce40dc8f78 Mon Sep 17 00:00:00 2001 From: James Page Date: Thu, 1 Nov 2018 13:58:23 +0000 Subject: [PATCH 11/49] Add neutron-dependencies stage to pull in haproxy --- snapcraft.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/snapcraft.yaml b/snapcraft.yaml index 6fd8464..12ff2c6 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -409,6 +409,12 @@ parts: stage: [$etc] prime: [$etc] + neutron-dependencies: + after: [neutron] + plugin: nil + stage-packages: + - haproxy + # Glance glance: after: [keystone] # We arbitrarily rely on keystone to patch some things From 7a802bbf2ef82363f55989a22a9bb44653384025 Mon Sep 17 00:00:00 2001 From: James Page Date: Thu, 1 Nov 2018 14:03:34 +0000 Subject: [PATCH 12/49] Set location of ovs-vsctl for libvirt dumbness --- snapcraft.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/snapcraft.yaml b/snapcraft.yaml index 12ff2c6..a78b6c7 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -628,6 +628,7 @@ parts: - --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 override-build: | wget http://archive.ubuntu.com/ubuntu/pool/main/libv/libvirt/libvirt_1.3.1.orig.tar.gz wget http://archive.ubuntu.com/ubuntu/pool/main/libv/libvirt/libvirt_1.3.1-1ubuntu10.24.debian.tar.xz From 2e75d5cd3301eb9379a85a852c4233d5cd234aeb Mon Sep 17 00:00:00 2001 From: James Page Date: Thu, 1 Nov 2018 14:38:55 +0000 Subject: [PATCH 13/49] Rework parts, add compilation of pyc --- snapcraft.yaml | 291 ++++++++++++++++--------------------------------- 1 file changed, 95 insertions(+), 196 deletions(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index a78b6c7..112887d 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -1,5 +1,5 @@ name: microstack -version: alpha +version: rocky summary: Openstack on your laptop. description: | Microstack gives you an easy way to develop and test Openstack @@ -298,62 +298,26 @@ apps: - network-bind parts: - # Keystone - keystone: + # 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: - - mysql-python - - oslo.cache[dogpile] - - pymysql - - pysqlite - - uwsgi - - git+https://github.com/openstack/snap.openstack#egg=snap.openstack - build-packages: - - gcc - - libffi-dev - - libmysqlclient-dev - - libssl-dev - - libsqlite3-dev - - configure-the-things: - plugin: dump - source: src/experiments - - keystone-config: - after: [keystone] - 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/*.conf - - etc/keystone/*.ini - - etc/keystone/*.json - - etc/keystone/*.templates - stage: [$etc] - prime: [$etc] - - # Nova - nova: - after: [keystone] # We abitrarily rely on keystone to be the one to patch things - plugin: python - python-version: python2 - source: http://tarballs.openstack.org/nova/nova-stable-rocky.tar.gz python-packages: - libvirt-python + - oslo.cache[dogpile] - pymysql - uwsgi - - python-memcached - git+https://github.com/openstack/snap.openstack#egg=snap.openstack - constraints: https://raw.githubusercontent.com/openstack/requirements/stable/rocky/upper-constraints.txt + - 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 - libffi-dev @@ -365,37 +329,43 @@ parts: - conntrack - coreutils - qemu-utils + - haproxy + override-prime: | + snapcraftctl prime + # 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. + ./usr/bin/python2.7 -m compileall . + + 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] nova-config: - after: [nova] + after: [openstack-projects] plugin: dump source: http://tarballs.openstack.org/nova/nova-stable-rocky.tar.gz filesets: etc: - - etc/nova/*.conf - - etc/nova/*.ini - - etc/nova/*.json - - etc/nova/rootwrap.d + - etc/nova/* stage: [$etc] prime: [$etc] - neutron: - after: [keystone] # We arbitrarily rely on keystone to patch some things - plugin: python - python-version: python2 - source: http://tarballs.openstack.org/neutron/neutron-stable-rocky.tar.gz - python-packages: - - pymysql - - python-memcached - - git+https://github.com/openstack/snap.openstack#egg=snap.openstack - constraints: https://raw.githubusercontent.com/openstack/requirements/stable/rocky/upper-constraints.txt - build-packages: - - gcc - - libffi-dev - - libssl-dev - neutron-config: - after: [neutron] + after: [openstack-projects] plugin: dump source: http://tarballs.openstack.org/neutron/neutron-stable-rocky.tar.gz organize: @@ -409,37 +379,8 @@ parts: stage: [$etc] prime: [$etc] - neutron-dependencies: - after: [neutron] - plugin: nil - stage-packages: - - haproxy - - # Glance - glance: - after: [keystone] # We arbitrarily rely on keystone to patch some things - plugin: python - python-version: python2 - source: http://tarballs.openstack.org/glance/glance-stable-rocky.tar.gz - python-packages: - - httplib2 - - os-brick - - oslo.rootwrap - - oslo.vmware - - pymysql - - python-cinderclient - - python-memcached - - python-swiftclient - - git+https://github.com/openstack/snap.openstack#egg=snap.openstack - constraints: https://raw.githubusercontent.com/openstack/requirements/stable/rocky/upper-constraints.txt - build-packages: - - gcc - - libffi-dev - - libssl-dev - - libxml2-dev - - libxslt1-dev glance-config: - after: [glance] + after: [openstack-projects] plugin: dump source: http://tarballs.openstack.org/glance/glance-stable-rocky.tar.gz organize: @@ -448,9 +389,34 @@ parts: etc/*.json: etc/glance/ filesets: etc: - - etc/glance/*.conf - - etc/glance/*.ini - - etc/glance/*.json + - etc/glance/* + stage: [$etc] + prime: [$etc] + + cinder-config: + after: [cinder] + 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] @@ -501,26 +467,6 @@ parts: after: - openvswitch - # Openstack Shared Parts - templates: - after: - - keystone-config - - nova-config - - neutron-config - - glance-config - - ovs-wrapper - - qemu - - kvm-support - - libvirt - - mysql-server - - rabbitmq-server - - memcached - - cinder-config - - horizon-config - - python-openstackclient - plugin: dump - source: snap - nginx: after: [keystone, nova, neutron, openvswitch] source: http://www.nginx.org/download/nginx-1.13.0.tar.gz @@ -642,7 +588,6 @@ parts: # * is not used to avoid directory merge conflicts snap/microstack/current/: ./ - # MySQL mysql-server: plugin: dump @@ -671,7 +616,7 @@ parts: rabbitmq-defaults: usr/lib/rabbitmq/lib/rabbitmq_server-3.5.7/sbin/rabbitmq-defaults erl: usr/bin/erl - # Memcached + # Memcached Token Caching memcached: plugin: autotools source: https://memcached.org/files/memcached-1.5.10.tar.gz @@ -684,7 +629,7 @@ parts: make make install - # Cinder + # Cinder LVM backend lvm2: source: http://www.sourceware.org/pub/lvm2/releases/LVM2.2.02.172.tgz plugin: autotools @@ -692,78 +637,8 @@ parts: - --with-confdir=/var/snap/common/etc/ - --with-default-system-dir=/var/snap/common/etc/ build-attributes: [no-patchelf] - cinder: - after: [keystone] - plugin: python - python-version: python2 - source: http://tarballs.openstack.org/cinder/cinder-stable-rocky.tar.gz - python-packages: - - python-memcached - - pymysql - - uwsgi - - git+https://github.com/openstack/snap.openstack#egg=snap.openstack - constraints: https://raw.githubusercontent.com/openstack/requirements/stable/rocky/upper-constraints.txt - build-packages: - - gcc - - libffi-dev - - libssl-dev - - libxml2-dev - - libxslt1-dev - cinder-config: - after: [cinder] - 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/*.conf - - etc/cinder/*.ini - - etc/cinder/*.json - - etc/cinder/*.templates - stage: [$etc] - prime: [$etc] - - # Horizon - horizon: - after: [keystone] - plugin: python - python-version: python2 - source: http://tarballs.openstack.org/horizon/horizon-stable-rocky.tar.gz - python-packages: - - uwsgi - - git+https://github.com/openstack/snap.openstack#egg=snap.openstack - constraints: https://raw.githubusercontent.com/openstack/requirements/stable/rocky/upper-constraints.txt - build-packages: - - gcc - - libffi-dev - - libssl-dev - - libxml2-dev - - libxslt1-dev - horizon-config: - after: [horizon] - plugin: dump - source: http://tarballs.openstack.org/horizon/horizon-stable-rocky.tar.gz - organize: - etc/*.conf: etc/horizon/ - filesets: - etc: - - etc/horizon/*.conf - stage: [$etc] - prime: [$etc] - - # Openstackclient - python-openstackclient: - after: [keystone] - plugin: python - python-version: python2 - python-packages: - - python-openstackclient==3.15.0 - constraints: https://raw.githubusercontent.com/openstack/requirements/stable/rocky/upper-constraints.txt + # Misc utils for hypervisor networking bridge-utils: source: https://www.kernel.org/pub/linux/utils/net/bridge-utils/bridge-utils-1.6.tar.gz plugin: autotools @@ -791,3 +666,27 @@ parts: - libmnl-dev configflags: - "--with-kmod=no" + + # Openstack Shared Parts + templates: + after: + - keystone-config + - nova-config + - neutron-config + - glance-config + - cinder-config + - horizon-config + - openvswitch + - qemu + - kvm-support + - libvirt + - mysql-server + - rabbitmq-server + - memcached + plugin: dump + source: snap + + configure-the-things: + plugin: dump + source: src/experiments + From e7da9d9a515c74c7cb5f78dd588161daac5a7944 Mon Sep 17 00:00:00 2001 From: James Page Date: Thu, 1 Nov 2018 14:40:01 +0000 Subject: [PATCH 14/49] Drop after clause for nginx --- snapcraft.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 112887d..e8f88f0 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -468,7 +468,6 @@ parts: - openvswitch nginx: - after: [keystone, nova, neutron, openvswitch] source: http://www.nginx.org/download/nginx-1.13.0.tar.gz plugin: autotools configflags: From 3a4ee6c05c2f7cfef3ef730a31f718bbbdd9ed36 Mon Sep 17 00:00:00 2001 From: James Page Date: Thu, 1 Nov 2018 14:45:55 +0000 Subject: [PATCH 15/49] Correct dep for cinder-config --- snapcraft.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index e8f88f0..e542dcc 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -394,7 +394,7 @@ parts: prime: [$etc] cinder-config: - after: [cinder] + after: [openstack-projects] plugin: dump source: http://tarballs.openstack.org/cinder/cinder-stable-rocky.tar.gz organize: From f8986f7abc1c57a7794f477b4ffd66ad1e1e567d Mon Sep 17 00:00:00 2001 From: James Page Date: Thu, 1 Nov 2018 14:50:34 +0000 Subject: [PATCH 16/49] Switch prepare -> override-build --- snapcraft.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index e542dcc..6889691 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -449,7 +449,7 @@ parts: - "--sysconfdir=/var/snap/$SNAPCRAFT_PROJECT_NAME/etc" after: - ovs-patches - prepare: | + override-build: | # Apply patches for patch in ${SNAPCRAFT_STAGE}/patches/openvswitch/*.patch; do echo "Applying $(basename "$patch") ..." @@ -460,6 +460,7 @@ parts: --input "$patch" echo done + snapcraftctl build ovs-wrapper: source: conf @@ -486,10 +487,11 @@ parts: - libpcre3-dev - libssl-dev - python-six - prepare: | + override-build: | export SNAP_ROOT="../../.." export SNAP_SOURCE="$SNAP_ROOT/parts/nginx/build" patch -d $SNAP_SOURCE -p1 < $SNAP_ROOT/patches/drop-nginx-setgroups.patch + snapcraftctl build libxml2: source: http://xmlsoft.org/sources/libxml2-2.9.4.tar.gz From e2802efa39b384622d8bc6f434aa0ca6aff1e3ac Mon Sep 17 00:00:00 2001 From: James Page Date: Thu, 1 Nov 2018 15:12:59 +0000 Subject: [PATCH 17/49] Scope compileall to python directories --- snapcraft.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 6889691..96aac46 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -336,7 +336,7 @@ parts: # 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. - ./usr/bin/python2.7 -m compileall . + ./usr/bin/python2.7 -m compileall usr/lib/python2.7 keystone-config: after: [openstack-projects] From 4f90e42500a86b2faa458b79c6aaa8781ba1c18e Mon Sep 17 00:00:00 2001 From: James Page Date: Thu, 1 Nov 2018 15:16:19 +0000 Subject: [PATCH 18/49] Correct path for compile --- snapcraft.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 96aac46..b7dc75b 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -336,7 +336,7 @@ parts: # 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. - ./usr/bin/python2.7 -m compileall usr/lib/python2.7 + ./usr/bin/python2.7 -m compileall lib/python2.7 keystone-config: after: [openstack-projects] From c9595fd5879eaadd667c06ab185f8c046571ec6a Mon Sep 17 00:00:00 2001 From: James Page Date: Thu, 1 Nov 2018 16:18:46 +0000 Subject: [PATCH 19/49] Ignore py compilation issues --- snapcraft.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index b7dc75b..0cea5b6 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -336,7 +336,8 @@ parts: # 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. - ./usr/bin/python2.7 -m compileall lib/python2.7 + # Ignore errors due to syntax issues in foobar python 2. + ./usr/bin/python2.7 -m compileall . || true keystone-config: after: [openstack-projects] From eabfa6500bb52f0afc045df39493e74628f05c9a Mon Sep 17 00:00:00 2001 From: James Page Date: Thu, 1 Nov 2018 17:26:12 +0000 Subject: [PATCH 20/49] Set CPU mode to host-passthrough --- snap/etc/nova/nova.conf.d/hypervisor.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/snap/etc/nova/nova.conf.d/hypervisor.conf b/snap/etc/nova/nova.conf.d/hypervisor.conf index 2623e32..0ff89cf 100644 --- a/snap/etc/nova/nova.conf.d/hypervisor.conf +++ b/snap/etc/nova/nova.conf.d/hypervisor.conf @@ -6,3 +6,4 @@ disable_rootwrap = True [libvirt] virt_type = kvm +cpu_mode = host-passthrough From 06aa4a33c56f39177ee44f7cfc9ede7784a93bfa Mon Sep 17 00:00:00 2001 From: James Page Date: Thu, 1 Nov 2018 17:28:07 +0000 Subject: [PATCH 21/49] Resync libvirt part with multipass --- snapcraft.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 0cea5b6..0b729aa 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -547,6 +547,8 @@ parts: stage-packages: - dmidecode - dnsmasq + - dnsmasq-utils + - ebtables - libxml2 - libyajl2 - try: [libnuma1] @@ -576,7 +578,8 @@ parts: - --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 + - OVSVSCTL=/snap/$SNAPCRAFT_PROJECT_NAME/current/bin/ovs-vsctla + - EBTABLES_PATH=/snap/$SNAPCRAFT_PROJECT_NAME/current/sbin/ebtables override-build: | wget http://archive.ubuntu.com/ubuntu/pool/main/libv/libvirt/libvirt_1.3.1.orig.tar.gz wget http://archive.ubuntu.com/ubuntu/pool/main/libv/libvirt/libvirt_1.3.1-1ubuntu10.24.debian.tar.xz From db9b949f04be5937d55fff7b6e04f1dcf60df389 Mon Sep 17 00:00:00 2001 From: James Page Date: Thu, 1 Nov 2018 17:34:56 +0000 Subject: [PATCH 22/49] Fixup ovs-vsctl pathing --- snapcraft.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 0b729aa..cbaf550 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -578,7 +578,7 @@ parts: - --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-vsctla + - OVSVSCTL=/snap/$SNAPCRAFT_PROJECT_NAME/current/bin/ovs-vsctl - EBTABLES_PATH=/snap/$SNAPCRAFT_PROJECT_NAME/current/sbin/ebtables override-build: | wget http://archive.ubuntu.com/ubuntu/pool/main/libv/libvirt/libvirt_1.3.1.orig.tar.gz From e306d3b25230bef7168d86be651d2a21b9e512b0 Mon Sep 17 00:00:00 2001 From: James Page Date: Fri, 2 Nov 2018 10:32:57 +0000 Subject: [PATCH 23/49] Fix paths for LVM2 build --- snapcraft.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index cbaf550..ed3fe73 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -639,8 +639,8 @@ parts: source: http://www.sourceware.org/pub/lvm2/releases/LVM2.2.02.172.tgz plugin: autotools configflags: - - --with-confdir=/var/snap/common/etc/ - - --with-default-system-dir=/var/snap/common/etc/ + - --with-confdir=/var/snap/$SNAPCRAFT_PROJECT_NAME/common/etc/ + - --with-default-system-dir=/var/snap/$SNAPCRAFT_PROJECT_NAME/common/etc/ build-attributes: [no-patchelf] # Misc utils for hypervisor networking From 7bbcfd6dd937c39966b8470d58b9cf2bd6883c48 Mon Sep 17 00:00:00 2001 From: James Page Date: Fri, 2 Nov 2018 10:34:59 +0000 Subject: [PATCH 24/49] Switch to newer libvirt from upstream --- snapcraft.yaml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index ed3fe73..5a42ac9 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -521,8 +521,7 @@ parts: - try: [msr-tools] libvirt: - source: . - source-subdir: libvirt-1.3.1 + source: https://libvirt.org/sources/libvirt-4.6.0.tar.xz plugin: autotools build-packages: - libxml2-dev @@ -580,12 +579,6 @@ parts: - DMIDECODE=/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/sbin/dmidecode - OVSVSCTL=/snap/$SNAPCRAFT_PROJECT_NAME/current/bin/ovs-vsctl - EBTABLES_PATH=/snap/$SNAPCRAFT_PROJECT_NAME/current/sbin/ebtables - override-build: | - wget http://archive.ubuntu.com/ubuntu/pool/main/libv/libvirt/libvirt_1.3.1.orig.tar.gz - wget http://archive.ubuntu.com/ubuntu/pool/main/libv/libvirt/libvirt_1.3.1-1ubuntu10.24.debian.tar.xz - wget http://archive.ubuntu.com/ubuntu/pool/main/libv/libvirt/libvirt_1.3.1-1ubuntu10.24.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 From 0f590885e4acdaabddb111aa045101309078b944 Mon Sep 17 00:00:00 2001 From: James Page Date: Fri, 2 Nov 2018 10:55:42 +0000 Subject: [PATCH 25/49] Major restructure --- .../{ => nginx}/drop-nginx-setgroups.patch | 0 scripts/mysql/mysql-startup | 75 ------------------- {snap => snap-overlay}/bin/sudo | 0 {snap => snap-overlay}/etc/cinder/cinder.conf | 0 .../etc/glance/glance.conf.d/database.conf | 0 .../etc/glance/glance.conf.d/keystone.conf | 0 .../etc/horizon/horizon.conf | 0 .../etc/keystone/keystone.conf | 0 .../keystone/keystone.conf.d/database.conf | 0 .../etc/neutron/dhcp_agent.ini | 0 .../etc/neutron/l3_agent.ini | 0 .../etc/neutron/metadata_agent.ini | 0 .../etc/neutron/neutron.conf | 0 .../etc/neutron/neutron.conf.d/database.conf | 0 .../etc/neutron/neutron.conf.d/keystone.conf | 0 .../etc/neutron/neutron.conf.d/nova.conf | 0 .../etc/neutron/neutron.conf.d/workers.conf | 0 .../etc/neutron/plugins/ml2/ml2_conf.ini | 0 .../neutron/plugins/ml2/openvswitch_agent.ini | 0 {snap => snap-overlay}/etc/nova/nova.conf | 0 .../etc/nova/nova.conf.d/database.conf | 0 .../etc/nova/nova.conf.d/glance.conf | 0 .../etc/nova/nova.conf.d/hypervisor.conf | 0 .../etc/nova/nova.conf.d/keystone.conf | 0 .../etc/nova/nova.conf.d/neutron.conf | 0 .../etc/nova/nova.conf.d/nova-placement.conf | 0 .../etc/nova/nova.conf.d/rabbitmq.conf | 0 .../etc/nova/nova.conf.d/scheduler.conf | 0 .../etc/nova/nova.conf.d/workers.conf | 0 {snap => snap-overlay}/etc/nova/policy.yaml | 0 {snap => snap-overlay}/snap-openstack.yaml | 0 .../templates/cinder-api.ini.j2 | 0 .../templates/cinder-nginx.conf.j2 | 0 .../templates/cinder-snap.conf.j2 | 0 .../templates/glance-snap.conf.j2 | 0 .../templates/horizon-nginx.conf.j2 | 0 .../templates/horizon-snap.conf.j2 | 0 .../templates/horizon.ini.j2 | 0 .../templates/keystone-api.ini.j2 | 0 .../templates/keystone-nginx.conf.j2 | 0 .../templates/keystone-snap.conf.j2 | 0 .../templates/neutron-snap.conf.j2 | 0 .../templates/nginx.conf.j2 | 0 .../templates/nova-nginx.conf.j2 | 0 .../templates/nova-placement-api.ini.j2 | 0 .../templates/nova-snap.conf.j2 | 0 .../mysql/mysql-start-client | 0 .../mysql/mysql-start-server | 0 {conf/bin => snap-wrappers/ovs}/ovs-wrapper | 0 {scripts => snap-wrappers}/rabbitmq/erl | 0 .../rabbitmq/rabbitmq-defaults | 0 .../rabbitmq/rabbitmq-script-wrapper | 0 snap/bin/launch-libvirtd | 14 ---- snap/bin/ovs-wrapper | 16 ---- snapcraft.yaml | 35 +++++---- stage_binaries.sh | 34 --------- 56 files changed, 21 insertions(+), 153 deletions(-) rename patches/{ => nginx}/drop-nginx-setgroups.patch (100%) delete mode 100755 scripts/mysql/mysql-startup rename {snap => snap-overlay}/bin/sudo (100%) rename {snap => snap-overlay}/etc/cinder/cinder.conf (100%) rename {snap => snap-overlay}/etc/glance/glance.conf.d/database.conf (100%) rename {snap => snap-overlay}/etc/glance/glance.conf.d/keystone.conf (100%) rename {snap => snap-overlay}/etc/horizon/horizon.conf (100%) rename {snap => snap-overlay}/etc/keystone/keystone.conf (100%) rename {snap => snap-overlay}/etc/keystone/keystone.conf.d/database.conf (100%) rename {snap => snap-overlay}/etc/neutron/dhcp_agent.ini (100%) rename {snap => snap-overlay}/etc/neutron/l3_agent.ini (100%) rename {snap => snap-overlay}/etc/neutron/metadata_agent.ini (100%) rename {snap => snap-overlay}/etc/neutron/neutron.conf (100%) rename {snap => snap-overlay}/etc/neutron/neutron.conf.d/database.conf (100%) rename {snap => snap-overlay}/etc/neutron/neutron.conf.d/keystone.conf (100%) rename {snap => snap-overlay}/etc/neutron/neutron.conf.d/nova.conf (100%) rename {snap => snap-overlay}/etc/neutron/neutron.conf.d/workers.conf (100%) rename {snap => snap-overlay}/etc/neutron/plugins/ml2/ml2_conf.ini (100%) rename {snap => snap-overlay}/etc/neutron/plugins/ml2/openvswitch_agent.ini (100%) rename {snap => snap-overlay}/etc/nova/nova.conf (100%) rename {snap => snap-overlay}/etc/nova/nova.conf.d/database.conf (100%) rename {snap => snap-overlay}/etc/nova/nova.conf.d/glance.conf (100%) rename {snap => snap-overlay}/etc/nova/nova.conf.d/hypervisor.conf (100%) rename {snap => snap-overlay}/etc/nova/nova.conf.d/keystone.conf (100%) rename {snap => snap-overlay}/etc/nova/nova.conf.d/neutron.conf (100%) rename {snap => snap-overlay}/etc/nova/nova.conf.d/nova-placement.conf (100%) rename {snap => snap-overlay}/etc/nova/nova.conf.d/rabbitmq.conf (100%) rename {snap => snap-overlay}/etc/nova/nova.conf.d/scheduler.conf (100%) rename {snap => snap-overlay}/etc/nova/nova.conf.d/workers.conf (100%) rename {snap => snap-overlay}/etc/nova/policy.yaml (100%) rename {snap => snap-overlay}/snap-openstack.yaml (100%) rename {snap => snap-overlay}/templates/cinder-api.ini.j2 (100%) rename {snap => snap-overlay}/templates/cinder-nginx.conf.j2 (100%) rename {snap => snap-overlay}/templates/cinder-snap.conf.j2 (100%) rename {snap => snap-overlay}/templates/glance-snap.conf.j2 (100%) rename {snap => snap-overlay}/templates/horizon-nginx.conf.j2 (100%) rename {snap => snap-overlay}/templates/horizon-snap.conf.j2 (100%) rename {snap => snap-overlay}/templates/horizon.ini.j2 (100%) rename {snap => snap-overlay}/templates/keystone-api.ini.j2 (100%) rename {snap => snap-overlay}/templates/keystone-nginx.conf.j2 (100%) rename {snap => snap-overlay}/templates/keystone-snap.conf.j2 (100%) rename {snap => snap-overlay}/templates/neutron-snap.conf.j2 (100%) rename {snap => snap-overlay}/templates/nginx.conf.j2 (100%) rename {snap => snap-overlay}/templates/nova-nginx.conf.j2 (100%) rename {snap => snap-overlay}/templates/nova-placement-api.ini.j2 (100%) rename {snap => snap-overlay}/templates/nova-snap.conf.j2 (100%) rename {scripts => snap-wrappers}/mysql/mysql-start-client (100%) rename {scripts => snap-wrappers}/mysql/mysql-start-server (100%) rename {conf/bin => snap-wrappers/ovs}/ovs-wrapper (100%) rename {scripts => snap-wrappers}/rabbitmq/erl (100%) rename {scripts => snap-wrappers}/rabbitmq/rabbitmq-defaults (100%) rename {scripts => snap-wrappers}/rabbitmq/rabbitmq-script-wrapper (100%) delete mode 100755 snap/bin/launch-libvirtd delete mode 100755 snap/bin/ovs-wrapper delete mode 100755 stage_binaries.sh diff --git a/patches/drop-nginx-setgroups.patch b/patches/nginx/drop-nginx-setgroups.patch similarity index 100% rename from patches/drop-nginx-setgroups.patch rename to patches/nginx/drop-nginx-setgroups.patch diff --git a/scripts/mysql/mysql-startup b/scripts/mysql/mysql-startup deleted file mode 100755 index 2c027cd..0000000 --- a/scripts/mysql/mysql-startup +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/bash -# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; version 2 of the License. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -set -e -init_config() { - mkdir "${CONFDIR}" - echo "Generating config file in ${CONFFILE}..." - touch "${CONFFILE}" - echo "[mysqld]" >> ${CONFFILE} - echo "pid-file=${RUNDIR}/mysqld.pid" >> ${CONFFILE} - echo "socket=${RUNDIR}/mysqld.sock" >> ${CONFFILE} - echo "datadir=${DATADIR}" >> ${CONFFILE} - echo "log-error=${LOGDIR}/error.log" >> ${CONFFILE} - echo "secure-file-priv=${FILESDIR}" >> ${CONFFILE} - echo "basedir=${BASEDIR}" >> ${CONFFILE} - echo "[mysql]" >> ${CONFFILE} - echo "socket=${RUNDIR}/mysqld.sock" >> ${CONFFILE} - echo "Done" -} - -init_database() { - echo "Initializing new database in ${DATADIR}..." - mkdir "${DATADIR}" - mysqld --defaults-file="${CONFFILE}" --initialize - echo "Done" - cat ${LOGDIR}/error.log | grep "temporary password" -} - -USERID=$(id -u) -if [ "${USERID}" = "0" ];then - MYSQL_SNAPDIR="${SNAP_COMMON}" -else - MYSQL_SNAPDIR="${SNAP_USER_COMMON}" -fi -DATADIR="${MYSQL_SNAPDIR}/data" -RUNDIR="${MYSQL_SNAPDIR}/run" -LOGDIR="${MYSQL_SNAPDIR}/log" -CONFDIR="${MYSQL_SNAPDIR}/conf" -CONFFILE="${CONFDIR}/my.cnf" -FILESDIR="${MYSQL_SNAPDIR}/files" -BASEDIR="${SNAP}/usr" - -[ -d "${LOGDIR}" ] || mkdir "${LOGDIR}" -[ -f "${LOGDIR}/error.log" ] || touch "${LOGDIR}/error.log" -[ -d "${FILESDIR}" ] || mkdir "${FILESDIR}" -[ -d "${RUNDIR}" ] || mkdir "${RUNDIR}" -[ -d "${CONFDIR}" ] || init_config -[ -d "${DATADIR}" ] || init_database - -if [ "${USERID}" = "0" ]; -then - # Ensure mysql user exists and that the correct permissions are set on various directories - getent group mysql || addgroup mysql - adduser --system --disabled-login --ingroup mysql --home /nonexistent --gecos "MySQL Server" --shell /bin/false mysql >/dev/null - chown -R mysql:mysql "${LOGDIR}" "${FILESDIR}" "${DATADIR}" "${RUNDIR}" - chmod 750 "${LOGDIR}" "${DATADIR}" - chmod 770 "${FILESDIR}" - chmod 755 "${RUNDIR}" - VARS="--user=mysql" -fi -echo "user=root" >> ${CONFFILE} -echo "password=`sudo cat /var/snap/microstack/common/log/error.log | grep "temporary password" | cut -d " " -f11`" >> ${CONFFILE} diff --git a/snap/bin/sudo b/snap-overlay/bin/sudo similarity index 100% rename from snap/bin/sudo rename to snap-overlay/bin/sudo diff --git a/snap/etc/cinder/cinder.conf b/snap-overlay/etc/cinder/cinder.conf similarity index 100% rename from snap/etc/cinder/cinder.conf rename to snap-overlay/etc/cinder/cinder.conf diff --git a/snap/etc/glance/glance.conf.d/database.conf b/snap-overlay/etc/glance/glance.conf.d/database.conf similarity index 100% rename from snap/etc/glance/glance.conf.d/database.conf rename to snap-overlay/etc/glance/glance.conf.d/database.conf diff --git a/snap/etc/glance/glance.conf.d/keystone.conf b/snap-overlay/etc/glance/glance.conf.d/keystone.conf similarity index 100% rename from snap/etc/glance/glance.conf.d/keystone.conf rename to snap-overlay/etc/glance/glance.conf.d/keystone.conf diff --git a/snap/etc/horizon/horizon.conf b/snap-overlay/etc/horizon/horizon.conf similarity index 100% rename from snap/etc/horizon/horizon.conf rename to snap-overlay/etc/horizon/horizon.conf diff --git a/snap/etc/keystone/keystone.conf b/snap-overlay/etc/keystone/keystone.conf similarity index 100% rename from snap/etc/keystone/keystone.conf rename to snap-overlay/etc/keystone/keystone.conf diff --git a/snap/etc/keystone/keystone.conf.d/database.conf b/snap-overlay/etc/keystone/keystone.conf.d/database.conf similarity index 100% rename from snap/etc/keystone/keystone.conf.d/database.conf rename to snap-overlay/etc/keystone/keystone.conf.d/database.conf diff --git a/snap/etc/neutron/dhcp_agent.ini b/snap-overlay/etc/neutron/dhcp_agent.ini similarity index 100% rename from snap/etc/neutron/dhcp_agent.ini rename to snap-overlay/etc/neutron/dhcp_agent.ini diff --git a/snap/etc/neutron/l3_agent.ini b/snap-overlay/etc/neutron/l3_agent.ini similarity index 100% rename from snap/etc/neutron/l3_agent.ini rename to snap-overlay/etc/neutron/l3_agent.ini diff --git a/snap/etc/neutron/metadata_agent.ini b/snap-overlay/etc/neutron/metadata_agent.ini similarity index 100% rename from snap/etc/neutron/metadata_agent.ini rename to snap-overlay/etc/neutron/metadata_agent.ini diff --git a/snap/etc/neutron/neutron.conf b/snap-overlay/etc/neutron/neutron.conf similarity index 100% rename from snap/etc/neutron/neutron.conf rename to snap-overlay/etc/neutron/neutron.conf diff --git a/snap/etc/neutron/neutron.conf.d/database.conf b/snap-overlay/etc/neutron/neutron.conf.d/database.conf similarity index 100% rename from snap/etc/neutron/neutron.conf.d/database.conf rename to snap-overlay/etc/neutron/neutron.conf.d/database.conf diff --git a/snap/etc/neutron/neutron.conf.d/keystone.conf b/snap-overlay/etc/neutron/neutron.conf.d/keystone.conf similarity index 100% rename from snap/etc/neutron/neutron.conf.d/keystone.conf rename to snap-overlay/etc/neutron/neutron.conf.d/keystone.conf diff --git a/snap/etc/neutron/neutron.conf.d/nova.conf b/snap-overlay/etc/neutron/neutron.conf.d/nova.conf similarity index 100% rename from snap/etc/neutron/neutron.conf.d/nova.conf rename to snap-overlay/etc/neutron/neutron.conf.d/nova.conf diff --git a/snap/etc/neutron/neutron.conf.d/workers.conf b/snap-overlay/etc/neutron/neutron.conf.d/workers.conf similarity index 100% rename from snap/etc/neutron/neutron.conf.d/workers.conf rename to snap-overlay/etc/neutron/neutron.conf.d/workers.conf diff --git a/snap/etc/neutron/plugins/ml2/ml2_conf.ini b/snap-overlay/etc/neutron/plugins/ml2/ml2_conf.ini similarity index 100% rename from snap/etc/neutron/plugins/ml2/ml2_conf.ini rename to snap-overlay/etc/neutron/plugins/ml2/ml2_conf.ini diff --git a/snap/etc/neutron/plugins/ml2/openvswitch_agent.ini b/snap-overlay/etc/neutron/plugins/ml2/openvswitch_agent.ini similarity index 100% rename from snap/etc/neutron/plugins/ml2/openvswitch_agent.ini rename to snap-overlay/etc/neutron/plugins/ml2/openvswitch_agent.ini diff --git a/snap/etc/nova/nova.conf b/snap-overlay/etc/nova/nova.conf similarity index 100% rename from snap/etc/nova/nova.conf rename to snap-overlay/etc/nova/nova.conf diff --git a/snap/etc/nova/nova.conf.d/database.conf b/snap-overlay/etc/nova/nova.conf.d/database.conf similarity index 100% rename from snap/etc/nova/nova.conf.d/database.conf rename to snap-overlay/etc/nova/nova.conf.d/database.conf diff --git a/snap/etc/nova/nova.conf.d/glance.conf b/snap-overlay/etc/nova/nova.conf.d/glance.conf similarity index 100% rename from snap/etc/nova/nova.conf.d/glance.conf rename to snap-overlay/etc/nova/nova.conf.d/glance.conf diff --git a/snap/etc/nova/nova.conf.d/hypervisor.conf b/snap-overlay/etc/nova/nova.conf.d/hypervisor.conf similarity index 100% rename from snap/etc/nova/nova.conf.d/hypervisor.conf rename to snap-overlay/etc/nova/nova.conf.d/hypervisor.conf diff --git a/snap/etc/nova/nova.conf.d/keystone.conf b/snap-overlay/etc/nova/nova.conf.d/keystone.conf similarity index 100% rename from snap/etc/nova/nova.conf.d/keystone.conf rename to snap-overlay/etc/nova/nova.conf.d/keystone.conf diff --git a/snap/etc/nova/nova.conf.d/neutron.conf b/snap-overlay/etc/nova/nova.conf.d/neutron.conf similarity index 100% rename from snap/etc/nova/nova.conf.d/neutron.conf rename to snap-overlay/etc/nova/nova.conf.d/neutron.conf diff --git a/snap/etc/nova/nova.conf.d/nova-placement.conf b/snap-overlay/etc/nova/nova.conf.d/nova-placement.conf similarity index 100% rename from snap/etc/nova/nova.conf.d/nova-placement.conf rename to snap-overlay/etc/nova/nova.conf.d/nova-placement.conf diff --git a/snap/etc/nova/nova.conf.d/rabbitmq.conf b/snap-overlay/etc/nova/nova.conf.d/rabbitmq.conf similarity index 100% rename from snap/etc/nova/nova.conf.d/rabbitmq.conf rename to snap-overlay/etc/nova/nova.conf.d/rabbitmq.conf diff --git a/snap/etc/nova/nova.conf.d/scheduler.conf b/snap-overlay/etc/nova/nova.conf.d/scheduler.conf similarity index 100% rename from snap/etc/nova/nova.conf.d/scheduler.conf rename to snap-overlay/etc/nova/nova.conf.d/scheduler.conf diff --git a/snap/etc/nova/nova.conf.d/workers.conf b/snap-overlay/etc/nova/nova.conf.d/workers.conf similarity index 100% rename from snap/etc/nova/nova.conf.d/workers.conf rename to snap-overlay/etc/nova/nova.conf.d/workers.conf diff --git a/snap/etc/nova/policy.yaml b/snap-overlay/etc/nova/policy.yaml similarity index 100% rename from snap/etc/nova/policy.yaml rename to snap-overlay/etc/nova/policy.yaml diff --git a/snap/snap-openstack.yaml b/snap-overlay/snap-openstack.yaml similarity index 100% rename from snap/snap-openstack.yaml rename to snap-overlay/snap-openstack.yaml diff --git a/snap/templates/cinder-api.ini.j2 b/snap-overlay/templates/cinder-api.ini.j2 similarity index 100% rename from snap/templates/cinder-api.ini.j2 rename to snap-overlay/templates/cinder-api.ini.j2 diff --git a/snap/templates/cinder-nginx.conf.j2 b/snap-overlay/templates/cinder-nginx.conf.j2 similarity index 100% rename from snap/templates/cinder-nginx.conf.j2 rename to snap-overlay/templates/cinder-nginx.conf.j2 diff --git a/snap/templates/cinder-snap.conf.j2 b/snap-overlay/templates/cinder-snap.conf.j2 similarity index 100% rename from snap/templates/cinder-snap.conf.j2 rename to snap-overlay/templates/cinder-snap.conf.j2 diff --git a/snap/templates/glance-snap.conf.j2 b/snap-overlay/templates/glance-snap.conf.j2 similarity index 100% rename from snap/templates/glance-snap.conf.j2 rename to snap-overlay/templates/glance-snap.conf.j2 diff --git a/snap/templates/horizon-nginx.conf.j2 b/snap-overlay/templates/horizon-nginx.conf.j2 similarity index 100% rename from snap/templates/horizon-nginx.conf.j2 rename to snap-overlay/templates/horizon-nginx.conf.j2 diff --git a/snap/templates/horizon-snap.conf.j2 b/snap-overlay/templates/horizon-snap.conf.j2 similarity index 100% rename from snap/templates/horizon-snap.conf.j2 rename to snap-overlay/templates/horizon-snap.conf.j2 diff --git a/snap/templates/horizon.ini.j2 b/snap-overlay/templates/horizon.ini.j2 similarity index 100% rename from snap/templates/horizon.ini.j2 rename to snap-overlay/templates/horizon.ini.j2 diff --git a/snap/templates/keystone-api.ini.j2 b/snap-overlay/templates/keystone-api.ini.j2 similarity index 100% rename from snap/templates/keystone-api.ini.j2 rename to snap-overlay/templates/keystone-api.ini.j2 diff --git a/snap/templates/keystone-nginx.conf.j2 b/snap-overlay/templates/keystone-nginx.conf.j2 similarity index 100% rename from snap/templates/keystone-nginx.conf.j2 rename to snap-overlay/templates/keystone-nginx.conf.j2 diff --git a/snap/templates/keystone-snap.conf.j2 b/snap-overlay/templates/keystone-snap.conf.j2 similarity index 100% rename from snap/templates/keystone-snap.conf.j2 rename to snap-overlay/templates/keystone-snap.conf.j2 diff --git a/snap/templates/neutron-snap.conf.j2 b/snap-overlay/templates/neutron-snap.conf.j2 similarity index 100% rename from snap/templates/neutron-snap.conf.j2 rename to snap-overlay/templates/neutron-snap.conf.j2 diff --git a/snap/templates/nginx.conf.j2 b/snap-overlay/templates/nginx.conf.j2 similarity index 100% rename from snap/templates/nginx.conf.j2 rename to snap-overlay/templates/nginx.conf.j2 diff --git a/snap/templates/nova-nginx.conf.j2 b/snap-overlay/templates/nova-nginx.conf.j2 similarity index 100% rename from snap/templates/nova-nginx.conf.j2 rename to snap-overlay/templates/nova-nginx.conf.j2 diff --git a/snap/templates/nova-placement-api.ini.j2 b/snap-overlay/templates/nova-placement-api.ini.j2 similarity index 100% rename from snap/templates/nova-placement-api.ini.j2 rename to snap-overlay/templates/nova-placement-api.ini.j2 diff --git a/snap/templates/nova-snap.conf.j2 b/snap-overlay/templates/nova-snap.conf.j2 similarity index 100% rename from snap/templates/nova-snap.conf.j2 rename to snap-overlay/templates/nova-snap.conf.j2 diff --git a/scripts/mysql/mysql-start-client b/snap-wrappers/mysql/mysql-start-client similarity index 100% rename from scripts/mysql/mysql-start-client rename to snap-wrappers/mysql/mysql-start-client diff --git a/scripts/mysql/mysql-start-server b/snap-wrappers/mysql/mysql-start-server similarity index 100% rename from scripts/mysql/mysql-start-server rename to snap-wrappers/mysql/mysql-start-server diff --git a/conf/bin/ovs-wrapper b/snap-wrappers/ovs/ovs-wrapper similarity index 100% rename from conf/bin/ovs-wrapper rename to snap-wrappers/ovs/ovs-wrapper diff --git a/scripts/rabbitmq/erl b/snap-wrappers/rabbitmq/erl similarity index 100% rename from scripts/rabbitmq/erl rename to snap-wrappers/rabbitmq/erl diff --git a/scripts/rabbitmq/rabbitmq-defaults b/snap-wrappers/rabbitmq/rabbitmq-defaults similarity index 100% rename from scripts/rabbitmq/rabbitmq-defaults rename to snap-wrappers/rabbitmq/rabbitmq-defaults diff --git a/scripts/rabbitmq/rabbitmq-script-wrapper b/snap-wrappers/rabbitmq/rabbitmq-script-wrapper similarity index 100% rename from scripts/rabbitmq/rabbitmq-script-wrapper rename to snap-wrappers/rabbitmq/rabbitmq-script-wrapper diff --git a/snap/bin/launch-libvirtd b/snap/bin/launch-libvirtd deleted file mode 100755 index 4b69d66..0000000 --- a/snap/bin/launch-libvirtd +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -e - -if [ "$SNAP_ARCH" = "amd64" ]; then - ARCH="x86_64-linux-gnu" -elif [ "$SNAP_ARCH" = "armhf" ]; then - ARCH="arm-linux-gnueabihf" -elif [ "$SNAP_ARCH" = "arm64" ]; then - ARCH="aarch64-linux-gnu" -else - ARCH="$SNAP_ARCH-linux-gnu" -fi - -export LD_LIBRARY_PATH=$SNAP/lib/$ARCH:$SNAP/usr/lib/$ARCH:$LD_LIBRARY_PATH -exec $SNAP/sbin/libvirtd diff --git a/snap/bin/ovs-wrapper b/snap/bin/ovs-wrapper deleted file mode 100755 index 0c276e5..0000000 --- a/snap/bin/ovs-wrapper +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -set -e - -export OVS_LOGDIR=${SNAP_COMMON}/log/openvswitch -export OVS_RUNDIR=${SNAP_COMMON}/run/openvswitch -export OVS_SYSCONFDIR=${SNAP_COMMON}/etc -export OVS_PKGDATADIR=${SNAP}/share/openvswitch -export OVS_BINDIR=${SNAP}/bin -export OVS_SBINDIR=${SNAP}/sbin - -mkdir -p ${OVS_LOGDIR} -mkdir -p ${OVS_RUNDIR} -mkdir -p ${OVS_SYSCONFDIR}/openvswitch - -exec $@ diff --git a/snapcraft.yaml b/snapcraft.yaml index 5a42ac9..fa1438e 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -8,7 +8,7 @@ description: | grade: devel confinement: classic environment: - LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib:$SNAP/usr/lib/x86_64-linux-gnu + 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:$PATH LC_ALL: C OS_PLACEMENT_CONFIG_DIR: $SNAP/etc/nova/ @@ -215,13 +215,10 @@ apps: # Libvirt/Qemu libvirt-bin: - command: bin/launch-libvirtd + command: sbin/libvirtd daemon: simple virsh: - command: bin/virsh - environment: - PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH - LC_ALL: C + command: virsh # MySQL # MySQL @@ -464,10 +461,12 @@ parts: snapcraftctl build ovs-wrapper: - source: conf + 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 @@ -489,9 +488,16 @@ parts: - libssl-dev - python-six override-build: | - export SNAP_ROOT="../../.." - export SNAP_SOURCE="$SNAP_ROOT/parts/nginx/build" - patch -d $SNAP_SOURCE -p1 < $SNAP_ROOT/patches/drop-nginx-setgroups.patch + # 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 libxml2: @@ -553,6 +559,7 @@ parts: - try: [libnuma1] - libcurl3-gnutls - libpciaccess0 + - libxml2-utils configflags: - --with-qemu - --without-bhyve @@ -589,7 +596,7 @@ parts: # MySQL mysql-server: plugin: dump - source: ./scripts/mysql + source: ./snap-wrappers/mysql stage-packages: - mysql-server - mysql-client @@ -599,7 +606,7 @@ parts: # RabbitMQ rabbitmq-server: - source: ./scripts/rabbitmq + source: ./snap-wrappers/rabbitmq plugin: dump stage-packages: - rabbitmq-server @@ -666,7 +673,7 @@ parts: - "--with-kmod=no" # Openstack Shared Parts - templates: + overlay: after: - keystone-config - nova-config @@ -682,7 +689,7 @@ parts: - rabbitmq-server - memcached plugin: dump - source: snap + source: snap-overlay configure-the-things: plugin: dump diff --git a/stage_binaries.sh b/stage_binaries.sh deleted file mode 100755 index ad57a3f..0000000 --- a/stage_binaries.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/sh -# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; version 2 of the License. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -SNAPDIR=$(pwd) -SNAPTMP=$(mktemp -d) -cd ${SNAPTMP} -MYSQL_VERSION_MAJOR=5.7 -MYSQL_VERSION_FULL=5.7.17-1ubuntu16.04 -FILENAME="mysql-server_${MYSQL_VERSION_FULL}_amd64.deb-bundle.tar" -wget "http://dev.mysql.com/get/Downloads/MySQL-{MYSQL_VERSION_MAJOR}/${FILENAME}" -tar -xvf "${FILENAME}" -ar x mysql-community-client_${MYSQL_VERSION_FULL}_amd64.deb -tar -xvf data.tar.xz -rm data.tar.xz -ar x mysql-community-server_${MYSQL_VERSION_FULL}_amd64.deb -tar -xvf data.tar.xz -mkdir staging-files -mv usr staging-files/ -rm -rf ${SNAPDIR}/staging-files -mv staging-files ${SNAPDIR} -cd ${SNAPDIR} From 8a31af4c19a16d096454a188da285871eb8e2360 Mon Sep 17 00:00:00 2001 From: James Page Date: Fri, 2 Nov 2018 11:08:54 +0000 Subject: [PATCH 26/49] Consolidate patch inclusion in snap --- snapcraft.yaml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index fa1438e..bc74685 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -418,8 +418,8 @@ parts: stage: [$etc] prime: [$etc] - # Openvswitch - ovs-patches: + # Snap patches + patches: source: patches/ plugin: dump organize: @@ -446,7 +446,7 @@ parts: - "--localstatedir=/var/snap/$SNAPCRAFT_PROJECT_NAME/common" - "--sysconfdir=/var/snap/$SNAPCRAFT_PROJECT_NAME/etc" after: - - ovs-patches + - patches override-build: | # Apply patches for patch in ${SNAPCRAFT_STAGE}/patches/openvswitch/*.patch; do @@ -471,6 +471,8 @@ parts: 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/microstack/common/log/nginx-access.log From 5ed67ea9eec891be11f44f56a3bff33f4e26db79 Mon Sep 17 00:00:00 2001 From: James Page Date: Fri, 2 Nov 2018 11:10:31 +0000 Subject: [PATCH 27/49] Add xsltproc for libvirt build --- snapcraft.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/snapcraft.yaml b/snapcraft.yaml index bc74685..3c5808d 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -551,6 +551,7 @@ parts: - try: [libnuma-dev] - wget - dpkg-dev + - xsltproc stage-packages: - dmidecode - dnsmasq From eafdc8215b64bfdf0b11b37b6ab19c607312cd4b Mon Sep 17 00:00:00 2001 From: James Page Date: Fri, 2 Nov 2018 11:35:59 +0000 Subject: [PATCH 28/49] Add jansson-dev for libvirt build --- snapcraft.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 3c5808d..2648d65 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -549,9 +549,8 @@ parts: - libnl-route-3-dev - uuid-dev - try: [libnuma-dev] - - wget - - dpkg-dev - xsltproc + - libjansson-dev stage-packages: - dmidecode - dnsmasq From 5ce1258e554eca7b3e243ded60fb755a5ab47312 Mon Sep 17 00:00:00 2001 From: James Page Date: Fri, 2 Nov 2018 11:41:30 +0000 Subject: [PATCH 29/49] Ensure libvirt-python builds against snap version of libvirt --- snapcraft.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 2648d65..4745afe 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -299,6 +299,8 @@ parts: openstack-projects: plugin: python python-version: python2 + after: + - libvirt 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: @@ -321,7 +323,6 @@ parts: - libssl-dev - libxml2-dev - libxslt1-dev - - libvirt-dev stage-packages: - conntrack - coreutils From 8c9cd358e6007acbc68a92aad685f114c3e29580 Mon Sep 17 00:00:00 2001 From: James Page Date: Fri, 2 Nov 2018 11:53:39 +0000 Subject: [PATCH 30/49] Tidy nginx part --- snapcraft.yaml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 4745afe..0cd3b2e 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -476,15 +476,15 @@ parts: - patches configflags: - --prefix=/usr - - --http-log-path=/var/snap/microstack/common/log/nginx-access.log - - --error-log-path=/var/snap/microstack/common/log/nginx-error.log - - --lock-path=/var/snap/microstack/common/lock/nginx.lock - - --pid-path=/var/snap/microstack/common/run/nginx.pid - - --http-client-body-temp-path=/var/snap/microstack/common/lib/nginx_client_body - - --http-proxy-temp-path=/var/snap/microstack/common/lib/nginx_proxy - - --http-fastcgi-temp-path=/var/snap/microstack/common/lib/nginx_fastcgi - - --http-uwsgi-temp-path=/var/snap/microstack/common/lib/nginx_uwsgi - - --http-scgi-temp-path=/var/snap/microstack/common/lib/nginx_scgi + - "--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 From 2a21732c6c738c856db78403b867497f4685c6f0 Mon Sep 17 00:00:00 2001 From: James Page Date: Fri, 2 Nov 2018 12:28:07 +0000 Subject: [PATCH 31/49] Add pkg-config to bd's for openstack-projects --- snapcraft.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/snapcraft.yaml b/snapcraft.yaml index 0cd3b2e..47ae8ce 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -323,6 +323,7 @@ parts: - libssl-dev - libxml2-dev - libxslt1-dev + - pkg-config stage-packages: - conntrack - coreutils From b5285884d4153d197f83c5927b835ab05447342c Mon Sep 17 00:00:00 2001 From: James Page Date: Fri, 2 Nov 2018 13:07:00 +0000 Subject: [PATCH 32/49] Ensure libvirt is discovered from previous built part --- snapcraft.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/snapcraft.yaml b/snapcraft.yaml index 47ae8ce..60fbc2d 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -329,6 +329,10 @@ parts: - coreutils - qemu-utils - haproxy + override-build: | + # Ensure libvirt is discovered from previous built part + export PKG_CONFIG_PATH=$SNAPCRAFT_STAGE/lib/pkgconfig + snapcraftctl build override-prime: | snapcraftctl prime # Now that everything is built, let's disable user site-packages From 6cf0f71b4627abdcf07f317880ac00c65045308a Mon Sep 17 00:00:00 2001 From: James Page Date: Fri, 2 Nov 2018 13:21:04 +0000 Subject: [PATCH 33/49] Move back to libvirt pkgs part 1 --- snapcraft.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 60fbc2d..4f0c379 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -299,8 +299,6 @@ parts: openstack-projects: plugin: python python-version: python2 - after: - - libvirt 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: @@ -323,7 +321,7 @@ parts: - libssl-dev - libxml2-dev - libxslt1-dev - - pkg-config + - libvirt-dev stage-packages: - conntrack - coreutils From ded8db88e5f24c37eaa6ee157abc002eb57bd5a3 Mon Sep 17 00:00:00 2001 From: James Page Date: Fri, 2 Nov 2018 13:23:46 +0000 Subject: [PATCH 34/49] Move back to libvirt from deb --- snapcraft.yaml | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 4f0c379..d8939dd 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -520,12 +520,12 @@ parts: - on arm64: [qemu-system-arm] - qemu-utils - libslang2 - organize: - usr/lib/*/pulseaudio/libpulsecommon-8.0.so: usr/lib/libpulsecommon-8.0.so - usr/share/seabios/bios-256k.bin: qemu/bios-256k.bin - usr/share/seabios/vgabios-stdvga.bin: qemu/vgabios-stdvga.bin - usr/share/seabios/kvmvapic.bin: qemu/kvmvapic.bin - usr/lib/ipxe/qemu/efi-virtio.rom: qemu/efi-virtio.rom +# organize: +# usr/lib/*/pulseaudio/libpulsecommon-8.0.so: usr/lib/libpulsecommon-8.0.so +# usr/share/seabios/bios-256k.bin: qemu/bios-256k.bin +# usr/share/seabios/vgabios-stdvga.bin: qemu/vgabios-stdvga.bin +# usr/share/seabios/kvmvapic.bin: qemu/kvmvapic.bin +# usr/lib/ipxe/qemu/efi-virtio.rom: qemu/efi-virtio.rom kvm-support: plugin: nil @@ -533,7 +533,8 @@ parts: - try: [msr-tools] libvirt: - source: https://libvirt.org/sources/libvirt-4.6.0.tar.xz + source: . + source-subdir: libvirt-1.3.1 plugin: autotools build-packages: - libxml2-dev @@ -553,8 +554,8 @@ parts: - libnl-route-3-dev - uuid-dev - try: [libnuma-dev] - - xsltproc - - libjansson-dev + - wget + - dpkg-dev stage-packages: - dmidecode - dnsmasq @@ -565,7 +566,6 @@ parts: - try: [libnuma1] - libcurl3-gnutls - libpciaccess0 - - libxml2-utils configflags: - --with-qemu - --without-bhyve @@ -592,6 +592,12 @@ parts: - DMIDECODE=/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/sbin/dmidecode - OVSVSCTL=/snap/$SNAPCRAFT_PROJECT_NAME/current/bin/ovs-vsctl - EBTABLES_PATH=/snap/$SNAPCRAFT_PROJECT_NAME/current/sbin/ebtables + override-build: | + wget http://archive.ubuntu.com/ubuntu/pool/main/libv/libvirt/libvirt_1.3.1.orig.tar.gz + wget http://archive.ubuntu.com/ubuntu/pool/main/libv/libvirt/libvirt_1.3.1-1ubuntu10.24.debian.tar.xz + wget http://archive.ubuntu.com/ubuntu/pool/main/libv/libvirt/libvirt_1.3.1-1ubuntu10.24.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 From a2c792690a3c336a7616e2c4be6bd9641df3e75d Mon Sep 17 00:00:00 2001 From: James Page Date: Mon, 5 Nov 2018 09:32:06 +0000 Subject: [PATCH 35/49] Reenable qemu rejig for execution --- snapcraft.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index d8939dd..151ef52 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -520,12 +520,12 @@ parts: - on arm64: [qemu-system-arm] - qemu-utils - libslang2 -# organize: -# usr/lib/*/pulseaudio/libpulsecommon-8.0.so: usr/lib/libpulsecommon-8.0.so -# usr/share/seabios/bios-256k.bin: qemu/bios-256k.bin -# usr/share/seabios/vgabios-stdvga.bin: qemu/vgabios-stdvga.bin -# usr/share/seabios/kvmvapic.bin: qemu/kvmvapic.bin -# usr/lib/ipxe/qemu/efi-virtio.rom: qemu/efi-virtio.rom + organize: + usr/lib/*/pulseaudio/libpulsecommon-8.0.so: usr/lib/libpulsecommon-8.0.so + usr/share/seabios/bios-256k.bin: qemu/bios-256k.bin + usr/share/seabios/vgabios-stdvga.bin: qemu/vgabios-stdvga.bin + usr/share/seabios/kvmvapic.bin: qemu/kvmvapic.bin + usr/lib/ipxe/qemu/efi-virtio.rom: qemu/efi-virtio.rom kvm-support: plugin: nil From b414c718ca898d15157b50174cb9c99ef8ae0c5f Mon Sep 17 00:00:00 2001 From: James Page Date: Mon, 5 Nov 2018 09:52:13 +0000 Subject: [PATCH 36/49] Try changing the cwd for libvirt to pick bios --- snap-wrappers/libvirtd/launch-libvirtd | 6 ++++++ snapcraft.yaml | 17 ++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100755 snap-wrappers/libvirtd/launch-libvirtd diff --git a/snap-wrappers/libvirtd/launch-libvirtd b/snap-wrappers/libvirtd/launch-libvirtd new file mode 100755 index 0000000..8e5a54d --- /dev/null +++ b/snap-wrappers/libvirtd/launch-libvirtd @@ -0,0 +1,6 @@ +#!/bin/sh -e + +# Workaround to ensure BIOS can be loaded +cd $SNAP/qemu + +exec "$SNAP/sbin/libvirtd" diff --git a/snapcraft.yaml b/snapcraft.yaml index 151ef52..e303100 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -215,10 +215,17 @@ apps: # Libvirt/Qemu libvirt-bin: - command: sbin/libvirtd + command: launch-libvirtd daemon: simple + 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:$PATH + LC_ALL: C virsh: command: virsh + environment: + PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH + LC_ALL: C # MySQL # MySQL @@ -605,6 +612,14 @@ parts: # * is not used to avoid directory merge conflicts snap/microstack/current/: ./ + libvirtd-wrapper: + source: ./snap-wrappers/libvirtd + plugin: dump + after: + - libvirt + organize: + launch-libvirtd: bin/launch-libvirtd + # MySQL mysql-server: plugin: dump From 84562bbc8af378c9cba81d45490e57e65794f1c0 Mon Sep 17 00:00:00 2001 From: James Page Date: Mon, 5 Nov 2018 11:45:51 +0000 Subject: [PATCH 37/49] Re-build qemu to sort out paths --- snapcraft.yaml | 67 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 55 insertions(+), 12 deletions(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index e303100..83cd1dc 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -519,20 +519,63 @@ parts: # libvirt/qemu qemu: - plugin: nil + source: . + source-subdir: qemu-2.5+dfsg + plugin: autotools stage-packages: - - on amd64: [qemu-system-x86] - - on i386: [qemu-system-x86] - - on armhf: [qemu-system-arm] - - on arm64: [qemu-system-arm] - - qemu-utils - - libslang2 + - seabios + - ipxe-qemu + 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 + - 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/usr/share/qemu:/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/share/seabios:/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/lib/ipxe/qemu"' + override-build: | + wget http://archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu_2.5+dfsg.orig.tar.xz + wget http://archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu_2.5+dfsg-5ubuntu10.32.debian.tar.xz + wget http://archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu_2.5+dfsg-5ubuntu10.32.dsc + dpkg-source -x qemu_*.dsc + snapcraftctl build organize: - usr/lib/*/pulseaudio/libpulsecommon-8.0.so: usr/lib/libpulsecommon-8.0.so - usr/share/seabios/bios-256k.bin: qemu/bios-256k.bin - usr/share/seabios/vgabios-stdvga.bin: qemu/vgabios-stdvga.bin - usr/share/seabios/kvmvapic.bin: qemu/kvmvapic.bin - usr/lib/ipxe/qemu/efi-virtio.rom: qemu/efi-virtio.rom + # 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 From 02a483b404a6e023e13d4c0d9b7fd27caea26e7e Mon Sep 17 00:00:00 2001 From: James Page Date: Mon, 5 Nov 2018 12:23:51 +0000 Subject: [PATCH 38/49] Drop after clause for overlay - it does not depend on anything, so don't --- snapcraft.yaml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 83cd1dc..647c6a6 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -744,20 +744,6 @@ parts: # Openstack Shared Parts overlay: - after: - - keystone-config - - nova-config - - neutron-config - - glance-config - - cinder-config - - horizon-config - - openvswitch - - qemu - - kvm-support - - libvirt - - mysql-server - - rabbitmq-server - - memcached plugin: dump source: snap-overlay From de7792812e27716756bd0595545e55612935d24a Mon Sep 17 00:00:00 2001 From: James Page Date: Mon, 5 Nov 2018 12:59:27 +0000 Subject: [PATCH 39/49] Drop use of configure hook for now --- snap/hooks/configure => snap-overlay/bin/configure-openstack | 0 snapcraft.yaml | 5 ++--- 2 files changed, 2 insertions(+), 3 deletions(-) rename snap/hooks/configure => snap-overlay/bin/configure-openstack (100%) diff --git a/snap/hooks/configure b/snap-overlay/bin/configure-openstack similarity index 100% rename from snap/hooks/configure rename to snap-overlay/bin/configure-openstack diff --git a/snapcraft.yaml b/snapcraft.yaml index 647c6a6..9747c21 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -28,11 +28,10 @@ apps: command: openstack plugs: - network - configure-the-things: - command: bin/configure-the-things.sh + configure-openstack: + command: configure-openstack plugs: - network - - process-control # Keystone keystone-uwsgi: From 4a05416f85dfd3f2c2adda98c44f41907e687cad Mon Sep 17 00:00:00 2001 From: James Page Date: Mon, 5 Nov 2018 13:00:18 +0000 Subject: [PATCH 40/49] Skip patching of qemu for now --- snapcraft.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/snapcraft.yaml b/snapcraft.yaml index 9747c21..6b6cae5 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -524,6 +524,7 @@ parts: stage-packages: - seabios - ipxe-qemu + build-attributes: [no-patchelf] build-packages: - acpica-tools - libaio-dev From 8e4653dce3093a1f52b89dd3cd17cff059349cc0 Mon Sep 17 00:00:00 2001 From: James Page Date: Mon, 5 Nov 2018 13:31:21 +0000 Subject: [PATCH 41/49] Fixup libvirtd launcher --- snap-wrappers/libvirtd/launch-libvirtd | 3 --- 1 file changed, 3 deletions(-) diff --git a/snap-wrappers/libvirtd/launch-libvirtd b/snap-wrappers/libvirtd/launch-libvirtd index 8e5a54d..79b954e 100755 --- a/snap-wrappers/libvirtd/launch-libvirtd +++ b/snap-wrappers/libvirtd/launch-libvirtd @@ -1,6 +1,3 @@ #!/bin/sh -e -# Workaround to ensure BIOS can be loaded -cd $SNAP/qemu - exec "$SNAP/sbin/libvirtd" From 08053460e361ac1b297611177048055f060bd7e9 Mon Sep 17 00:00:00 2001 From: James Page Date: Mon, 5 Nov 2018 14:32:03 +0000 Subject: [PATCH 42/49] Fixup load path for pulseaudio --- snapcraft.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 6b6cae5..c3d74c1 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -217,7 +217,7 @@ apps: command: launch-libvirtd daemon: simple environment: - LD_LIBRARY_PATH: $SNAP/lib:$SNAP/lib/$SNAPCRAFT_ARCH_TRIPLET:$SNAP/usr/lib:$SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET + 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 PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH LC_ALL: C virsh: From fc8a176a1a5c305461dc3079d31a072fae728042 Mon Sep 17 00:00:00 2001 From: James Page Date: Mon, 5 Nov 2018 14:35:33 +0000 Subject: [PATCH 43/49] Make qemu part a bit smaller --- snapcraft.yaml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/snapcraft.yaml b/snapcraft.yaml index c3d74c1..37f588c 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -576,6 +576,22 @@ parts: # runtime # * is not used to avoid directory merge conflicts snap/microstack/current/: ./ + filesets: + qemu: + - usr/lib/* + - lib/* + - usr/share/* + - on amd64: + - bin/qemu-system-x86 + - on i386: + - bin/qemu-system-x86 + - on armhf: + - bin/qemu-system-arm + - on arm64: + - bin/qemu-system-arm + stage: [$qemu] + prime: [$qemu] + kvm-support: plugin: nil From 5216d6f90f3d39e0edf44a147407d8cf4494ff77 Mon Sep 17 00:00:00 2001 From: James Page Date: Mon, 5 Nov 2018 15:19:01 +0000 Subject: [PATCH 44/49] Tidy qemu build --- snapcraft.yaml | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 37f588c..61a0c46 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -331,7 +331,6 @@ parts: stage-packages: - conntrack - coreutils - - qemu-utils - haproxy override-build: | # Ensure libvirt is discovered from previous built part @@ -564,6 +563,18 @@ parts: - --localstatedir=/var/snap/$SNAPCRAFT_PROJECT_NAME/common - --sysconfdir=/var/snap/$SNAPCRAFT_PROJECT_NAME/common - --extra-cflags=-DCONFIG_QEMU_DATAPATH='"/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/share/qemu:/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/share/seabios:/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/lib/ipxe/qemu"' + - on amd64: + - --target-list=x86_64-softmmu + - on i386: + - --target-list=i386-softmmu + - on arm64: + - --target-list=aarch64-softmmu + - on armhf: + - --target-list=arm-softmmu + - on ppc64el: + - --target-list=ppc64-softmmu + - on s390x: + - --target-list=s390x-softmmu override-build: | wget http://archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu_2.5+dfsg.orig.tar.xz wget http://archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu_2.5+dfsg-5ubuntu10.32.debian.tar.xz @@ -576,22 +587,6 @@ parts: # runtime # * is not used to avoid directory merge conflicts snap/microstack/current/: ./ - filesets: - qemu: - - usr/lib/* - - lib/* - - usr/share/* - - on amd64: - - bin/qemu-system-x86 - - on i386: - - bin/qemu-system-x86 - - on armhf: - - bin/qemu-system-arm - - on arm64: - - bin/qemu-system-arm - stage: [$qemu] - prime: [$qemu] - kvm-support: plugin: nil From 821795d393db286e3179f29c4b9b2ac5f744a3af Mon Sep 17 00:00:00 2001 From: James Page Date: Mon, 5 Nov 2018 16:06:12 +0000 Subject: [PATCH 45/49] try again --- snapcraft.yaml | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 61a0c46..508394b 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -523,7 +523,8 @@ parts: stage-packages: - seabios - ipxe-qemu - build-attributes: [no-patchelf] + - try: + - libnuma1 build-packages: - acpica-tools - libaio-dev @@ -563,18 +564,10 @@ parts: - --localstatedir=/var/snap/$SNAPCRAFT_PROJECT_NAME/common - --sysconfdir=/var/snap/$SNAPCRAFT_PROJECT_NAME/common - --extra-cflags=-DCONFIG_QEMU_DATAPATH='"/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/share/qemu:/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/share/seabios:/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/lib/ipxe/qemu"' - - on amd64: - - --target-list=x86_64-softmmu - - on i386: - - --target-list=i386-softmmu - - on arm64: - - --target-list=aarch64-softmmu - - on armhf: - - --target-list=arm-softmmu - - on ppc64el: - - --target-list=ppc64-softmmu - - on s390x: - - --target-list=s390x-softmmu + - --disable-user + - --disable-linux-user + - --enable-system + - --cpu override-build: | wget http://archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu_2.5+dfsg.orig.tar.xz wget http://archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu_2.5+dfsg-5ubuntu10.32.debian.tar.xz From 6a01486e59f3a1a924cedb8f40a701fee0d69f4b Mon Sep 17 00:00:00 2001 From: James Page Date: Mon, 5 Nov 2018 16:36:24 +0000 Subject: [PATCH 46/49] Limit build to x86_64 for now --- snapcraft.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 508394b..0be1fb8 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -567,7 +567,7 @@ parts: - --disable-user - --disable-linux-user - --enable-system - - --cpu + - --target-list=x86_64-softmmu override-build: | wget http://archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu_2.5+dfsg.orig.tar.xz wget http://archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu_2.5+dfsg-5ubuntu10.32.debian.tar.xz From 7fc58e9837f352f6b100a73cfbbaa750b9c3ceab Mon Sep 17 00:00:00 2001 From: James Page Date: Mon, 5 Nov 2018 17:06:37 +0000 Subject: [PATCH 47/49] Fix location for snap build qemu data components --- snapcraft.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snapcraft.yaml b/snapcraft.yaml index 0be1fb8..e6cc753 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -563,7 +563,7 @@ parts: - --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/usr/share/qemu:/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/share/seabios:/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/lib/ipxe/qemu"' + - --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 From e1091643c81ed117252fa7b09dd53546b2976675 Mon Sep 17 00:00:00 2001 From: James Page Date: Mon, 5 Nov 2018 18:00:10 +0000 Subject: [PATCH 48/49] Configure for metadata proxy access --- snap-overlay/etc/nova/nova.conf.d/neutron.conf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/snap-overlay/etc/nova/nova.conf.d/neutron.conf b/snap-overlay/etc/nova/nova.conf.d/neutron.conf index fbdd280..498a919 100644 --- a/snap-overlay/etc/nova/nova.conf.d/neutron.conf +++ b/snap-overlay/etc/nova/nova.conf.d/neutron.conf @@ -13,3 +13,5 @@ region_name = RegionOne project_name = service username = neutron password = neutron +service_metadata_proxy = True +metadata_proxy_shared_secret = supersecret From 2e63e927b1c93ca17ba4e1491f1e4239a0cdc45f Mon Sep 17 00:00:00 2001 From: James Page Date: Mon, 5 Nov 2018 18:01:11 +0000 Subject: [PATCH 49/49] Drop use of deprecated nova.neutron options --- snap-overlay/etc/nova/nova.conf.d/neutron.conf | 4 ---- 1 file changed, 4 deletions(-) diff --git a/snap-overlay/etc/nova/nova.conf.d/neutron.conf b/snap-overlay/etc/nova/nova.conf.d/neutron.conf index 498a919..898708a 100644 --- a/snap-overlay/etc/nova/nova.conf.d/neutron.conf +++ b/snap-overlay/etc/nova/nova.conf.d/neutron.conf @@ -1,7 +1,3 @@ -[DEFAULT] -use_neutron = True -firewall_driver = nova.virt.firewall.NoopFirewallDriver - [neutron] url = http://localhost:9696 auth_url = http://localhost:5000