From e4d9ad374142f728f8b240b422502cad376bbce8 Mon Sep 17 00:00:00 2001
From: James Page <james.page@ubuntu.com>
Date: Tue, 22 Nov 2016 14:35:13 +0000
Subject: [PATCH] Baseline nova snap

---
 .gitignore                       |  5 ++
 conf/etc/nova/nova.conf          |  6 +++
 conf/snap-openstack.yaml         | 49 +++++++++++++++++++
 conf/templates/nova-snap.conf.j2 |  7 +++
 snapcraft.yaml                   | 83 ++++++++++++++++++++++++++++++++
 5 files changed, 150 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 conf/etc/nova/nova.conf
 create mode 100644 conf/snap-openstack.yaml
 create mode 100644 conf/templates/nova-snap.conf.j2
 create mode 100644 snapcraft.yaml

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..07ee36e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+parts
+prime
+stage
+*.snap
+.tox
diff --git a/conf/etc/nova/nova.conf b/conf/etc/nova/nova.conf
new file mode 100644
index 0000000..ccf8ad9
--- /dev/null
+++ b/conf/etc/nova/nova.conf
@@ -0,0 +1,6 @@
+# Snap distribution defaults - do not change, override in $SNAP_COMMON/etc/nova.conf.d
+[wsgi]
+secure_proxy_ssl_header = HTTP_X_FORWARDED_PROTO
+
+[database]
+max_retries = -1
diff --git a/conf/snap-openstack.yaml b/conf/snap-openstack.yaml
new file mode 100644
index 0000000..7006123
--- /dev/null
+++ b/conf/snap-openstack.yaml
@@ -0,0 +1,49 @@
+setup:
+  dirs:
+    - "{snap_common}/etc/nova.conf.d"
+    - "{snap_common}/etc/nova"
+    - "{snap_common}/log"
+    - "{snap_common}/lock"
+    - "{snap_common}/run"
+  templates:
+    "nova-snap.conf.j2": "{snap_common}/etc/nova.conf.d/nova-snap.conf"
+entry_points:
+  nova-api-os-compute:
+    binary: nova-api-os-compute
+    config-files:
+      - "{snap}/etc/nova/nova.conf"
+      - "{snap_common}/etc/nova/nova.conf"
+    config-dirs:
+      - "{snap_common}/etc/nova.conf.d"
+    log-file: "{snap_common}/log/nova-api-os-compute.log"
+  nova-conductor:
+    binary: nova-conductor
+    config-files:
+      - "{snap}/etc/nova/nova.conf"
+      - "{snap_common}/etc/nova/nova.conf"
+    config-dirs:
+      - "{snap_common}/etc/nova.conf.d"
+    log-file: "{snap_common}/log/nova-conductor.log"
+  nova-scheduler:
+    binary: nova-scheduler
+    config-files:
+      - "{snap}/etc/nova/nova.conf"
+      - "{snap_common}/etc/nova/nova.conf"
+    config-dirs:
+      - "{snap_common}/etc/nova.conf.d"
+    log-file: "{snap_common}/log/nova-scheduler.log"
+  nova-consoleauth:
+    binary: nova-consoleauth
+    config-files:
+      - "{snap}/etc/nova/nova.conf"
+      - "{snap_common}/etc/nova/nova.conf"
+    config-dirs:
+      - "{snap_common}/etc/nova.conf.d"
+    log-file: "{snap_common}/log/nova-consoleauth.log"
+  nova-manage:
+    binary: nova-manage
+    config-files:
+      - "{snap}/etc/nova/nova.conf"
+      - "{snap_common}/etc/nova/nova.conf"
+    config-dirs:
+      - "{snap_common}/etc/nova.conf.d"
diff --git a/conf/templates/nova-snap.conf.j2 b/conf/templates/nova-snap.conf.j2
new file mode 100644
index 0000000..4f538cd
--- /dev/null
+++ b/conf/templates/nova-snap.conf.j2
@@ -0,0 +1,7 @@
+[DEFAULT]
+# Set state path to writable directory
+state_path = {{ snap_common }}
+
+[oslo_concurrency]
+# Oslo Concurrency lock path
+lock_path = {{ snap_common }}/lock
diff --git a/snapcraft.yaml b/snapcraft.yaml
new file mode 100644
index 0000000..0fb1ac3
--- /dev/null
+++ b/snapcraft.yaml
@@ -0,0 +1,83 @@
+name: nova
+version: ocata
+summary: OpenStack Compute Service (nova)
+description: |
+  OpenStack Nova provides a cloud computing fabric controller,
+  supporting a wide variety of compute technologies, including
+  .
+    libvirt (KVM, Xen, LXC and more),
+    LXD
+    Hyper-V
+    VMware
+    XenServer
+    OpenStack Ironic.
+  .
+  This snap provides the Nova controller component of an OpenStack
+  deployment.
+confinement: strict
+grade: devel
+
+apps:
+  api:
+    command: snap-openstack nova-api-os-compute
+    daemon: simple
+    plugs:
+      - network
+      - network-bind
+  conductor:
+    command: snap-openstack nova-conductor
+    daemon: simple
+    plugs:
+      - network
+      - network-bind
+  scheduler:
+    command: snap-openstack nova-scheduler
+    daemon: simple
+    plugs:
+      - network
+      - network-bind
+  consoleauth:
+    command: snap-openstack nova-consoleauth
+    daemon: simple
+    plugs:
+      - network
+      - network-bind
+  manage:
+    command: snap-openstack nova-manage
+    plugs:
+      - network
+parts:
+  nova:
+    plugin: python
+    python-version: python2
+    source: http://tarballs.openstack.org/nova/nova-master.tar.gz
+    python-packages:
+      - pymysql
+      - git+https://github.com/openstack-snaps/snap.openstack#egg=snap.openstack
+    constraints: https://raw.githubusercontent.com/openstack/requirements/master/upper-constraints.txt
+    build-packages:
+      - libffi-dev
+      - libssl-dev
+      - libxml2-dev
+      - libxslt1-dev
+      - libvirt-dev
+      - pkg-config
+      - gcc
+  templates:
+    after:
+      - nova
+    plugin: dump
+    source: conf
+  config:
+    after:
+      - nova
+    plugin: dump
+    source: http://tarballs.openstack.org/nova/nova-master.tar.gz
+    filesets:
+      etc:
+        - etc/nova/*.conf
+        - etc/nova/*.ini
+        - etc/nova/*.json
+        - etc/nova/rootwrap.d
+    stage: [$etc]
+    snap: [$etc]