First run on snapcraft (#1)
Initial smooshing of existing snaps together. Contains all the basic openstack components that are snapped, plus libvirt/qemu parts borrowed from multipass.
This commit is contained in:
parent
87dc69a292
commit
b6db5853a9
7
.gitignore
vendored
7
.gitignore
vendored
@ -3,6 +3,13 @@ __pycache__/
|
|||||||
*.py[cod]
|
*.py[cod]
|
||||||
*$py.class
|
*$py.class
|
||||||
|
|
||||||
|
# Snap
|
||||||
|
microstack*.snap
|
||||||
|
microstack_source.tar.bz2
|
||||||
|
prime/
|
||||||
|
snap/.snapcraft
|
||||||
|
stage/
|
||||||
|
|
||||||
# Emacs
|
# Emacs
|
||||||
*~
|
*~
|
||||||
|
|
||||||
|
57
patches/drop-nginx-setgroups.patch
Normal file
57
patches/drop-nginx-setgroups.patch
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
Description: Drop code where nginx drops privileges for worker
|
||||||
|
processes. While setuid is covered by the browser-support plug,
|
||||||
|
setgroups isn't covered by any plugs. This code isn't required
|
||||||
|
because in strict mode we run worker processes as root:root.
|
||||||
|
The seccomp violation follows:
|
||||||
|
= Seccomp =
|
||||||
|
Time: Jun 16 01:13:15
|
||||||
|
Log: auid=4294967295 uid=0 gid=0 ses=4294967295 pid=6087 comm="nginx"
|
||||||
|
exe="/snap/keystone/x1/usr/sbin/nginx" sig=31 arch=c000003e
|
||||||
|
116(setgroups) compat=0 ip=0x7f40e288af09 code=0x0
|
||||||
|
Syscall: setgroups
|
||||||
|
Suggestion:
|
||||||
|
* adjust program to not use 'setgroups' until per-snap user/groups
|
||||||
|
are supported (https://launchpad.net/bugs/1446748)
|
||||||
|
Author: Corey Bryant <corey.bryant@canonical.com>
|
||||||
|
Forwarded: no
|
||||||
|
|
||||||
|
---
|
||||||
|
src/os/unix/ngx_process_cycle.c | 22 ----------------------
|
||||||
|
1 file changed, 22 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/os/unix/ngx_process_cycle.c b/src/os/unix/ngx_process_cycle.c
|
||||||
|
index 1710ea8..c428673 100644
|
||||||
|
--- a/src/os/unix/ngx_process_cycle.c
|
||||||
|
+++ b/src/os/unix/ngx_process_cycle.c
|
||||||
|
@@ -824,28 +824,6 @@ ngx_worker_process_init(ngx_cycle_t *cycle, ngx_int_t worker)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (geteuid() == 0) {
|
||||||
|
- if (setgid(ccf->group) == -1) {
|
||||||
|
- ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
|
||||||
|
- "setgid(%d) failed", ccf->group);
|
||||||
|
- /* fatal */
|
||||||
|
- exit(2);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (initgroups(ccf->username, ccf->group) == -1) {
|
||||||
|
- ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
|
||||||
|
- "initgroups(%s, %d) failed",
|
||||||
|
- ccf->username, ccf->group);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (setuid(ccf->user) == -1) {
|
||||||
|
- ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
|
||||||
|
- "setuid(%d) failed", ccf->user);
|
||||||
|
- /* fatal */
|
||||||
|
- exit(2);
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
if (worker >= 0) {
|
||||||
|
cpu_affinity = ngx_get_cpu_affinity(worker);
|
||||||
|
|
||||||
|
--
|
||||||
|
2.7.4
|
||||||
|
|
123
patches/oslo-config-dirs.patch
Normal file
123
patches/oslo-config-dirs.patch
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
From 5256bef2fdacdb79eba386c8cad775ed996d1685 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Corey Bryant <corey.bryant@canonical.com>
|
||||||
|
Date: Wed, 14 Jun 2017 09:57:23 -0400
|
||||||
|
Subject: [PATCH] Add snap package paths to default config dirs
|
||||||
|
|
||||||
|
With snap packaging (see snapcraft.io) the package is installed into a
|
||||||
|
read-only squashfs filesystem, which includes the default config. For
|
||||||
|
example, $SNAP/etc/nova/nova.conf. To override the defaults, a separate
|
||||||
|
writable directory is used, and this directory is also unique to the snap.
|
||||||
|
For example, either $SNAP_COMMON/etc/nova/nova.conf, or
|
||||||
|
$SNAP_COMMON/etc/nova/nova.conf.d/ can be used to override config.
|
||||||
|
|
||||||
|
This patch adds these snap directories to the default config paths where
|
||||||
|
oslo looks for config.
|
||||||
|
|
||||||
|
For more details on $SNAP and $SNAP_COMMON please refer to
|
||||||
|
https://snapcraft.io/docs/reference/env.
|
||||||
|
|
||||||
|
Change-Id: I83627e0f215382aedc7b32163e0303b39e8bccf8
|
||||||
|
Closes-Bug: 1696830
|
||||||
|
(cherry picked from commit 21e70e28b3015c1619dacfad8a2218b09e8109ec)
|
||||||
|
---
|
||||||
|
oslo_config/cfg.py | 19 +++++++++++++++++--
|
||||||
|
oslo_config/tests/test_cfg.py | 24 ++++++++++++++++++++++++
|
||||||
|
2 files changed, 41 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/oslo_config/cfg.py b/oslo_config/cfg.py
|
||||||
|
index 1047bf6..a2b5b2a 100644
|
||||||
|
--- a/oslo_config/cfg.py
|
||||||
|
+++ b/oslo_config/cfg.py
|
||||||
|
@@ -614,16 +614,27 @@ def _get_config_dirs(project=None):
|
||||||
|
/etc/${project}/
|
||||||
|
/etc/
|
||||||
|
|
||||||
|
- Otherwise, these directories::
|
||||||
|
+ If a project is specified and installed from a snap package, following
|
||||||
|
+ directories are also returned:
|
||||||
|
+
|
||||||
|
+ ${SNAP}/etc/${project}
|
||||||
|
+ ${SNAP_COMMON}/etc/${project}
|
||||||
|
+
|
||||||
|
+ Otherwise, if project is not specified, these directories are returned:
|
||||||
|
|
||||||
|
~/
|
||||||
|
/etc/
|
||||||
|
"""
|
||||||
|
+ snap = os.environ.get('SNAP')
|
||||||
|
+ snap_c = os.environ.get('SNAP_COMMON')
|
||||||
|
+
|
||||||
|
cfg_dirs = [
|
||||||
|
_fixpath(os.path.join('~', '.' + project)) if project else None,
|
||||||
|
_fixpath('~'),
|
||||||
|
os.path.join('/etc', project) if project else None,
|
||||||
|
- '/etc'
|
||||||
|
+ '/etc',
|
||||||
|
+ os.path.join(snap, "etc", project) if snap and project else None,
|
||||||
|
+ os.path.join(snap_c, "etc", project) if snap_c and project else None,
|
||||||
|
]
|
||||||
|
return [x for x in cfg_dirs if x]
|
||||||
|
|
||||||
|
@@ -674,6 +685,8 @@ def find_config_files(project=None, prog=None, extension='.conf'):
|
||||||
|
~/
|
||||||
|
/etc/${project}/
|
||||||
|
/etc/
|
||||||
|
+ ${SNAP}/etc/${project}
|
||||||
|
+ ${SNAP_COMMON}/etc/${project}
|
||||||
|
|
||||||
|
We return an absolute path for (at most) one of each the default config
|
||||||
|
files, for the topmost directory it exists in.
|
||||||
|
@@ -704,6 +717,8 @@ def find_config_dirs(project=None, prog=None, extension='.conf.d'):
|
||||||
|
~/
|
||||||
|
/etc/${project}/
|
||||||
|
/etc/
|
||||||
|
+ ${SNAP}/etc/${project}
|
||||||
|
+ ${SNAP_COMMON}/etc/${project}
|
||||||
|
|
||||||
|
We return an absolute path for each of the two config dirs,
|
||||||
|
in the first place we find it (iff we find it).
|
||||||
|
diff --git a/oslo_config/tests/test_cfg.py b/oslo_config/tests/test_cfg.py
|
||||||
|
index 6a46884..0f7db8c 100644
|
||||||
|
--- a/oslo_config/tests/test_cfg.py
|
||||||
|
+++ b/oslo_config/tests/test_cfg.py
|
||||||
|
@@ -208,6 +208,18 @@ class FindConfigFilesTestCase(BaseTestCase):
|
||||||
|
|
||||||
|
self.assertEqual(cfg.find_config_files(project='blaa'), config_files)
|
||||||
|
|
||||||
|
+ def test_find_config_files_snap(self):
|
||||||
|
+ config_files = ['/snap/nova/current/etc/blaa/blaa.conf']
|
||||||
|
+ fake_env = {'SNAP': '/snap/nova/current/',
|
||||||
|
+ 'SNAP_COMMON': '/var/snap/nova/common/'}
|
||||||
|
+
|
||||||
|
+ self.useFixture(fixtures.MonkeyPatch('sys.argv', ['foo']))
|
||||||
|
+ self.useFixture(fixtures.MonkeyPatch('os.path.exists',
|
||||||
|
+ lambda p: p in config_files))
|
||||||
|
+ self.useFixture(fixtures.MonkeyPatch('os.environ', fake_env))
|
||||||
|
+
|
||||||
|
+ self.assertEqual(cfg.find_config_files(project='blaa'), config_files)
|
||||||
|
+
|
||||||
|
def test_find_config_files_with_extension(self):
|
||||||
|
config_files = ['/etc/foo.json']
|
||||||
|
|
||||||
|
@@ -233,6 +245,18 @@ class FindConfigDirsTestCase(BaseTestCase):
|
||||||
|
|
||||||
|
self.assertEqual(cfg.find_config_dirs(project='blaa'), config_dirs)
|
||||||
|
|
||||||
|
+ def test_find_config_dirs_snap(self):
|
||||||
|
+ config_dirs = ['/var/snap/nova/common/etc/blaa/blaa.conf.d']
|
||||||
|
+ fake_env = {'SNAP': '/snap/nova/current/',
|
||||||
|
+ 'SNAP_COMMON': '/var/snap/nova/common/'}
|
||||||
|
+
|
||||||
|
+ self.useFixture(fixtures.MonkeyPatch('sys.argv', ['foo']))
|
||||||
|
+ self.useFixture(fixtures.MonkeyPatch('os.path.exists',
|
||||||
|
+ lambda p: p in config_dirs))
|
||||||
|
+ self.useFixture(fixtures.MonkeyPatch('os.environ', fake_env))
|
||||||
|
+
|
||||||
|
+ self.assertEqual(cfg.find_config_dirs(project='blaa'), config_dirs)
|
||||||
|
+
|
||||||
|
def test_find_config_dirs_non_exists(self):
|
||||||
|
self.useFixture(fixtures.MonkeyPatch('sys.argv', ['foo']))
|
||||||
|
self.assertEqual(cfg.find_config_dirs(project='blaa'), [])
|
||||||
|
--
|
||||||
|
2.7.4
|
||||||
|
|
18
snap/bin/launch-libvirtd
Executable file
18
snap/bin/launch-libvirtd
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
#!/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
|
||||||
|
|
||||||
|
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
|
16
snap/bin/ovs-wrapper
Executable file
16
snap/bin/ovs-wrapper
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
#!/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 $@
|
3
snap/etc/keystone/keystone.conf
Normal file
3
snap/etc/keystone/keystone.conf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Snap distribution defaults - do not change
|
||||||
|
[database]
|
||||||
|
max_retries = -1
|
4
snap/etc/neutron/neutron.conf
Normal file
4
snap/etc/neutron/neutron.conf
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[DEFAULT]
|
||||||
|
core_plugin = ml2
|
||||||
|
service_plugins = router
|
||||||
|
allow_overlapping_ips = True
|
13
snap/etc/neutron/plugins/ml2/ml2_conf.ini
Normal file
13
snap/etc/neutron/plugins/ml2/ml2_conf.ini
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
[ml2]
|
||||||
|
mechanism_drivers = openvswitch,l2population
|
||||||
|
extension_drivers = port_security
|
||||||
|
tenant_network_types = geneve,gre,vxlan
|
||||||
|
|
||||||
|
[ml2_type_geneve]
|
||||||
|
vni_ranges = 1:65535
|
||||||
|
|
||||||
|
[ml2_type_gre]
|
||||||
|
tunnel_id_ranges = 1:65535
|
||||||
|
|
||||||
|
[ml2_type_vxlan]
|
||||||
|
vni_ranges = 1:65535
|
9
snap/etc/nova/nova.conf
Normal file
9
snap/etc/nova/nova.conf
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# Snap distribution defaults - do not change, override in $SNAP_COMMON/etc/nova.conf.d
|
||||||
|
[DEFAULT]
|
||||||
|
logdir=/var/snap/nova/common/log/
|
||||||
|
|
||||||
|
[wsgi]
|
||||||
|
secure_proxy_ssl_header = HTTP_X_FORWARDED_PROTO
|
||||||
|
|
||||||
|
[database]
|
||||||
|
max_retries = -1
|
514
snap/etc/nova/policy.yaml
Normal file
514
snap/etc/nova/policy.yaml
Normal file
@ -0,0 +1,514 @@
|
|||||||
|
#
|
||||||
|
"os_compute_api:os-admin-actions:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-admin-actions:reset_state": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-admin-actions:inject_network_info": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-admin-actions": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-admin-actions:reset_network": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-admin-password:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-admin-password": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-agents": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-agents:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-aggregates:set_metadata": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-aggregates:add_host": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-aggregates:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-aggregates:create": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-aggregates:remove_host": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-aggregates:update": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-aggregates:index": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-aggregates:delete": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-aggregates:show": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-assisted-volume-snapshots:create": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-assisted-volume-snapshots:delete": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-assisted-volume-snapshots:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-attach-interfaces": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-attach-interfaces:discoverable": "@"
|
||||||
|
# Controls who can attach an interface to an instance
|
||||||
|
"os_compute_api:os-attach-interfaces:create": "rule:admin_or_owner"
|
||||||
|
# Controls who can detach an interface from an instance
|
||||||
|
"os_compute_api:os-attach-interfaces:delete": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-availability-zone:list": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-availability-zone:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-availability-zone:detail": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-baremetal-nodes:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-baremetal-nodes": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"context_is_admin": "role:admin"
|
||||||
|
#
|
||||||
|
"admin_or_owner": "is_admin:True or project_id:%(project_id)s"
|
||||||
|
#
|
||||||
|
"admin_api": "is_admin:True"
|
||||||
|
#
|
||||||
|
"network:attach_external_network": "is_admin:True"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-block-device-mapping:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-block-device-mapping-v1:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-cells:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-cells:update": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-cells:create": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-cells": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-cells:sync_instances": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-cells:delete": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"cells_scheduler_filter:DifferentCellFilter": "is_admin:True"
|
||||||
|
#
|
||||||
|
"cells_scheduler_filter:TargetCellFilter": "is_admin:True"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-certificates:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-certificates:create": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-certificates:show": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-cloudpipe": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-cloudpipe:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-config-drive:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-config-drive": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-console-auth-tokens:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-console-auth-tokens": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-console-output:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-console-output": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-consoles:create": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-consoles:show": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-consoles:delete": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-consoles:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-consoles:index": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-create-backup:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-create-backup": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-deferred-delete:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-deferred-delete": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-evacuate:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-evacuate": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-extended-availability-zone": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-extended-availability-zone:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-extended-server-attributes": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-extended-server-attributes:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-extended-status:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-extended-status": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-extended-volumes": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-extended-volumes:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:extension_info:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:extensions": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:extensions:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-fixed-ips:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-fixed-ips": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-flavor-access:add_tenant_access": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-flavor-access:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-flavor-access:remove_tenant_access": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-flavor-access": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-flavor-extra-specs:show": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-flavor-extra-specs:create": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-flavor-extra-specs:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-flavor-extra-specs:update": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-flavor-extra-specs:delete": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-flavor-extra-specs:index": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-flavor-manage": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-flavor-manage:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-flavor-rxtx": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-flavor-rxtx:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:flavors:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:flavors": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-floating-ip-dns": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-floating-ip-dns:domain:update": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-floating-ip-dns:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-floating-ip-dns:domain:delete": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-floating-ip-pools:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-floating-ip-pools": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-floating-ips": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-floating-ips:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-floating-ips-bulk:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-floating-ips-bulk": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-fping:all_tenants": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-fping:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-fping": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-hide-server-addresses:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-hide-server-addresses": "is_admin:False"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-hosts:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-hosts": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-hypervisors:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-hypervisors": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:image-metadata:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:image-size:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:image-size": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:images:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-instance-actions:events": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-instance-actions": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-instance-actions:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-instance-usage-audit-log": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-instance-usage-audit-log:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:ips:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:ips:show": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:ips:index": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-keypairs:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-keypairs:index": "rule:admin_api or user_id:%(user_id)s"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-keypairs:create": "rule:admin_api or user_id:%(user_id)s"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-keypairs:delete": "rule:admin_api or user_id:%(user_id)s"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-keypairs:show": "rule:admin_api or user_id:%(user_id)s"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-keypairs": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:limits:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:limits": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-lock-server:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-lock-server:lock": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-lock-server:unlock:unlock_override": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-lock-server:unlock": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-migrate-server:migrate": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-migrate-server:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-migrate-server:migrate_live": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-migrations:index": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-migrations:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-multinic": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-multinic:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-multiple-create:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-networks:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-networks": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-networks:view": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-networks-associate": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-networks-associate:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-pause-server:unpause": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-pause-server:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-pause-server:pause": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-pci:index": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-pci:detail": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-pci:pci_servers": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-pci:show": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-pci:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-quota-class-sets:show": "is_admin:True or quota_class:%(quota_class)s"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-quota-class-sets:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-quota-class-sets:update": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-quota-sets:update": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-quota-sets:defaults": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-quota-sets:show": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-quota-sets:delete": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-quota-sets:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-quota-sets:detail": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-remote-consoles": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-remote-consoles:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-rescue:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-rescue": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-scheduler-hints:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-security-group-default-rules:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-security-group-default-rules": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-security-groups": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-security-groups:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-server-diagnostics": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-server-diagnostics:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-server-external-events:create": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-server-external-events:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-server-groups:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-server-groups": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:server-metadata:index": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:server-metadata:show": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:server-metadata:create": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:server-metadata:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:server-metadata:update_all": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:server-metadata:delete": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:server-metadata:update": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-server-password": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-server-password:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-server-tags:delete_all": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-server-tags:index": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-server-tags:update_all": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-server-tags:delete": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-server-tags:update": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-server-tags:show": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-server-tags:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-server-usage": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-server-usage:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:index": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:detail": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:detail:get_all_tenants": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:index:get_all_tenants": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:show": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:show:host_status": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:create": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:create:forced_host": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:create:attach_volume": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:create:attach_network": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:delete": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:update": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:confirm_resize": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:revert_resize": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:reboot": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:resize": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:rebuild": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:create_image": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:create_image:allow_volume_backed": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:start": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:stop": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:trigger_crash_dump": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:migrations:show": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:migrations:force_complete": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:migrations:delete": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:servers:migrations:index": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:server-migrations:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-services": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-services:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-shelve:shelve": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-shelve:unshelve": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-shelve:shelve_offload": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-shelve:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-simple-tenant-usage:show": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-simple-tenant-usage:list": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-simple-tenant-usage:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-suspend-server:resume": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-suspend-server:suspend": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-suspend-server:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-tenant-networks": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-tenant-networks:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-used-limits:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-used-limits": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-user-data:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:versions:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-virtual-interfaces:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-virtual-interfaces": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-volumes:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-volumes": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-volumes-attachments:index": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-volumes-attachments:create": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-volumes-attachments:show": "rule:admin_or_owner"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-volumes-attachments:discoverable": "@"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-volumes-attachments:update": "rule:admin_api"
|
||||||
|
#
|
||||||
|
"os_compute_api:os-volumes-attachments:delete": "rule:admin_or_owner"
|
17
snap/hooks/configure
vendored
Executable file
17
snap/hooks/configure
vendored
Executable file
@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
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
|
5
snap/hooks/install
Executable file
5
snap/hooks/install
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
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
|
7
snap/hooks/post-refresh
Executable file
7
snap/hooks/post-refresh
Executable file
@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ ! -f $SNAP_COMMON/libvirt/libvirtd.conf ]; then
|
||||||
|
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
|
||||||
|
fi
|
@ -0,0 +1,31 @@
|
|||||||
|
From fdf38dcad424c00d39b5c128ddb06b93606a639b Mon Sep 17 00:00:00 2001
|
||||||
|
From: James Page <james.page@ubuntu.com>
|
||||||
|
Date: Wed, 19 Sep 2018 09:13:48 +0200
|
||||||
|
Subject: [PATCH] ovs-kmod-ctl: source ovs-lib dynamically
|
||||||
|
|
||||||
|
Determine installation location of ovs-lib using runtime location
|
||||||
|
of script, rather than build-time parameters.
|
||||||
|
---
|
||||||
|
utilities/ovs-kmod-ctl.in | 6 +++++-
|
||||||
|
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/utilities/ovs-kmod-ctl.in b/utilities/ovs-kmod-ctl.in
|
||||||
|
index 13ccfcf73..19f100964 100644
|
||||||
|
--- a/utilities/ovs-kmod-ctl.in
|
||||||
|
+++ b/utilities/ovs-kmod-ctl.in
|
||||||
|
@@ -14,7 +14,11 @@
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
-. "@pkgdatadir@/scripts/ovs-lib" || exit 1
|
||||||
|
+case $0 in
|
||||||
|
+ */*) dir0=`echo "$0" | sed 's,/[^/]*$,,'` ;;
|
||||||
|
+ *) dir0=./ ;;
|
||||||
|
+esac
|
||||||
|
+. "$dir0/ovs-lib" || exit 1
|
||||||
|
|
||||||
|
for dir in "$sbindir" "$bindir" /sbin /bin /usr/sbin /usr/bin; do
|
||||||
|
case :$PATH: in
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
160
snap/snap-openstack.yaml
Normal file
160
snap/snap-openstack.yaml
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
setup:
|
||||||
|
dirs:
|
||||||
|
- "{snap_common}/etc/keystone/keystone.conf.d"
|
||||||
|
- "{snap_common}/etc/nova/nova.conf.d"
|
||||||
|
- "{snap_common}/etc/neutron/neutron.conf.d"
|
||||||
|
- "{snap_common}/etc/neutron/plugins/ml2"
|
||||||
|
- "{snap_common}/etc/neutron/policy.d"
|
||||||
|
- "{snap_common}/etc/neutron/rootwrap.d"
|
||||||
|
- "{snap_common}/etc/nginx/sites-enabled"
|
||||||
|
- "{snap_common}/etc/nginx/snap/sites-enabled"
|
||||||
|
- "{snap_common}/etc/glance/glance.conf.d"
|
||||||
|
- "{snap_common}/etc/uwsgi/snap"
|
||||||
|
- "{snap_common}/fernet-keys"
|
||||||
|
- "{snap_common}/lib"
|
||||||
|
- "{snap_common}/lib/images"
|
||||||
|
- "{snap_common}/lock"
|
||||||
|
- "{snap_common}/log"
|
||||||
|
- "{snap_common}/run"
|
||||||
|
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"
|
||||||
|
neutron-snap.conf.j2: "{snap_common}/etc/neutron/neutron.conf.d/neutron-snap.conf"
|
||||||
|
nginx.conf.j2: "{snap_common}/etc/nginx/snap/nginx.conf"
|
||||||
|
nova-snap.conf.j2: "{snap_common}/etc/nova/nova.conf.d/nova-snap.conf"
|
||||||
|
nova-nginx.conf.j2: "{snap_common}/etc/nginx/snap/sites-enabled/nova.conf"
|
||||||
|
glance-snap.conf.j2: "{snap_common}/etc/glance/glance.conf.d/glance-snap.conf"
|
||||||
|
entry_points:
|
||||||
|
keystone-manage:
|
||||||
|
binary: "{snap}/bin/keystone-manage"
|
||||||
|
config-files:
|
||||||
|
- "{snap}/etc/keystone/keystone.conf"
|
||||||
|
config-files-override:
|
||||||
|
- "{snap_common}/etc/keystone/keystone.conf"
|
||||||
|
config-dirs:
|
||||||
|
- "{snap_common}/etc/keystone/keystone.conf.d"
|
||||||
|
keystone-uwsgi:
|
||||||
|
type: uwsgi
|
||||||
|
uwsgi-dir: "{snap_common}/etc/uwsgi/snap"
|
||||||
|
uwsgi-dir-override: "{snap_common}/etc/uwsgi"
|
||||||
|
uwsgi-log: "{snap_common}/log/uwsgi.log"
|
||||||
|
config-files:
|
||||||
|
- "{snap}/etc/keystone/keystone.conf"
|
||||||
|
config-files-override:
|
||||||
|
- "{snap_common}/etc/keystone/keystone.conf"
|
||||||
|
config-dirs:
|
||||||
|
- "{snap_common}/etc/keystone/keystone.conf.d"
|
||||||
|
log-file: "{snap_common}/log/keystone.log"
|
||||||
|
templates:
|
||||||
|
admin.ini.j2: "{snap_common}/etc/uwsgi/snap/admin.ini"
|
||||||
|
public.ini.j2: "{snap_common}/etc/uwsgi/snap/public.ini"
|
||||||
|
nginx:
|
||||||
|
type: nginx
|
||||||
|
config-file: "{snap_common}/etc/nginx/snap/nginx.conf"
|
||||||
|
config-file-override: "{snap_common}/etc/nginx/nginx.conf"
|
||||||
|
nova-api-os-compute:
|
||||||
|
binary: "{snap}/bin/nova-api-os-compute"
|
||||||
|
config-files:
|
||||||
|
- "{snap}/etc/nova/nova.conf"
|
||||||
|
config-files-override:
|
||||||
|
- "{snap_common}/etc/nova/nova.conf"
|
||||||
|
config-dirs:
|
||||||
|
- "{snap_common}/etc/nova/nova.conf.d"
|
||||||
|
log-file: "{snap_common}/log/nova-api-os-compute.log"
|
||||||
|
nova-uwsgi:
|
||||||
|
type: uwsgi
|
||||||
|
uwsgi-dir: "{snap_common}/etc/uwsgi/snap"
|
||||||
|
uwsgi-dir-override: "{snap_common}/etc/uwsgi"
|
||||||
|
uwsgi-log: "{snap_common}/log/uwsgi.log"
|
||||||
|
config-files:
|
||||||
|
- "{snap}/etc/nova/nova.conf"
|
||||||
|
config-files-override:
|
||||||
|
- "{snap_common}/etc/nova/nova.conf"
|
||||||
|
config-dirs:
|
||||||
|
- "{snap_common}/etc/nova/nova.conf.d"
|
||||||
|
log-file: "{snap_common}/log/nova-placement-api.log"
|
||||||
|
templates:
|
||||||
|
nova-placement-api.ini.j2:
|
||||||
|
"{snap_common}/etc/uwsgi/snap/nova-placement-api.ini"
|
||||||
|
nova-conductor:
|
||||||
|
binary: "{snap}/bin/nova-conductor"
|
||||||
|
config-files:
|
||||||
|
- "{snap}/etc/nova/nova.conf"
|
||||||
|
config-files-override:
|
||||||
|
- "{snap_common}/etc/nova/nova.conf"
|
||||||
|
config-dirs:
|
||||||
|
- "{snap_common}/etc/nova/nova.conf.d"
|
||||||
|
log-file: "{snap_common}/log/nova-conductor.log"
|
||||||
|
nova-scheduler:
|
||||||
|
binary: "{snap}/bin/nova-scheduler"
|
||||||
|
config-files:
|
||||||
|
- "{snap}/etc/nova/nova.conf"
|
||||||
|
config-files-override:
|
||||||
|
- "{snap_common}/etc/nova/nova.conf"
|
||||||
|
config-dirs:
|
||||||
|
- "{snap_common}/etc/nova/nova.conf.d"
|
||||||
|
log-file: "{snap_common}/log/nova-scheduler.log"
|
||||||
|
nova-consoleauth:
|
||||||
|
binary: "{snap}/bin/nova-consoleauth"
|
||||||
|
config-files:
|
||||||
|
- "{snap}/etc/nova/nova.conf"
|
||||||
|
config-files-override:
|
||||||
|
- "{snap_common}/etc/nova/nova.conf"
|
||||||
|
config-dirs:
|
||||||
|
- "{snap_common}/etc/nova/nova.conf.d"
|
||||||
|
log-file: "{snap_common}/log/nova-consoleauth.log"
|
||||||
|
nova-manage:
|
||||||
|
binary: "{snap}/bin/nova-manage"
|
||||||
|
config-files:
|
||||||
|
- "{snap}/etc/nova/nova.conf"
|
||||||
|
config-files-override:
|
||||||
|
- "{snap_common}/etc/nova/nova.conf"
|
||||||
|
config-dirs:
|
||||||
|
- "{snap_common}/etc/nova/nova.conf.d"
|
||||||
|
neutron-db-manage:
|
||||||
|
binary: "{snap}/bin/neutron-db-manage"
|
||||||
|
config-files:
|
||||||
|
- "{snap}/etc/neutron/neutron.conf"
|
||||||
|
- "{snap}/etc/neutron/plugins/ml2/ml2_conf.ini"
|
||||||
|
config-files-override:
|
||||||
|
- "{snap_common}/etc/neutron/neutron.conf"
|
||||||
|
- "{snap_common}/etc/neutron/plugins/ml2/ml2_conf.ini"
|
||||||
|
config-dirs:
|
||||||
|
- "{snap_common}/etc/neutron/neutron.conf.d"
|
||||||
|
neutron-server:
|
||||||
|
binary: "{snap}/bin/neutron-server"
|
||||||
|
config-files:
|
||||||
|
- "{snap}/etc/neutron/neutron.conf"
|
||||||
|
- "{snap}/etc/neutron/plugins/ml2/ml2_conf.ini"
|
||||||
|
config-files-override:
|
||||||
|
- "{snap_common}/etc/neutron/neutron.conf"
|
||||||
|
- "{snap_common}/etc/neutron/plugins/ml2/ml2_conf.ini"
|
||||||
|
config-dirs:
|
||||||
|
- "{snap_common}/etc/neutron/neutron.conf.d"
|
||||||
|
log-file: "{snap_common}/log/neutron-server.log"
|
||||||
|
glance-manage:
|
||||||
|
binary: "{snap}/bin/glance-manage"
|
||||||
|
config-files:
|
||||||
|
- "{snap}/etc/glance/glance-manage.conf"
|
||||||
|
config-files-override:
|
||||||
|
- "{snap_common}/etc/glance/glance-manage.conf"
|
||||||
|
config-dirs:
|
||||||
|
- "{snap_common}/etc/glance/glance.conf.d"
|
||||||
|
glance-registry:
|
||||||
|
binary: "{snap}/bin/glance-registry"
|
||||||
|
config-files:
|
||||||
|
- "{snap}/etc/glance/glance-registry.conf"
|
||||||
|
config-files-override:
|
||||||
|
- "{snap_common}/etc/glance/glance-registry.conf"
|
||||||
|
config-dirs:
|
||||||
|
- "{snap_common}/etc/glance/glance.conf.d"
|
||||||
|
log-file: "{snap_common}/log/glance-registry.log"
|
||||||
|
glance-api:
|
||||||
|
binary: "{snap}/bin/glance-api"
|
||||||
|
config-files:
|
||||||
|
- "{snap}/etc/glance/glance-api.conf"
|
||||||
|
config-files-override:
|
||||||
|
- "{snap_common}/etc/glance/glance-api.conf"
|
||||||
|
config-dirs:
|
||||||
|
- "{snap_common}/etc/glance/glance.conf.d"
|
||||||
|
log-file: "{snap_common}/log/glance-api.log"
|
11
snap/templates/admin.ini.j2
Normal file
11
snap/templates/admin.ini.j2
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[uwsgi]
|
||||||
|
wsgi-file = {{ snap }}/bin/keystone-wsgi-admin
|
||||||
|
uwsgi-socket = {{ snap_common }}/run/admin.sock
|
||||||
|
buffer-size = 65535
|
||||||
|
master = true
|
||||||
|
enable-threads = true
|
||||||
|
processes = 4
|
||||||
|
thunder-lock = true
|
||||||
|
lazy-apps = true
|
||||||
|
home = {{ snap }}/usr
|
||||||
|
pyargv = {{ pyargv }}
|
11
snap/templates/glance-snap.conf.j2
Normal file
11
snap/templates/glance-snap.conf.j2
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[DEFAULT]
|
||||||
|
# Set state path to writable directory
|
||||||
|
state_path = {{ snap_common }}/lib
|
||||||
|
|
||||||
|
[oslo_concurrency]
|
||||||
|
# Oslo Concurrency lock path
|
||||||
|
lock_path = {{ snap_common }}/lock
|
||||||
|
|
||||||
|
[glance_store]
|
||||||
|
# Set default glance_store path to writable directory
|
||||||
|
filesystem_store_datadir = {{ snap_common }}/lib/images
|
20
snap/templates/keystone-nginx.conf.j2
Normal file
20
snap/templates/keystone-nginx.conf.j2
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
server {
|
||||||
|
listen 5000;
|
||||||
|
access_log {{ snap_common }}/log/nginx-access.log;
|
||||||
|
error_log {{ snap_common }}/log/nginx-error.log;
|
||||||
|
location / {
|
||||||
|
include {{ snap }}/usr/conf/uwsgi_params;
|
||||||
|
uwsgi_param SCRIPT_NAME '';
|
||||||
|
uwsgi_pass unix://{{ snap_common }}/run/public.sock;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
server {
|
||||||
|
listen 35357;
|
||||||
|
access_log {{ snap_common }}/log/nginx-access.log;
|
||||||
|
error_log {{ snap_common }}/log/nginx-error.log;
|
||||||
|
location / {
|
||||||
|
include {{ snap }}/usr/conf/uwsgi_params;
|
||||||
|
uwsgi_param SCRIPT_NAME '';
|
||||||
|
uwsgi_pass unix://{{ snap_common }}/run/admin.sock;
|
||||||
|
}
|
||||||
|
}
|
11
snap/templates/keystone-snap.conf.j2
Normal file
11
snap/templates/keystone-snap.conf.j2
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[DEFAULT]
|
||||||
|
# Set state path to writable directory
|
||||||
|
state_path = {{ snap_common }}/lib
|
||||||
|
|
||||||
|
[oslo_concurrency]
|
||||||
|
# Oslo Concurrency lock path
|
||||||
|
lock_path = {{ snap_common }}/lock
|
||||||
|
|
||||||
|
[fernet_tokens]
|
||||||
|
# Fernet key repository
|
||||||
|
key_repository = {{ snap_common }}/fernet-keys
|
7
snap/templates/neutron-snap.conf.j2
Normal file
7
snap/templates/neutron-snap.conf.j2
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
[DEFAULT]
|
||||||
|
# Set state path to writable directory
|
||||||
|
state_path = {{ snap_common }}/lib
|
||||||
|
|
||||||
|
[oslo_concurrency]
|
||||||
|
# Oslo Concurrency lock path
|
||||||
|
lock_path = {{ snap_common }}/lock
|
39
snap/templates/nginx.conf.j2
Normal file
39
snap/templates/nginx.conf.j2
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
user root root;
|
||||||
|
worker_processes auto;
|
||||||
|
pid {{ snap_common }}/run/nginx.pid;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 768;
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
##
|
||||||
|
# Basic Settings
|
||||||
|
##
|
||||||
|
|
||||||
|
sendfile on;
|
||||||
|
tcp_nopush on;
|
||||||
|
tcp_nodelay on;
|
||||||
|
keepalive_timeout 65;
|
||||||
|
types_hash_max_size 2048;
|
||||||
|
|
||||||
|
include {{ snap }}/usr/conf/mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
##
|
||||||
|
# Logging Settings
|
||||||
|
##
|
||||||
|
|
||||||
|
access_log {{ snap_common }}/log/nginx-access.log;
|
||||||
|
error_log {{ snap_common }}/log/nginx-error.log;
|
||||||
|
|
||||||
|
##
|
||||||
|
# Gzip Settings
|
||||||
|
##
|
||||||
|
|
||||||
|
gzip on;
|
||||||
|
gzip_disable "msie6";
|
||||||
|
|
||||||
|
include {{ snap_common }}/etc/nginx/conf.d/*.conf;
|
||||||
|
include {{ snap_common }}/etc/nginx/snap/sites-enabled/*;
|
||||||
|
}
|
10
snap/templates/nova-nginx.conf.j2
Normal file
10
snap/templates/nova-nginx.conf.j2
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
server {
|
||||||
|
listen 8778;
|
||||||
|
access_log {{ snap_common }}/log/nginx-access.log;
|
||||||
|
error_log {{ snap_common }}/log/nginx-error.log;
|
||||||
|
location / {
|
||||||
|
include {{ snap }}/usr/conf/uwsgi_params;
|
||||||
|
uwsgi_param SCRIPT_NAME '';
|
||||||
|
uwsgi_pass unix://{{ snap_common }}/run/placement-api.sock;
|
||||||
|
}
|
||||||
|
}
|
10
snap/templates/nova-placement-api.ini.j2
Normal file
10
snap/templates/nova-placement-api.ini.j2
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[uwsgi]
|
||||||
|
wsgi-file = {{ snap }}/bin/nova-placement-api
|
||||||
|
uwsgi-socket = {{ snap_common }}/run/placement-api.sock
|
||||||
|
buffer-size = 65535
|
||||||
|
master = true
|
||||||
|
enable-threads = true
|
||||||
|
processes = 4
|
||||||
|
thunder-lock = true
|
||||||
|
lazy-apps = true
|
||||||
|
home = {{ snap }}/usr
|
7
snap/templates/nova-snap.conf.j2
Normal file
7
snap/templates/nova-snap.conf.j2
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
[DEFAULT]
|
||||||
|
# Set state path to writable directory
|
||||||
|
state_path = {{ snap_common }}/lib
|
||||||
|
|
||||||
|
[oslo_concurrency]
|
||||||
|
# Oslo Concurrency lock path
|
||||||
|
lock_path = {{ snap_common }}/lock
|
11
snap/templates/public.ini.j2
Normal file
11
snap/templates/public.ini.j2
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[uwsgi]
|
||||||
|
wsgi-file = {{ snap }}/bin/keystone-wsgi-public
|
||||||
|
uwsgi-socket = {{ snap_common }}/run/public.sock
|
||||||
|
buffer-size = 65535
|
||||||
|
master = true
|
||||||
|
enable-threads = true
|
||||||
|
processes = 4
|
||||||
|
thunder-lock = true
|
||||||
|
lazy-apps = true
|
||||||
|
home = {{ snap }}/usr
|
||||||
|
pyargv = {{ pyargv }}
|
535
snapcraft.yaml
Normal file
535
snapcraft.yaml
Normal file
@ -0,0 +1,535 @@
|
|||||||
|
name: microstack
|
||||||
|
version: alpha
|
||||||
|
summary: Openstack on your laptop.
|
||||||
|
description: |
|
||||||
|
Microstack gives you an easy way to develop and test Openstack
|
||||||
|
workloads on your laptop. TODO drop in basic usage instructions
|
||||||
|
here.
|
||||||
|
grade: devel
|
||||||
|
confinement: classic
|
||||||
|
|
||||||
|
apps:
|
||||||
|
# Keystone
|
||||||
|
keystone-uwsgi:
|
||||||
|
command: snap-openstack keystone-uwsgi
|
||||||
|
environment:
|
||||||
|
LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib
|
||||||
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
||||||
|
LC_ALL: C
|
||||||
|
daemon: simple
|
||||||
|
plugs:
|
||||||
|
- network-bind
|
||||||
|
keystone-manage:
|
||||||
|
command: snap-openstack keystone-manage
|
||||||
|
environment:
|
||||||
|
LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib
|
||||||
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
||||||
|
LC_ALL: C
|
||||||
|
plugs:
|
||||||
|
- network
|
||||||
|
|
||||||
|
# Nova
|
||||||
|
nova-uwsgi:
|
||||||
|
command: snap-openstack nova-uwsgi
|
||||||
|
daemon: simple
|
||||||
|
environment:
|
||||||
|
LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib
|
||||||
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
||||||
|
LC_ALL: C
|
||||||
|
OS_PLACEMENT_CONFIG_DIR: $SNAP/etc/nova/
|
||||||
|
plugs:
|
||||||
|
- network-bind
|
||||||
|
nova-api:
|
||||||
|
command: snap-openstack nova-api-os-compute
|
||||||
|
daemon: simple
|
||||||
|
environment:
|
||||||
|
LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib
|
||||||
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
||||||
|
LC_ALL: C
|
||||||
|
plugs:
|
||||||
|
- network-bind
|
||||||
|
conductor:
|
||||||
|
command: snap-openstack nova-conductor
|
||||||
|
environment:
|
||||||
|
LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib
|
||||||
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
||||||
|
LC_ALL: C
|
||||||
|
daemon: simple
|
||||||
|
plugs:
|
||||||
|
- network
|
||||||
|
scheduler:
|
||||||
|
command: snap-openstack nova-scheduler
|
||||||
|
environment:
|
||||||
|
LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib
|
||||||
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
||||||
|
LC_ALL: C
|
||||||
|
daemon: simple
|
||||||
|
plugs:
|
||||||
|
- network
|
||||||
|
consoleauth:
|
||||||
|
command: snap-openstack nova-consoleauth
|
||||||
|
environment:
|
||||||
|
LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib
|
||||||
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
||||||
|
LC_ALL: C
|
||||||
|
daemon: simple
|
||||||
|
plugs:
|
||||||
|
- network
|
||||||
|
nova-manage:
|
||||||
|
command: snap-openstack nova-manage
|
||||||
|
environment:
|
||||||
|
LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib
|
||||||
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
||||||
|
LC_ALL: C
|
||||||
|
plugs:
|
||||||
|
- network
|
||||||
|
|
||||||
|
# Neutron
|
||||||
|
neutron-api:
|
||||||
|
command: snap-openstack neutron-server
|
||||||
|
environment:
|
||||||
|
LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib
|
||||||
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
||||||
|
LC_ALL: C
|
||||||
|
daemon: simple
|
||||||
|
plugs:
|
||||||
|
- network-bind
|
||||||
|
neutron-manage:
|
||||||
|
command: snap-openstack neutron-db-manage
|
||||||
|
environment:
|
||||||
|
LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib
|
||||||
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
||||||
|
LC_ALL: C
|
||||||
|
plugs:
|
||||||
|
- network
|
||||||
|
|
||||||
|
# Glance
|
||||||
|
glance-api:
|
||||||
|
command: snap-openstack glance-api
|
||||||
|
environment:
|
||||||
|
LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib
|
||||||
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
||||||
|
LC_ALL: C
|
||||||
|
daemon: simple
|
||||||
|
plugs:
|
||||||
|
- network-bind
|
||||||
|
registry:
|
||||||
|
command: snap-openstack glance-registry
|
||||||
|
environment:
|
||||||
|
LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib
|
||||||
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
||||||
|
LC_ALL: C
|
||||||
|
daemon: simple
|
||||||
|
plugs:
|
||||||
|
- network
|
||||||
|
- network-bind
|
||||||
|
glance-manage:
|
||||||
|
command: snap-openstack glance-manage
|
||||||
|
environment:
|
||||||
|
LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib
|
||||||
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
||||||
|
LC_ALL: C
|
||||||
|
plugs:
|
||||||
|
- network
|
||||||
|
|
||||||
|
# Openstack Shared Services
|
||||||
|
nginx:
|
||||||
|
command: snap-openstack nginx
|
||||||
|
environment:
|
||||||
|
LD_LIBRARY_PATH: $SNAP/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
|
||||||
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
||||||
|
LC_ALL: C
|
||||||
|
daemon: forking
|
||||||
|
plugs:
|
||||||
|
- network-bind
|
||||||
|
|
||||||
|
# Openvswitch
|
||||||
|
ovs-vswitchd:
|
||||||
|
command: ovs-wrapper $SNAP/share/openvswitch/scripts/ovs-ctl --no-ovsdb-server --no-monitor --system-id=random start
|
||||||
|
stop-command: ovs-wrapper $SNAP/share/openvswitch/scripts/ovs-ctl --no-ovsdb-server stop
|
||||||
|
environment:
|
||||||
|
LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib
|
||||||
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
||||||
|
LC_ALL: C
|
||||||
|
daemon: forking
|
||||||
|
plugs:
|
||||||
|
- network
|
||||||
|
- network-bind
|
||||||
|
- network-control
|
||||||
|
- openvswitch-support
|
||||||
|
- process-control
|
||||||
|
- system-trace
|
||||||
|
ovsdb-server:
|
||||||
|
command: ovs-wrapper $SNAP/share/openvswitch/scripts/ovs-ctl --no-ovs-vswitchd --no-monitor --system-id=random start
|
||||||
|
environment:
|
||||||
|
LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib
|
||||||
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
||||||
|
LC_ALL: C
|
||||||
|
stop-command: ovs-wrapper $SNAP/share/openvswitch/scripts/ovs-ctl --no-ovs-vswitchd stop
|
||||||
|
daemon: forking
|
||||||
|
plugs:
|
||||||
|
- network
|
||||||
|
- network-bind
|
||||||
|
- network-control
|
||||||
|
- openvswitch-support
|
||||||
|
- process-control
|
||||||
|
- system-trace
|
||||||
|
ovs-vsctl:
|
||||||
|
command: ovs-wrapper $SNAP/bin/ovs-vsctl
|
||||||
|
environment:
|
||||||
|
LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib
|
||||||
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
||||||
|
LC_ALL: C
|
||||||
|
plugs:
|
||||||
|
- network
|
||||||
|
ovs-appctl:
|
||||||
|
command: ovs-wrapper $SNAP/bin/ovs-appctl
|
||||||
|
environment:
|
||||||
|
LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib
|
||||||
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
||||||
|
LC_ALL: C
|
||||||
|
plugs:
|
||||||
|
- network
|
||||||
|
ovs-ofctl:
|
||||||
|
command: ovs-wrapper $SNAP/bin/ovs-ofctl
|
||||||
|
environment:
|
||||||
|
LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib
|
||||||
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
||||||
|
LC_ALL: C
|
||||||
|
plugs:
|
||||||
|
- network
|
||||||
|
ovs-dpctl:
|
||||||
|
command: ovs-wrapper $SNAP/bin/ovs-dpctl
|
||||||
|
environment:
|
||||||
|
LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib
|
||||||
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
||||||
|
LC_ALL: C
|
||||||
|
plugs:
|
||||||
|
- network
|
||||||
|
|
||||||
|
# Libvirt/Qemu
|
||||||
|
libvirt-bin:
|
||||||
|
command: bin/launch-libvirtd
|
||||||
|
environment:
|
||||||
|
LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib
|
||||||
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
||||||
|
LC_ALL: C
|
||||||
|
daemon: simple
|
||||||
|
virsh:
|
||||||
|
command: bin/virsh
|
||||||
|
environment:
|
||||||
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
||||||
|
LC_ALL: C
|
||||||
|
|
||||||
|
parts:
|
||||||
|
# Keystone
|
||||||
|
keystone:
|
||||||
|
plugin: python
|
||||||
|
python-version: python2
|
||||||
|
constraints: https://raw.githubusercontent.com/openstack/requirements/stable/ocata/upper-constraints.txt
|
||||||
|
source: http://tarballs.openstack.org/keystone/keystone-stable-ocata.tar.gz
|
||||||
|
python-packages:
|
||||||
|
- mysql-python
|
||||||
|
- oslo.cache[dogpile]
|
||||||
|
- pymysql
|
||||||
|
- pysqlite
|
||||||
|
- uwsgi
|
||||||
|
- git+https://github.com/openstack/snap.openstack#egg=snap.openstack
|
||||||
|
install: |
|
||||||
|
touch $SNAPCRAFT_PART_INSTALL/lib/python2.7/site-packages/paste/__init__.py
|
||||||
|
touch $SNAPCRAFT_PART_INSTALL/lib/python2.7/site-packages/repoze/__init__.py
|
||||||
|
export SNAP_ROOT="../../.."
|
||||||
|
export SNAP_SITE_PACKAGES="$SNAPCRAFT_PART_INSTALL/lib/python2.7/site-packages"
|
||||||
|
patch -d $SNAP_SITE_PACKAGES -p1 < $SNAP_ROOT/patches/oslo-config-dirs.patch
|
||||||
|
build-packages:
|
||||||
|
- gcc
|
||||||
|
- libffi-dev
|
||||||
|
- libmysqlclient-dev
|
||||||
|
- libssl-dev
|
||||||
|
- libsqlite3-dev
|
||||||
|
|
||||||
|
keystone-config:
|
||||||
|
after: [keystone]
|
||||||
|
plugin: dump
|
||||||
|
source: http://tarballs.openstack.org/keystone/keystone-stable-ocata.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-ocata.tar.gz
|
||||||
|
python-packages:
|
||||||
|
- pymysql
|
||||||
|
- uwsgi
|
||||||
|
- python-memcached
|
||||||
|
- git+https://github.com/openstack/snap.openstack#egg=snap.openstack
|
||||||
|
constraints: https://raw.githubusercontent.com/openstack/requirements/stable/ocata/upper-constraints.txt
|
||||||
|
build-packages:
|
||||||
|
- gcc
|
||||||
|
- libffi-dev
|
||||||
|
- libssl-dev
|
||||||
|
- libxml2-dev
|
||||||
|
- libxslt1-dev
|
||||||
|
|
||||||
|
nova-config:
|
||||||
|
after: [nova]
|
||||||
|
plugin: dump
|
||||||
|
source: http://tarballs.openstack.org/nova/nova-stable-ocata.tar.gz
|
||||||
|
filesets:
|
||||||
|
etc:
|
||||||
|
- etc/nova/*.conf
|
||||||
|
- etc/nova/*.ini
|
||||||
|
- etc/nova/*.json
|
||||||
|
- etc/nova/rootwrap.d
|
||||||
|
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-ocata.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/ocata/upper-constraints.txt
|
||||||
|
build-packages:
|
||||||
|
- gcc
|
||||||
|
- libffi-dev
|
||||||
|
- libssl-dev
|
||||||
|
|
||||||
|
neutron-config:
|
||||||
|
after: [neutron]
|
||||||
|
plugin: dump
|
||||||
|
source: http://tarballs.openstack.org/neutron/neutron-stable-ocata.tar.gz
|
||||||
|
organize:
|
||||||
|
etc/*.conf: etc/neutron/
|
||||||
|
etc/*.ini: etc/neutron/
|
||||||
|
etc/*.json: etc/neutron/
|
||||||
|
etc/rootwrap.d/*: etc/neutron/rootwrap.d/
|
||||||
|
filesets:
|
||||||
|
etc:
|
||||||
|
- etc/neutron/*
|
||||||
|
stage: [$etc]
|
||||||
|
prime: [$etc]
|
||||||
|
|
||||||
|
# Glance
|
||||||
|
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-ocata.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/ocata/upper-constraints.txt
|
||||||
|
build-packages:
|
||||||
|
- gcc
|
||||||
|
- libffi-dev
|
||||||
|
- libssl-dev
|
||||||
|
- libxml2-dev
|
||||||
|
- libxslt1-dev
|
||||||
|
glance-config:
|
||||||
|
after: [glance]
|
||||||
|
plugin: dump
|
||||||
|
source: http://tarballs.openstack.org/glance/glance-stable-ocata.tar.gz
|
||||||
|
organize:
|
||||||
|
etc/*.conf: etc/glance/
|
||||||
|
etc/*.ini: etc/glance/
|
||||||
|
etc/*.json: etc/glance/
|
||||||
|
filesets:
|
||||||
|
etc:
|
||||||
|
- etc/glance/*.conf
|
||||||
|
- etc/glance/*.ini
|
||||||
|
- etc/glance/*.json
|
||||||
|
stage: [$etc]
|
||||||
|
prime: [$etc]
|
||||||
|
|
||||||
|
# Openvswitch
|
||||||
|
ovs-patches:
|
||||||
|
source: snap/patches/
|
||||||
|
plugin: dump
|
||||||
|
organize:
|
||||||
|
'*' : patches/
|
||||||
|
prime:
|
||||||
|
- -*
|
||||||
|
|
||||||
|
openvswitch:
|
||||||
|
# TODO: figure out a better way to fetch the version
|
||||||
|
source: http://openvswitch.org/releases/openvswitch-2.10.0.tar.gz
|
||||||
|
plugin: autotools
|
||||||
|
build-packages:
|
||||||
|
- libssl-dev
|
||||||
|
- libnuma-dev
|
||||||
|
- libcap-ng-dev
|
||||||
|
- libpcap-dev
|
||||||
|
- libunbound-dev
|
||||||
|
- python-all
|
||||||
|
- python-six
|
||||||
|
- python-setuptools
|
||||||
|
stage-packages:
|
||||||
|
- uuid-runtime
|
||||||
|
configflags:
|
||||||
|
- "--localstatedir=/var/snap/$SNAPCRAFT_PROJECT_NAME/common"
|
||||||
|
- "--sysconfdir=/var/snap/$SNAPCRAFT_PROJECT_NAME/etc"
|
||||||
|
after:
|
||||||
|
- ovs-patches
|
||||||
|
prepare: |
|
||||||
|
# Apply patches
|
||||||
|
for patch in ${SNAPCRAFT_STAGE}/patches/openvswitch/*.patch; do
|
||||||
|
echo "Applying $(basename "$patch") ..."
|
||||||
|
patch \
|
||||||
|
--batch \
|
||||||
|
--forward \
|
||||||
|
--strip 1 \
|
||||||
|
--input "$patch"
|
||||||
|
echo
|
||||||
|
done
|
||||||
|
|
||||||
|
# Openstack Shared Parts
|
||||||
|
templates:
|
||||||
|
after: [keystone, nova, neutron, openvswitch]
|
||||||
|
plugin: dump
|
||||||
|
source: snap
|
||||||
|
|
||||||
|
nginx:
|
||||||
|
after: [keystone, nova, neutron, openvswitch]
|
||||||
|
source: http://www.nginx.org/download/nginx-1.13.0.tar.gz
|
||||||
|
plugin: autotools
|
||||||
|
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
|
||||||
|
- --with-http_ssl_module
|
||||||
|
build-packages:
|
||||||
|
- libpcre3-dev
|
||||||
|
- libssl-dev
|
||||||
|
- python-six
|
||||||
|
prepare: |
|
||||||
|
export SNAP_ROOT="../../.."
|
||||||
|
export SNAP_SOURCE="$SNAP_ROOT/parts/nginx/build"
|
||||||
|
patch -d $SNAP_SOURCE -p1 < $SNAP_ROOT/patches/drop-nginx-setgroups.patch
|
||||||
|
|
||||||
|
libxml2:
|
||||||
|
source: http://xmlsoft.org/sources/libxml2-2.9.4.tar.gz
|
||||||
|
plugin: autotools
|
||||||
|
|
||||||
|
# libvirt/qemu
|
||||||
|
qemu:
|
||||||
|
plugin: nil
|
||||||
|
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
|
||||||
|
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
|
||||||
|
stage-packages:
|
||||||
|
- try: [msr-tools]
|
||||||
|
|
||||||
|
libvirt:
|
||||||
|
source: .
|
||||||
|
source-subdir: libvirt-1.3.1
|
||||||
|
plugin: autotools
|
||||||
|
build-packages:
|
||||||
|
- libxml2-dev
|
||||||
|
- libxml-libxml-perl
|
||||||
|
- libcurl4-gnutls-dev
|
||||||
|
- libncurses5-dev
|
||||||
|
- libreadline-dev
|
||||||
|
- zlib1g-dev
|
||||||
|
- libgcrypt20-dev
|
||||||
|
- libgnutls28-dev
|
||||||
|
- libyajl-dev
|
||||||
|
- libpcap0.8-dev
|
||||||
|
- libaudit-dev
|
||||||
|
- libdevmapper-dev
|
||||||
|
- libpciaccess-dev
|
||||||
|
- libnl-3-dev
|
||||||
|
- libnl-route-3-dev
|
||||||
|
- uuid-dev
|
||||||
|
- try: [libnuma-dev]
|
||||||
|
- wget
|
||||||
|
- dpkg-dev
|
||||||
|
stage-packages:
|
||||||
|
- dmidecode
|
||||||
|
- dnsmasq
|
||||||
|
- libxml2
|
||||||
|
- libyajl2
|
||||||
|
- try: [libnuma1]
|
||||||
|
- libcurl3-gnutls
|
||||||
|
- libpciaccess0
|
||||||
|
configflags:
|
||||||
|
- --with-qemu
|
||||||
|
- --without-bhyve
|
||||||
|
- --without-xen
|
||||||
|
- --without-openvz
|
||||||
|
- --without-vmware
|
||||||
|
- --without-xenapi
|
||||||
|
- --without-esx
|
||||||
|
- --without-hyperv
|
||||||
|
- --without-lxc
|
||||||
|
- --without-vz
|
||||||
|
- --without-vbox
|
||||||
|
- --without-uml
|
||||||
|
- --without-sasl
|
||||||
|
- --without-storage-iscsi
|
||||||
|
- --without-storage-sheepdog
|
||||||
|
- --without-storage-rbd
|
||||||
|
- --without-storage-lvm
|
||||||
|
- --without-selinux
|
||||||
|
- --prefix=/snap/$SNAPCRAFT_PROJECT_NAME/current
|
||||||
|
- --localstatedir=/var/snap/$SNAPCRAFT_PROJECT_NAME/common
|
||||||
|
- --sysconfdir=/var/snap/$SNAPCRAFT_PROJECT_NAME/common
|
||||||
|
- DNSMASQ=/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/sbin/dnsmasq
|
||||||
|
- DMIDECODE=/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/sbin/dmidecode
|
||||||
|
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
|
||||||
|
# runtime
|
||||||
|
# * is not used to avoid directory merge conflicts
|
||||||
|
snap/microstack/current/: ./
|
Loading…
Reference in New Issue
Block a user