diff options
author | Graham Hayes <graham.hayes@hpe.com> | 2016-12-07 15:42:27 +0000 |
---|---|---|
committer | Graham Hayes <graham.hayes@hpe.com> | 2016-12-07 19:01:19 +0000 |
commit | 1e09a626e5df721f5621fc622c3bee0a948a209d (patch) | |
tree | 255b0b41a4e8a90925dad5878d8efcec1a22f5a5 | |
parent | c0c599b2f5ea861f515e82ec8b1dad30c11e2575 (diff) | |
download | designate-1e09a626e5df721f5621fc622c3bee0a948a209d.tar.gz |
Add pGSQL support for pdns4 driver in devstack
Change-Id: Iae8c8cd2d599aa3e5756786f5844231ea0e366ae
-rw-r--r-- | devstack/designate_plugins/backend-pdns4 | 20 | ||||
-rw-r--r-- | devstack/designate_plugins/backend-pdns4-pgsql-db.sql | 95 |
2 files changed, 113 insertions, 2 deletions
diff --git a/devstack/designate_plugins/backend-pdns4 b/devstack/designate_plugins/backend-pdns4 index 37247b8b..010157f4 100644 --- a/devstack/designate_plugins/backend-pdns4 +++ b/devstack/designate_plugins/backend-pdns4 @@ -56,8 +56,10 @@ EOF if is_service_enabled mysql; then PDNS+=" pdns-backend-mysql" + elif is_service_enabled postgresql; then + PDNS+=" pdns-backend-pgsql" else - die $LINENO "PDNS4 backend only supports MySQL" + die $LINENO "PDNS4 backend only supports MySQL / pgSQL" fi install_package $PDNS @@ -132,8 +134,20 @@ gmysql-password=$DATABASE_PASSWORD gmysql-dbname=designate_pdns gmysql-dnssec=yes EOF + elif is_service_enabled postgresql; then + sudo tee -a $POWERDNS_CFG_DIR/pdns.conf > /dev/null <<EOF +# Launch gpgsql backend +launch=gpgsql + +# gmysql parameters +gpgsql-host=$DATABASE_HOST +gpgsql-user=$DATABASE_USER +gpgsql-password=$DATABASE_PASSWORD +gpgsql-dbname=designate_pdns +gpgsql-dnssec=yes +EOF else - die $LINENO "PDNS4 backend only supports MySQL" + die $LINENO "PDNS4 backend only supports MySQL / pgSQL" fi restart_service pdns } @@ -150,6 +164,8 @@ function init_designate_backend { recreate_database designate_pdns utf8 if is_service_enabled mysql; then sudo mysql -u root designate_pdns < $DESIGNATE_PLUGINS/backend-pdns4-mysql-db.sql + elif is_service_enabled postgresql; then + sudo psql -U root -d designate_pdns -f $DESIGNATE_PLUGINS/backend-pdns4-pgsql-db.sql else die $LINENO "PDNS4 backend only supports MySQL" fi diff --git a/devstack/designate_plugins/backend-pdns4-pgsql-db.sql b/devstack/designate_plugins/backend-pdns4-pgsql-db.sql new file mode 100644 index 00000000..e14395b3 --- /dev/null +++ b/devstack/designate_plugins/backend-pdns4-pgsql-db.sql @@ -0,0 +1,95 @@ +CREATE TABLE domains ( + id SERIAL PRIMARY KEY, + name VARCHAR(255) NOT NULL, + master VARCHAR(128) DEFAULT NULL, + last_check INT DEFAULT NULL, + type VARCHAR(6) NOT NULL, + notified_serial INT DEFAULT NULL, + account VARCHAR(40) DEFAULT NULL, + CONSTRAINT c_lowercase_name CHECK (((name)::TEXT = LOWER((name)::TEXT))) +); + +CREATE UNIQUE INDEX name_index ON domains(name); + + +CREATE TABLE records ( + id SERIAL PRIMARY KEY, + domain_id INT DEFAULT NULL, + name VARCHAR(255) DEFAULT NULL, + type VARCHAR(10) DEFAULT NULL, + content VARCHAR(65535) DEFAULT NULL, + ttl INT DEFAULT NULL, + prio INT DEFAULT NULL, + change_date INT DEFAULT NULL, + disabled BOOL DEFAULT 'f', + ordername VARCHAR(255), + auth BOOL DEFAULT 't', + CONSTRAINT domain_exists + FOREIGN KEY(domain_id) REFERENCES domains(id) + ON DELETE CASCADE, + CONSTRAINT c_lowercase_name CHECK (((name)::TEXT = LOWER((name)::TEXT))) +); + +CREATE INDEX rec_name_index ON records(name); +CREATE INDEX nametype_index ON records(name,type); +CREATE INDEX domain_id ON records(domain_id); +CREATE INDEX recordorder ON records (domain_id, ordername text_pattern_ops); + + +CREATE TABLE supermasters ( + ip INET NOT NULL, + nameserver VARCHAR(255) NOT NULL, + account VARCHAR(40) NOT NULL, + PRIMARY KEY(ip, nameserver) +); + + +CREATE TABLE comments ( + id SERIAL PRIMARY KEY, + domain_id INT NOT NULL, + name VARCHAR(255) NOT NULL, + type VARCHAR(10) NOT NULL, + modified_at INT NOT NULL, + account VARCHAR(40) DEFAULT NULL, + comment VARCHAR(65535) NOT NULL, + CONSTRAINT domain_exists + FOREIGN KEY(domain_id) REFERENCES domains(id) + ON DELETE CASCADE, + CONSTRAINT c_lowercase_name CHECK (((name)::TEXT = LOWER((name)::TEXT))) +); + +CREATE INDEX comments_domain_id_idx ON comments (domain_id); +CREATE INDEX comments_name_type_idx ON comments (name, type); +CREATE INDEX comments_order_idx ON comments (domain_id, modified_at); + + +CREATE TABLE domainmetadata ( + id SERIAL PRIMARY KEY, + domain_id INT REFERENCES domains(id) ON DELETE CASCADE, + kind VARCHAR(32), + content TEXT +); + +CREATE INDEX domainidmetaindex ON domainmetadata(domain_id); + + +CREATE TABLE cryptokeys ( + id SERIAL PRIMARY KEY, + domain_id INT REFERENCES domains(id) ON DELETE CASCADE, + flags INT NOT NULL, + active BOOL, + content TEXT +); + +CREATE INDEX domainidindex ON cryptokeys(domain_id); + + +CREATE TABLE tsigkeys ( + id SERIAL PRIMARY KEY, + name VARCHAR(255), + algorithm VARCHAR(50), + secret VARCHAR(255), + CONSTRAINT c_lowercase_name CHECK (((name)::TEXT = LOWER((name)::TEXT))) +); + +CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm); |