Create nova-api database

This is a required patch.

Kilo introduced a nova-api database but didn't use it. [1]
Mitaka now uses it and has broken booting instances. [2]

[1] https://wiki.openstack.org/wiki/ReleaseNotes/Kilo#OpenStack_Compute_.28Nova.29
[2] df0fca62cf/releasenotes/notes/request-spec-api-db-b9cc6e0624d563c5.yaml

Change-Id: If0a7f4ba4937fab8d60f5236ca00db06faa768c7
Closes-Bug: #1540579
This commit is contained in:
SamYaple 2016-02-01 23:01:59 +00:00
parent 0e5ca754ac
commit e7dfd63bfc
5 changed files with 44 additions and 0 deletions

View File

@ -21,6 +21,9 @@ nova_database_name: "nova"
nova_database_user: "nova"
nova_database_address: "{{ kolla_internal_address }}"
nova_api_database_name: "nova_api"
nova_api_database_user: "nova_api"
nova_api_database_address: "{{ kolla_internal_address }}"
####################
# Docker

View File

@ -17,6 +17,24 @@
set_fact:
database_created: "{{ (database.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
- name: Creating Nova-api 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='{{ nova_api_database_name }}'"
register: database_api
changed_when: "{{ database_api.stdout.find('localhost | SUCCESS => ') != -1 and
(database_api.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
failed_when: database_api.stdout.split()[2] != 'SUCCESS'
run_once: True
delegate_to: "{{ groups['nova-api'][0] }}"
- name: Reading json from variable
set_fact:
database_api_created: "{{ (database_api.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
- name: Creating Nova database user and setting permissions
command: docker exec -t kolla_ansible /usr/bin/ansible localhost
-m mysql_user
@ -35,6 +53,24 @@
run_once: True
delegate_to: "{{ groups['nova-api'][0] }}"
- name: Creating Nova-api 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='{{ nova_api_database_name }}'
password='{{ nova_api_database_password }}'
host='%'
priv='{{ nova_api_database_name }}.*:ALL'
append_privs='yes'"
register: database_api_user_create
changed_when: "{{ database_api_user_create.stdout.find('localhost | SUCCESS => ') != -1 and
(database_api_user_create.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
failed_when: database_api_user_create.stdout.split()[2] != 'SUCCESS'
run_once: True
delegate_to: "{{ groups['nova-api'][0] }}"
- name: Running Nova bootstrap container
kolla_docker:
action: "start_container"

View File

@ -125,6 +125,9 @@ password = {{ neutron_keystone_password }}
[database]
connection = mysql+pymysql://{{ nova_database_user }}:{{ nova_database_password }}@{{ nova_database_address }}/{{ nova_database_name }}
[api_database]
connection = mysql+pymysql://{{ nova_api_database_user }}:{{ nova_api_database_password }}@{{ nova_api_database_address }}/{{ nova_api_database_name }}
[keystone_authtoken]
auth_uri = http://{{ kolla_internal_address }}:{{ keystone_public_port }}
auth_url = http://{{ kolla_internal_address }}:{{ keystone_admin_port }}

View File

@ -4,5 +4,6 @@
# of the KOLLA_BOOTSTRAP variable being set, including empty.
if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then
nova-manage db sync
nova-manage api_db sync
exit 0
fi

View File

@ -33,6 +33,7 @@ glance_database_password: "password"
glance_keystone_password: "password"
nova_database_password: "password"
nova_api_database_password: "password"
nova_keystone_password: "password"
neutron_database_password: "password"