renaming SliceAttribute into SliceTag and InterfaceSetting into InterfaceTag
[plcapi.git] / migrations / v4-to-v5 / migrate.sql
index 640bc92..27b88fb 100644 (file)
@@ -3,9 +3,13 @@
 -- $Id$
 --
 -- this is part of the script to migrate from 4.2 to 5.0
+-- 
+-- most of the renamings have taken place already when this script is invoked
 --
 
--------------------- VIEWS :
+----------------------------------------
+-- views
+----------------------------------------
 -- we want the views to get out of our way, i.e. to drop all views; 
 -- the views will be reinstantiated later upon loading of planetlab5.sql
 
@@ -49,7 +53,7 @@ DROP VIEW node_slices CASCADE;
 DROP VIEW node_slices_whitelist CASCADE;
 DROP VIEW nodegroup_conf_files CASCADE;
 DROP VIEW nodegroup_nodes CASCADE;
-DROP VIEW interface_settings CASCADE;
+DROP VIEW interface_tags CASCADE;
 DROP VIEW pcu_nodes CASCADE;
 DROP VIEW pcu_protocol_types CASCADE;
 DROP VIEW peer_keys CASCADE;
@@ -67,7 +71,7 @@ DROP VIEW site_nodes CASCADE;
 DROP VIEW site_pcus CASCADE;
 DROP VIEW site_persons CASCADE;
 DROP VIEW site_slices CASCADE;
-DROP VIEW slice_attributes CASCADE;
+DROP VIEW slice_tags CASCADE;
 DROP VIEW slice_nodes CASCADE;
 DROP VIEW slice_persons CASCADE;
 DROP VIEW slivers CASCADE;
@@ -78,7 +82,7 @@ DROP VIEW view_event_objects CASCADE;
 -- caught by some previous cascade -- DROP VIEW view_events CASCADE;
 DROP VIEW view_keys CASCADE;
 -- caught by some previous cascade -- DROP VIEW view_nodegroups CASCADE;
-DROP VIEW view_interface_settings CASCADE;
+DROP VIEW view_interface_tags CASCADE;
 -- caught by some previous cascade -- DROP VIEW view_interfaces CASCADE;
 -- caught by some previous cascade -- DROP VIEW view_nodes CASCADE;
 -- caught by some previous cascade -- DROP VIEW view_pcu_types CASCADE;
@@ -87,16 +91,23 @@ DROP VIEW view_interface_settings CASCADE;
 -- caught by some previous cascade -- DROP VIEW view_persons CASCADE;
 DROP VIEW view_sessions CASCADE;
 -- caught by some previous cascade -- DROP VIEW view_sites CASCADE;
-DROP VIEW view_slice_attributes CASCADE;
+DROP VIEW view_slice_tags CASCADE;
 -- caught by some previous cascade -- DROP VIEW view_slices CASCADE;
 
 -- shows in logfile
 select * from mgn_all_views;
 
+-- cleanup migration utilities
+drop view mgn_all_views;
+drop function mgn_drop_all_views ();
 
--------------------- TAG TYPES
+----------------------------------------
+-- tag types
+----------------------------------------
 --- merge former slice attribute types and setting attribute types into tagtypes
 
+---------- slice attributes
+
 --- the tag_types table is obtained from the former slice_attribute_types table 
 ALTER TABLE tag_types RENAME COLUMN name TO tagname;
 --- former slice_attribute_types had no 'category'
@@ -104,40 +115,53 @@ ALTER TABLE tag_types ADD COLUMN category TEXT NOT NULL DEFAULT 'slice/legacy';
 
 --- append in tag_types the contents of nodenetwork_setting_types
 INSERT INTO tag_types (tagname,description,min_role_id,category) 
-       SELECT name,description,min_role_id,'interface/legacy' FROM interface_setting_types;
+       SELECT name,description,min_role_id,'interface/legacy' FROM interface_tag_types;
+
+---------- interface settings
 
