From 168ca7f0a474f1207ee01dab0ca2e70f34783e9c Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Mon, 26 Aug 2019 10:11:03 +0100 Subject: [PATCH] Remove deprecated PostgreSQL database driver This was deprecated for removal in Pike. It's probably time to drop it. Note that the 'postgresql-devel'/'postgresql-server-dev-all' packages are retained since some packages still include 'psycopg2' in their general requirements. Change-Id: I51e8354e99972757253ce259e6c03c91da24398c Signed-off-by: Stephen Finucane --- doc/source/configuration.rst | 22 ++--- doc/source/zuul_ci_jobs_migration.rst | 5 +- functions | 3 +- lib/databases/postgresql | 137 -------------------------- stack.sh | 9 +- unstack.sh | 4 - 6 files changed, 14 insertions(+), 166 deletions(-) delete mode 100644 lib/databases/postgresql diff --git a/doc/source/configuration.rst b/doc/source/configuration.rst index 45f4ffe6e9..62571e0760 100644 --- a/doc/source/configuration.rst +++ b/doc/source/configuration.rst @@ -326,29 +326,23 @@ a file, keep service logs and disable color in the stored files. Database Backend ---------------- -Multiple database backends are available. The available databases are defined -in the lib/databases directory. -``mysql`` is the default database, choose a different one by putting the -following in the ``localrc`` section:: +Support for the MySQL database backend is included. Addition database backends +may be available via external plugins. Enabling of disabling MySQL is handled +via the usual service functions and ``ENABLED_SERVICES``. For example, to +disable MySQL in ``local.conf``:: disable_service mysql - enable_service postgresql - -``mysql`` is the default database. RPC Backend ----------- -Support for a RabbitMQ RPC backend is included. Additional RPC -backends may be available via external plugins. Enabling or disabling -RabbitMQ is handled via the usual service functions and -``ENABLED_SERVICES``. - -Example disabling RabbitMQ in ``local.conf``:: +Support for a RabbitMQ RPC backend is included. Additional RPC backends may be +available via external plugins. Enabling or disabling RabbitMQ is handled via +the usual service functions and ``ENABLED_SERVICES``. For example, to disable +RabbitMQ in ``local.conf``:: disable_service rabbit - Apache Frontend --------------- diff --git a/doc/source/zuul_ci_jobs_migration.rst b/doc/source/zuul_ci_jobs_migration.rst index 17e7e16fb7..66f8251039 100644 --- a/doc/source/zuul_ci_jobs_migration.rst +++ b/doc/source/zuul_ci_jobs_migration.rst @@ -302,10 +302,7 @@ migrated at all. - This will probably be implemented on ironic side. * - DEVSTACK_GATE_POSTGRES - Legacy - - This flag exists in d-g but the only thing that it does is - capture postgres logs. This is already supported by the roles - in post, so the flag is useless in the new jobs. postgres - itself can be enabled via the devstack_service job variable. + - This has no effect in d-g. * - DEVSTACK_GATE_ZEROMQ - Legacy - This has no effect in d-g. diff --git a/functions b/functions index f33fd25fee..8eeb03203e 100644 --- a/functions +++ b/functions @@ -400,7 +400,8 @@ function upload_image { # initialized yet, just save the configuration selection and call back later # to validate it. # -# ``$1`` - the name of the database backend to use (mysql, postgresql, ...) +# ``$1`` - the name of the database backend to use (only mysql is currently +# supported) function use_database { if [[ -z "$DATABASE_BACKENDS" ]]; then # No backends registered means this is likely called from ``localrc`` diff --git a/lib/databases/postgresql b/lib/databases/postgresql deleted file mode 100644 index 618834b550..0000000000 --- a/lib/databases/postgresql +++ /dev/null @@ -1,137 +0,0 @@ -#!/bin/bash -# -# lib/databases/postgresql -# Functions to control the configuration and operation of the **PostgreSQL** database backend - -# Dependencies: -# -# - DATABASE_{HOST,USER,PASSWORD} must be defined - -# Save trace setting -_XTRACE_PG=$(set +o | grep xtrace) -set +o xtrace - - -MAX_DB_CONNECTIONS=${MAX_DB_CONNECTIONS:-200} - - -register_database postgresql - - -# Functions -# --------- - -function get_database_type_postgresql { - echo postgresql -} - -# Get rid of everything enough to cleanly change database backends -function cleanup_database_postgresql { - stop_service postgresql - if is_ubuntu; then - # Get ruthless with mysql - apt_get purge -y postgresql* - return - elif is_fedora || is_suse; then - uninstall_package postgresql-server - else - return - fi -} - -function recreate_database_postgresql { - local db=$1 - # Avoid unsightly error when calling dropdb when the database doesn't exist - psql -h$DATABASE_HOST -U$DATABASE_USER -dtemplate1 -c "DROP DATABASE IF EXISTS $db" - createdb -h $DATABASE_HOST -U$DATABASE_USER -l C -T template0 -E utf8 $db -} - -function configure_database_postgresql { - local pg_conf pg_dir pg_hba check_role version - echo_summary "Configuring and starting PostgreSQL" - if is_fedora; then - pg_hba=/var/lib/pgsql/data/pg_hba.conf - pg_conf=/var/lib/pgsql/data/postgresql.conf - if ! sudo [ -e $pg_hba ]; then - sudo postgresql-setup initdb - fi - elif is_ubuntu; then - version=`psql --version | cut -d ' ' -f3 | cut -d. -f1-2` - if vercmp $version '>=' 9.3; then - if [ -z "`pg_lsclusters -h`" ]; then - echo 'No PostgreSQL clusters exist; will create one' - sudo pg_createcluster $version main --start - fi - fi - pg_dir=`find /etc/postgresql -name pg_hba.conf|xargs dirname` - pg_hba=$pg_dir/pg_hba.conf - pg_conf=$pg_dir/postgresql.conf - elif is_suse; then - pg_hba=/var/lib/pgsql/data/pg_hba.conf - pg_conf=/var/lib/pgsql/data/postgresql.conf - # initdb is called when postgresql is first started - sudo [ -e $pg_hba ] || start_service postgresql - else - exit_distro_not_supported "postgresql configuration" - fi - # Listen on all addresses - sudo sed -i "/listen_addresses/s/.*/listen_addresses = '*'/" $pg_conf - # Set max_connections - sudo sed -i "/max_connections/s/.*/max_connections = $MAX_DB_CONNECTIONS/" $pg_conf - # Do password auth from all IPv4 clients - sudo sed -i "/^host/s/all\s\+127.0.0.1\/32\s\+ident/$DATABASE_USER\t0.0.0.0\/0\tpassword/" $pg_hba - # Do password auth for all IPv6 clients - sudo sed -i "/^host/s/all\s\+::1\/128\s\+ident/$DATABASE_USER\t::0\/0\tpassword/" $pg_hba - restart_service postgresql - - # Create the role if it's not here or else alter it. - check_role=$(sudo -u root sudo -u postgres -i psql -t -c "SELECT 'HERE' from pg_roles where rolname='$DATABASE_USER'") - if [[ ${check_role} == *HERE ]];then - sudo -u root sudo -u postgres -i psql -c "ALTER ROLE $DATABASE_USER WITH SUPERUSER LOGIN PASSWORD '$DATABASE_PASSWORD'" - else - sudo -u root sudo -u postgres -i psql -c "CREATE ROLE $DATABASE_USER WITH SUPERUSER LOGIN PASSWORD '$DATABASE_PASSWORD'" - fi -} - -function install_database_postgresql { - echo_summary "Installing postgresql" - deprecated "Use of postgresql in devstack is deprecated, and will be removed during the Pike cycle" - local pgpass=$HOME/.pgpass - if [[ ! -e $pgpass ]]; then - cat < $pgpass -*:*:*:$DATABASE_USER:$DATABASE_PASSWORD -EOF - chmod 0600 $pgpass - else - sed -i "s/:root:\w\+/:root:$DATABASE_PASSWORD/" $pgpass - fi - if is_ubuntu; then - install_package postgresql - elif is_fedora || is_suse; then - install_package postgresql-server - if is_fedora; then - sudo systemctl enable postgresql - fi - else - exit_distro_not_supported "postgresql installation" - fi -} - -function install_database_python_postgresql { - # Install Python client module - pip_install_gr psycopg2 - ADDITIONAL_VENV_PACKAGES+=",psycopg2" -} - -function database_connection_url_postgresql { - local db=$1 - echo "$BASE_SQL_CONN/$db?client_encoding=utf8" -} - - -# Restore xtrace -$_XTRACE_PG - -# Local variables: -# mode: shell-script -# End: diff --git a/stack.sh b/stack.sh index 9982c353c0..5064d5db1d 100755 --- a/stack.sh +++ b/stack.sh @@ -695,14 +695,11 @@ function read_password { # Database Configuration # ---------------------- -# To select between database backends, add the following to ``local.conf``: +# DevStack provides a MySQL database backend. Additional backends may be +# provided by external plugins and can be enabled using the usual service +# functions and ``ENABLED_SERVICES``. For example, to disable MySQL: # # disable_service mysql -# enable_service postgresql -# -# The available database backends are listed in ``DATABASE_BACKENDS`` after -# ``lib/database`` is sourced. ``mysql`` is the default. - if initialize_database_backends; then echo "Using $DATABASE_TYPE database backend" # Last chance for the database password. This must be handled here diff --git a/unstack.sh b/unstack.sh index ccea0ef585..07dc2b1418 100755 --- a/unstack.sh +++ b/unstack.sh @@ -147,10 +147,6 @@ if [[ -n "$UNSTACK_ALL" ]]; then stop_service mysql fi - if is_service_enabled postgresql; then - stop_service postgresql - fi - # Stop rabbitmq-server if is_service_enabled rabbit; then stop_service rabbitmq-server