From beeef8413e9c20df64c5f94444d7ed37c228ec69 Mon Sep 17 00:00:00 2001
From: Sam Yaple <sam@yaple.net>
Date: Fri, 7 Aug 2015 22:26:33 +0000
Subject: [PATCH] Remove Ansible abstraction for Glance

Change-Id: I9e2fe6c5e7396d6fb3ce348f30f1d5ea81b6dcf6
Partially-Implements: blueprint remove-abstraction-ansible
---
 ansible/roles/glance/defaults/main.yml   | 26 ++-----
 ansible/roles/glance/tasks/bootstrap.yml | 93 +++++++++++++++++++-----
 ansible/roles/glance/tasks/start.yml     | 47 ++++++++----
 3 files changed, 116 insertions(+), 50 deletions(-)

diff --git a/ansible/roles/glance/defaults/main.yml b/ansible/roles/glance/defaults/main.yml
index 3f94f48276..15062b8dff 100644
--- a/ansible/roles/glance/defaults/main.yml
+++ b/ansible/roles/glance/defaults/main.yml
@@ -8,29 +8,17 @@ glance_database_name: "glance"
 glance_database_user: "glance"
 glance_database_address: "{{ kolla_internal_address }}"
 
-# Do not override "service_*" variables
-service_database_name: "{{ glance_database_name }}"
-service_database_user: "{{ glance_database_user }}"
-service_database_password: "{{ glance_database_password }}"
-
 
 ####################
 # Docker
 ####################
-docker_glance_registry: "{{ docker_registry ~ '/' if docker_registry else '' }}"
-docker_glance_namespace: "{{ docker_namespace }}"
-kolla_glance_base_distro: "{{ kolla_base_distro }}"
-kolla_glance_install_type: "{{ kolla_install_type }}"
-kolla_glance_registry_container_name: "glance-registry"
-kolla_glance_api_container_name: "glance-api"
-
-docker_glance_registry_image: "{{ docker_glance_registry }}{{ docker_glance_namespace }}/{{ kolla_glance_base_distro }}-{{ kolla_glance_install_type }}-{{ kolla_glance_registry_container_name }}"
-docker_glance_registry_tag: "{{ openstack_release }}"
-docker_glance_registry_image_full: "{{ docker_glance_registry_image }}:{{ docker_glance_registry_tag }}"
-
-docker_glance_api_image: "{{ docker_glance_registry }}{{ docker_glance_namespace }}/{{ kolla_glance_base_distro }}-{{ kolla_glance_install_type }}-{{ kolla_glance_api_container_name }}"
-docker_glance_api_tag: "{{ openstack_release }}"
-docker_glance_api_image_full: "{{ docker_glance_api_image }}:{{ docker_glance_api_tag }}"
+glance_registry_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-glance-registry"
+glance_registry_tag: "{{ openstack_release }}"
+glance_registry_image_full: "{{ glance_registry_image }}:{{ glance_registry_tag }}"
+
+glance_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-glance-api"
+glance_api_tag: "{{ openstack_release }}"
+glance_api_image_full: "{{ glance_api_image }}:{{ glance_api_tag }}"
 
 
 ####################
diff --git a/ansible/roles/glance/tasks/bootstrap.yml b/ansible/roles/glance/tasks/bootstrap.yml
index a0a405fe67..3ccaacb03d 100644
--- a/ansible/roles/glance/tasks/bootstrap.yml
+++ b/ansible/roles/glance/tasks/bootstrap.yml
@@ -1,20 +1,79 @@
 ---
-- include: ../../start.yml
-  vars:
-    container_command: "/bin/sleep infinity"
-    container_image: "{{ docker_glance_api_image_full }}"
-    container_name: "glance_data"
-    container_volumes:
-      - "/var/lib/glance/"
+- name: Creating Glance database
+  command: docker exec -t kolla_ansible /usr/bin/ansible localhost
+    -m mysql_db
+    -a "login_host='{{ database_address }}'
+        login_user='{{ database_user }}'
+        login_password='{{ database_password }}'
+        name='{{ glance_database_name }}'"
+  register: database
+  changed_when: "{{ database.stdout.find('localhost | SUCCESS => ') != -1 and (database.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
+  failed_when: database.stdout.split()[2] != 'SUCCESS'
+  run_once: True
 
