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}