-- Baseline SQL to add necessary fields for IPDB 2.7 -> IPDB 3.0 -- Note some data changes must be made via script. -- WARNING: This SQL is backwards-compatible, but once db-update.pl -- has run, IPDB v2.7 and older will NOT be able to properly manipulate -- the data! -- Flag table for deciding if we can usefully do rDNS RPC calls. CREATE TABLE dnsavail ( "zone" cidr, "location" varchar(4) DEFAULT '', parent_alloc integer NOT NULL ); ALTER TABLE ONLY dnsavail ADD CONSTRAINT dnsavail_pkey PRIMARY KEY ("zone",parent_alloc); -- Store backup fields in a separate table CREATE TABLE backuplist ( backup_id serial NOT NULL, bkbrand text, bkmodel text, bktype text, bkport integer, bksrc text, bkuser text, bkvpass text, bkepass text, bkip inet ); -- VRFs are now the apex entity CREATE TABLE vrfs ( vrf varchar(32) DEFAULT '' NOT NULL, comment text DEFAULT '' NOT NULL, location varchar(4) DEFAULT '' NOT NULL ); ALTER TABLE ONLY vrfs ADD CONSTRAINT vrfs_pkey PRIMARY KEY (vrf); -- need a default VRF to stuff everything into to start with INSERT INTO vrfs (vrf,comment) VALUES ('DEFAULT','Initial default VRF'); -- Master and routed blocks now live in the allocations table. ALTER TABLE allocations ADD COLUMN vrf text NOT NULL DEFAULT ''; ALTER TABLE allocations ADD COLUMN vlan text NOT NULL DEFAULT ''; ALTER TABLE allocations ADD COLUMN rdns text NOT NULL DEFAULT ''; ALTER TABLE allocations ADD COLUMN parent_id integer NOT NULL DEFAULT 0; ALTER TABLE allocations ADD COLUMN master_id integer NOT NULL DEFAULT 0; ALTER TABLE allocations ADD COLUMN backup_id integer NOT NULL DEFAULT 0; ALTER TABLE allocations DROP CONSTRAINT allocations_pkey; ALTER TABLE allocations ADD COLUMN id serial PRIMARY KEY; -- not certain this is right CREATE UNIQUE INDEX allocations_skey ON allocations (cidr,vrf,type); ALTER TABLE freeblocks ADD COLUMN vrf text NOT NULL DEFAULT ''; ALTER TABLE freeblocks ADD COLUMN parent_id integer NOT NULL DEFAULT 0; ALTER TABLE freeblocks ADD COLUMN master_id integer NOT NULL DEFAULT 0; ALTER TABLE freeblocks ADD COLUMN reserve_for integer NOT NULL DEFAULT 0; ALTER TABLE freeblocks DROP CONSTRAINT freeblocks_pkey; ALTER TABLE freeblocks ADD CONSTRAINT freeblocks_pkey PRIMARY KEY ("cidr","parent_id"); ALTER TABLE freeblocks ADD COLUMN id serial; ALTER TABLE poolips ADD COLUMN vrf text NOT NULL DEFAULT ''; ALTER TABLE poolips ADD COLUMN vlan text NOT NULL DEFAULT ''; ALTER TABLE poolips ADD COLUMN rdns text NOT NULL DEFAULT ''; ALTER TABLE poolips ADD COLUMN parent_id integer NOT NULL DEFAULT 0; ALTER TABLE poolips ADD COLUMN master_id integer NOT NULL DEFAULT 0; ALTER TABLE poolips ADD COLUMN backup_id integer NOT NULL DEFAULT 0; ALTER TABLE poolips DROP CONSTRAINT poolips_pkey; ALTER TABLE poolips ADD COLUMN id serial; ALTER TABLE poolips ADD CONSTRAINT poolips_pkey PRIMARY KEY ("ip", "parent_id"); -- probably need some more indexes -- Need some additional fields to support search output. Might arguably -- move pool IPs into the allocations table; we'll see. DROP VIEW searchme; -- do these here, because we can't do them while the view is defined ALTER TABLE allocations ALTER COLUMN description TYPE varchar(128); ALTER TABLE poolips ALTER COLUMN description TYPE varchar(128); CREATE VIEW "searchme" AS SELECT allocations.cidr, allocations.custid, allocations."type", allocations.city, allocations.description, allocations.notes, allocations.circuitid, allocations.vrf, allocations.vlan, allocations.id, allocations.parent_id, allocations.master_id, 'n' AS available FROM allocations UNION SELECT poolips.ip, poolips.custid, poolips.type, poolips.city, poolips.description, poolips.notes, poolips.circuitid, poolips.vrf, poolips.vlan, poolips.id, poolips.parent_id, poolips.master_id, poolips.available FROM poolips; -- Relabel a few types to match the new structure UPDATE alloctypes SET listname='Routing aggregation', dispname='Routing aggregation' WHERE type='rm'; -- Not critical but the previous definitions were too restrictive (eg, can't -- handle MD5, or SHA password hashes). Plans for ACLs also require larger fields. ALTER TABLE users ALTER COLUMN username TYPE varchar(256); ALTER TABLE users ALTER COLUMN password TYPE varchar(256); ALTER TABLE users ALTER COLUMN acl TYPE varchar(256);