---- former nodenetwork_setting_type_id are now renumbered, need to fix interface_setting accordingly
+--- former nodenetwork_setting_type_id are now renumbered, need to fix interface_tag accordingly
 
 -- old_index -> new_index relation
 CREATE OR REPLACE VIEW mgn_setting_renumber AS
    SELECT 
-      interface_setting_types.interface_setting_type_id AS old_index,  
+      interface_tag_types.interface_tag_type_id AS old_index,  
       tag_types.tag_type_id AS new_index 
    FROM 
-      interface_setting_types INNER JOIN tag_types  
-      ON interface_setting_types.name = tag_types.tagname;
+      interface_tag_types INNER JOIN tag_types  
+      ON interface_tag_types.name = tag_types.tagname;
 
--- need to temporarily drop constraint on interface_setting_type_id
-ALTER TABLE interface_setting DROP CONSTRAINT interface_setting_interface_setting_type_id_fkey;
+-- need to temporarily drop constraint on interface_tag_type_id
+ALTER TABLE interface_tag DROP CONSTRAINT interface_tag_interface_tag_type_id_fkey;
 
 -- do the transcoding
-UPDATE interface_settin
-   SET interface_setting_type_id = 
-      (select new_index from mgn_setting_renumber where old_index=interface_setting_type_id);
+UPDATE interface_ta
+   SET interface_tag_type_id = 
+      (select new_index from mgn_setting_renumber where old_index=interface_tag_type_id);
 
--- alter column nam to reflect change
-ALTER TABLE interface_setting RENAME interface_setting_type_id TO tag_type_id;
+-- alter column name to reflect change
+ALTER TABLE interface_tag RENAME interface_tag_type_id TO tag_type_id;
 
 -- add contraint again
-ALTER TABLE interface_setting ADD CONSTRAINT interface_setting_tag_type_id_fkey 
+ALTER TABLE interface_tag ADD CONSTRAINT interface_tag_tag_type_id_fkey 
     FOREIGN KEY (tag_type_id) references tag_types(tag_type_id) ;
 
--- drop former interface_setting_types altogether
+-- drop former interface_tag_types altogether
 drop view mgn_setting_renumber;
-drop table interface_setting_types;
+drop table interface_tag_types;
 
--------------------- NEW STUFF
+---------- node tags
 
