From a246df66b469ac80ab82d56abb07434782acfbf1 Mon Sep 17 00:00:00 2001
From: Ian Wienand <iwienand@redhat.com>
Date: Wed, 10 Feb 2021 17:31:46 +1100
Subject: [PATCH] refstack: create database storage area

The mariadb container currently doesn't persist it's database
anywhere.  Map /var/lib/refstack/db to /var/lib/mysql in the
container.

We have /var/refstack and /var/lib/refstack with various things.
While we're here move everythign under /var/lib/refstack.

Also use 127.0.0.1 to ensure mysql doesn't try to connect over a
socket, but tcp (I think pymsql does anyway, but it's a little
clearer).

Change-Id: I5605eac2848a6b2222698bf20c707baa4442fcd5
---
 playbooks/roles/refstack/tasks/main.yaml      | 33 +++++++++++++++----
 .../refstack/templates/docker-compose.yaml.j2 |  6 ++--
 .../roles/refstack/templates/refstack.conf.j2 |  2 +-
 3 files changed, 31 insertions(+), 10 deletions(-)

diff --git a/playbooks/roles/refstack/tasks/main.yaml b/playbooks/roles/refstack/tasks/main.yaml
index 420386623a..170e83c6dc 100644
--- a/playbooks/roles/refstack/tasks/main.yaml
+++ b/playbooks/roles/refstack/tasks/main.yaml
@@ -38,6 +38,22 @@
     mode: 0644
   notify: refstack Reload apache2
 
+- name: Create refstack storage
+  file:
+    state: directory
+    path: /var/lib/refstack/
+    owner: root
+    group: root
+    mode: 0755
+
+- name: Create refstack config storage area
+  file:
+    state: directory
+    path: /var/lib/refstack/etc
+    owner: root
+    group: root
+    mode: 0755
+
 - name: Create refstack data storage area
   file:
     state: directory
@@ -54,25 +70,28 @@
     group: root
     mode: 0755
 
+- name: Create refstack db storage area
+  file:
+    state: directory
+    path: /var/lib/refstack/db
+    owner: root
+    group: root
+    mode: 0755
+
 - name: Copy hound robots.txt
   copy:
     src: robots.txt
     dest: /var/lib/refstack/www/robots.txt
 
-- name: Ensure refstack volume directory exists
-  file:
-    state: directory
-    path: "/var/refstack"
-
 - name: Write refstack.conf
   template:
     src: refstack.conf.j2
-    dest: /var/refstack/refstack.conf
+    dest: /var/lib/refstack/etc/refstack.conf
 
 - name: Write config.json
   template:
     src: config.json.j2
-    dest: /var/refstack/config.json
+    dest: /var/lib/refstack/etc/config.json
 
 - name: Install distro packages
   package:
diff --git a/playbooks/roles/refstack/templates/docker-compose.yaml.j2 b/playbooks/roles/refstack/templates/docker-compose.yaml.j2
index 3b6e5ba914..7b95dee49e 100644
--- a/playbooks/roles/refstack/templates/docker-compose.yaml.j2
+++ b/playbooks/roles/refstack/templates/docker-compose.yaml.j2
@@ -12,6 +12,8 @@ services:
       MYSQL_DATABASE: refstack
       MYSQL_USER: "{{ refstack_db_username }}"
       MYSQL_PASSWORD: "{{ refstack_db_password }}"
+    volumes:
+      - /var/lib/refstack/db:/var/lib/mysql
   refstack-api:
     depends_on:
       - mariadb
@@ -19,6 +21,6 @@ services:
     network_mode: host
     restart: always
     volumes:
-      - /var/refstack/refstack.conf:/etc/refstack.conf
-      - /var/refstack/config.json:/refstack-ui/app/config.json
+      - /var/lib/refstack/etc/refstack.conf:/etc/refstack.conf
+      - /var/lib/refstack/etc/config.json:/refstack-ui/app/config.json
       - /var/lib/refstack/data:/var/run/data
diff --git a/playbooks/roles/refstack/templates/refstack.conf.j2 b/playbooks/roles/refstack/templates/refstack.conf.j2
index 7b7669079f..ce500594cd 100644
--- a/playbooks/roles/refstack/templates/refstack.conf.j2
+++ b/playbooks/roles/refstack/templates/refstack.conf.j2
@@ -11,7 +11,7 @@ api_url = {{ refstack_url }}
 enable_anonymous_upload = {{ enable_anonymous_upload | default(false) }}
 
 [database]
-connection = "mysql+pymysql://{{ refstack_db_username}}:{{ refstack_db_password }}@localhost/refstack?charset=utf8"
+connection = "mysql+pymysql://{{ refstack_db_username}}:{{ refstack_db_password }}@127.0.0.1/refstack?charset=utf8"
 
 [osid]
 openstack_openid_endpoint = {{ refstack_openid_endpoint }}