-- include: ../../bootstrap.yml
-  vars:
-    container_detach: False
-    container_environment:
-      KOLLA_BOOTSTRAP:
+- name: Creating Glance database user and setting permissions
+  command: docker exec -t kolla_ansible /usr/bin/ansible localhost
+    -m mysql_user
+    -a "login_host='{{ database_address }}'
+        login_user='{{ database_user }}'
+        login_password='{{ database_password }}'
+        name='{{ glance_database_name }}'
+        password='{{ glance_database_password }}'
+        host='%'
+        priv='{{ glance_database_name }}.*:ALL'
+        append_privs='yes'"
+  register: database_user
+  changed_when: "{{ database.stdout.find('localhost | SUCCESS => ') != -1 and (database_user.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
+  failed_when: database_user.stdout.split()[2] != 'SUCCESS'
+  run_once: True
+
+- name: Starting Glance data container
+  docker:
+    docker_api_version: "{{ docker_api_version }}"
+    net: host
+    pull: "{{ docker_pull_policy }}"
+    restart_policy: "{{ docker_restart_policy }}"
+    restart_policy_retry: "{{ docker_restart_policy_retry }}"
+    state: reloaded
+    registry: "{{ docker_registry }}"
+    username: "{{ docker_registry_username }}"
+    password: "{{ docker_registry_password }}"
+    insecure_registry: "{{ docker_insecure_registry }}"
+    name: glance_data
+    image: "{{ glance_registry_image_full }}"
+    command: "/bin/sleep infinity"
+    volumes: "/var/lib/glance/"
+
+- name: Starting Glance bootstrap container
+  docker:
+    detach: False
+    docker_api_version: "{{ docker_api_version }}"
+    net: host
+    pull: "{{ docker_pull_policy }}"
+    restart_policy: "no"
+    state: reloaded
+    registry: "{{ docker_registry }}"
+    username: "{{ docker_registry_username }}"
+    password: "{{ docker_registry_password }}"
+    insecure_registry: "{{ docker_insecure_registry }}"
+    name: bootstrap_glance
+    image: "{{ glance_api_image_full }}"
+    volumes: "{{ node_config_directory }}/glance/:/opt/kolla/glance/:ro"
+    volumes_from: glance_data
+    env:
+      KOLLA_BOOSTRAP:
       KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
-    container_image: "{{ docker_glance_api_image_full }}"
-    container_name: "bootstrap_glance_api"
-    container_restart_policy: "no"
-    container_volumes:
-      - "{{ node_config_directory }}/glance-api/:/opt/kolla/glance-api/:ro"
+  run_once: True
+  when: database.stdout.find('localhost | SUCCESS => ') != -1 and (database.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed
+
+# https://github.com/ansible/ansible-modules-core/pull/1031
+- name: Waiting for bootstrap container to exit
+  command: docker wait bootstrap_glance
+  when: database.stdout.find('localhost | SUCCESS => ') != -1 and (database.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed
+
+- name: Cleaning up Glance boostrap container
+  docker:
+    name: bootstrap_glance
+    image: "{{ glance_api_image_full }}"
+    state: absent
+  when: database.stdout.find('localhost | SUCCESS => ') != -1 and (database.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed
diff --git a/ansible/roles/glance/tasks/start.yml b/ansible/roles/glance/tasks/start.yml
index f9534ebd8c..3d73069169 100644
--- a/ansible/roles/glance/tasks/start.yml
+++ b/ansible/roles/glance/tasks/start.yml
@@ -1,20 +1,39 @@
 ---
-- include: ../../start.yml
-  vars:
-    container_environment:
+- name: Starting Glance-registry container
+  docker:
+    docker_api_version: "{{ docker_api_version }}"
+    net: host
+    pull: "{{ docker_pull_policy }}"
+    restart_policy: "{{ docker_restart_policy }}"
+    restart_policy_retry: "{{ docker_restart_policy_retry }}"
+    state: reloaded
+    registry: "{{ docker_registry }}"
+    username: "{{ docker_registry_username }}"
+    password: "{{ docker_registry_password }}"
+    insecure_registry: "{{ docker_insecure_registry }}"
+    name: glance_registry
+    image: "{{ glance_registry_image_full }}"
+    volumes: "{{ node_config_directory }}/glance-registry/:/opt/kolla/glance-registry/:ro"
+    volumes_from: glance_data
+    env:
       KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
-    container_image: "{{ docker_glance_registry_image_full }}"
-    container_name: "glance_registry"
-    container_volumes:
-      - "{{ node_config_directory }}/glance-registry/:/opt/kolla/glance-registry/:ro"
   when: inventory_hostname in groups['glance-registry']
 
-- include: ../../start.yml
-  vars:
-    container_environment:
+- name: Starting Glance-api container
+  docker:
+    docker_api_version: "{{ docker_api_version }}"
+    net: host
+    pull: "{{ docker_pull_policy }}"
+    restart_policy: "{{ docker_restart_policy }}"
+    restart_policy_retry: "{{ docker_restart_policy_retry }}"
+    state: reloaded
+    registry: "{{ docker_registry }}"
+    username: "{{ docker_registry_username }}"
+    password: "{{ docker_registry_password }}"
+    insecure_registry: "{{ docker_insecure_registry }}"
+    name: glance_api
+    image: "{{ glance_api_image_full }}"
+    volumes: "{{ node_config_directory }}/glance-api/:/opt/kolla/glance-api/:ro"
+    env:
       KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
-    container_image: "{{ docker_glance_api_image_full }}"
-    container_name: "glance_api"
-    container_volumes:
-      - "{{ node_config_directory }}/glance-api/:/opt/kolla/glance-api/:ro"
   when: inventory_hostname in groups['glance-api']
-- 
GitLab