+CREATE TABLE node_tag (
+    node_tag_id serial PRIMARY KEY,                    -- ID
+    node_id integer REFERENCES nodes NOT NULL,         -- node id
+    tag_type_id integer REFERENCES tag_types,          -- tag type id
+    tagvalue text                                      -- value attached
+) WITH OIDS;
+
+
+----------------------------------------
+-- ilinks
+----------------------------------------
 CREATE TABLE ilink (
        ilink_id serial PRIMARY KEY,                            -- id
        tag_type_id integer REFERENCES tag_types,               -- id of the tag type
@@ -146,14 +170,6 @@ CREATE TABLE ilink (
        value text                                              -- optional value on the link
 ) WITH OIDS;
 
-
-CREATE TABLE node_tag (
-    node_tag_id serial PRIMARY KEY,                    -- ID
-    node_id integer REFERENCES nodes NOT NULL,         -- node id
-    tag_type_id integer REFERENCES tag_types,          -- tag type id
-    tagvalue text                                      -- value attached
-) WITH OIDS;
-
 ----------------------------------------
 -- nodegroups
 ----------------------------------------
@@ -175,7 +191,8 @@ INSERT INTO tag_types (tagname)
    SELECT DISTINCT tagname FROM mgn_site_nodegroup 
       WHERE tagname NOT IN (SELECT tagname from tag_types);
 
--- xxx drop description in former nodegroups for now, could be attached to newly created tag types..
+-- xxx drop description in former nodegroups for now, 
+-- but could have been attached to newly created tag types first
 ALTER TABLE nodegroups DROP COLUMN description;
 
 ---------- set the right tags so as to recover former nodegroups
@@ -200,15 +217,6 @@ UPDATE nodegroups SET tagvalue = (SELECT tagvalue FROM mgn_nodegroups WHERE node
 -- install corresponding constraints
 ALTER TABLE nodegroups ADD CONSTRAINT nodegroups_tag_type_id_fkey
    FOREIGN KEY (tag_type_id) REFERENCES tag_types (tag_type_id);  
--------------
--- display constraints
-
-CREATE OR REPLACE VIEW mgn_all_constraints AS
-    SELECT * FROM pg_catalog.pg_constraint c
-       LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.connamespace
-       LEFT JOIN pg_catalog.pg_class t ON t.oid = c.conrelid
-          WHERE c.contype IN ('c','f','p','u') AND n.nspname in ('public')
-            AND pg_catalog.pg_table_is_visible(c.oid);
 
 --- change default now that the column is filled
 ALTER TABLE tag_types ALTER COLUMN category SET DEFAULT 'general';
@@ -218,9 +226,56 @@ drop view mgn_nodegroups;
 drop table mgn_site_nodegroup;
 drop table nodegroup_node;
 
--- cleanup migration utilities
-drop view mgn_all_views;
-drop view mgn_all_constraints;
-drop function mgn_drop_all_views ();
+----------------------------------------
+-- boot states
+----------------------------------------
+INSERT INTO boot_states (boot_state) VALUES ('safeboot');
+INSERT INTO boot_states (boot_state) VALUES ('failboot');
+INSERT INTO boot_states (boot_state) VALUES ('disabled');
+INSERT INTO boot_states (boot_state) VALUES ('install');
+INSERT INTO boot_states (boot_state) VALUES ('reinstall');
+
+-- xxx need checking 
+--
+-- boot          boot
+-- dbg           failboot
+-- diag          safeboot 
+-- disable       disabled
+-- inst          install
+-- rins          reinstall
+-- new           reinstall
+-- rcnf                 failboot
+
+
+UPDATE nodes SET boot_state='failboot' WHERE boot_state='dbg';
+UPDATE nodes SET boot_state='safeboot' WHERE boot_state='diag';
+UPDATE nodes SET boot_state='disabled' WHERE boot_state='disable';
+UPDATE nodes SET boot_state='install' WHERE boot_state='inst';
+UPDATE nodes SET boot_state='reinstall' WHERE boot_state='rins';
+UPDATE nodes SET boot_state='reinstall' WHERE boot_state='new';
+UPDATE nodes SET boot_state='failboot' WHERE boot_state='rcnf';
+
+-- one-by-one is safer
+DELETE FROM boot_states WHERE boot_state='dbg';
+DELETE FROM boot_states WHERE boot_state='diag';
+DELETE FROM boot_states WHERE boot_state='disable';
+DELETE FROM boot_states WHERE boot_state='inst';
+DELETE FROM boot_states WHERE boot_state='rins';
+DELETE FROM boot_states WHERE boot_state='new';
+DELETE FROM boot_states WHERE boot_state='rcnf';
+
+-- ----------------------------------------
+-- -- debug/information : display current constraints
+-- ----------------------------------------
+-- CREATE OR REPLACE VIEW mgn_all_constraints AS
+--     SELECT * FROM pg_catalog.pg_constraint c
+--        LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.connamespace
+--        LEFT JOIN pg_catalog.pg_class t ON t.oid = c.conrelid
+--           WHERE c.contype IN ('c','f','p','u') AND n.nspname in ('public')
+--          AND pg_catalog.pg_table_is_visible(c.oid);
+-- 
+-- select * from mgn_all_constraints;
+--
+-- drop view mgn_all_constraints;
 
 --- versioning (plc_db_version): ignore for now, so we keep both entries (v4 and v5)